This commit is contained in:
yiyan 2019-08-31 10:34:14 +08:00
parent dc365b683d
commit 63e7402ed9
34 changed files with 1041 additions and 85 deletions

View File

@ -19,8 +19,8 @@
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
@ -46,7 +46,6 @@
<orderEntry type="module" module-name="excel" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi:4.0.0" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:3.0.1" level="project" />
@ -77,7 +76,6 @@
<orderEntry type="library" name="Maven: org.unbescape:unbescape:1.1.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.thymeleaf.extras:thymeleaf-extras-java8time:3.0.4.RELEASE" level="project" />
<orderEntry type="module" module-name="fileUpload" />
<orderEntry type="library" name="Maven: com.cwhelp.modules:bss:2.0.1" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.1.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.1.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.1.4.RELEASE" level="project" />
@ -160,5 +158,9 @@
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
<orderEntry type="library" name="Maven: org.jsoup:jsoup:1.11.3" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.56" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.11" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.8" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
</component>
</module>

View File

@ -51,16 +51,6 @@
<artifactId>fileUpload</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.cwhelp.modules</groupId>
<artifactId>bss</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.cwhelp.modules</groupId>
<artifactId>bss</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>

View File

@ -0,0 +1,146 @@
package com.cwhelp.admin.business.controller;
import com.alibaba.fastjson.JSONObject;
import com.cwhelp.admin.business.validator.BssVatInvoiceCheckValid;
import com.cwhelp.admin.business.validator.BssVatInvoiceValid;
import com.cwhelp.common.enums.StatusEnum;
import com.cwhelp.common.utils.EntityBeanUtil;
import com.cwhelp.common.utils.HttpYoushangFapiaoUtil;
import com.cwhelp.common.utils.ResultVoUtil;
import com.cwhelp.common.utils.StatusUtil;
import com.cwhelp.common.vo.ResultVo;
import com.cwhelp.modules.business.domain.BssVatInvoice;
import com.cwhelp.modules.business.service.BssVatInvoiceService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.ExampleMatcher;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @author yan.y
* @date 2019/08/26
*/
@Controller
@RequestMapping("/bss/vatInvoice")
public class BssVatInvoiceController {
@Autowired
private BssVatInvoiceService bssVatInvoiceService;
/**
* 列表页面
*/
@GetMapping("/index")
@RequiresPermissions("bss:vatInvoice:index")
public String index(Model model, BssVatInvoice bssVatInvoice) {
// 创建匹配器进行动态查询匹配
ExampleMatcher matcher = ExampleMatcher.matching();
// 获取数据列表
Example<BssVatInvoice> example = Example.of(bssVatInvoice, matcher);
Page<BssVatInvoice> list = bssVatInvoiceService.getPageList(example);
// 封装数据
model.addAttribute("list", list.getContent());
model.addAttribute("page", list);
return "/business/vatInvoice/index";
}
/**
* 跳转到添加页面
*/
@GetMapping("/add")
@RequiresPermissions("bss:vatInvoice:add")
public String toAdd() {
return "/business/vatInvoice/add";
}
/**
* 跳转到编辑页面
*/
@GetMapping("/edit/{id}")
@RequiresPermissions("bss:vatInvoice:edit")
public String toEdit(@PathVariable("id") BssVatInvoice bssVatInvoice, Model model) {
model.addAttribute("bssVatInvoice", bssVatInvoice);
return "/business/vatInvoice/add";
}
/**
* 查验录入
* @return
*/
@PostMapping("/check")
@RequiresPermissions("bss:vatInvoice:add")
public String check(@Validated BssVatInvoiceCheckValid checkValid, BssVatInvoice bssVatInvoice){
JSONObject params = new JSONObject();
//发票代码
params.put("fpdm", bssVatInvoice.getInvoiceCode());
//发票号码
params.put("fphm", bssVatInvoice.getInvoiceNo());
//开票日期
params.put("kprq", bssVatInvoice.getInvoiceDate());
//开具金额(不含税)
params.put("kjje", bssVatInvoice.getInvoiceMoney());
//校验码
params.put("jym", bssVatInvoice.getCheckCode());
JSONObject vatInfoiceInfo = HttpYoushangFapiaoUtil.getVatInfoiceInfo(params);
return null;
}
/**
* 保存添加/修改的数据
* @param valid 验证对象
*/
@PostMapping({"/add","/edit"})
@RequiresPermissions({"bss:vatInvoice:add","bss:vatInvoice:edit"})
@ResponseBody
public ResultVo save(@Validated BssVatInvoiceValid valid, BssVatInvoice bssVatInvoice) {
// 复制保留无需修改的数据
if (bssVatInvoice.getId() != null) {
BssVatInvoice beBssVatInvoice = bssVatInvoiceService.getById(bssVatInvoice.getId());
EntityBeanUtil.copyProperties(beBssVatInvoice, bssVatInvoice);
}
// 保存数据
bssVatInvoiceService.save(bssVatInvoice);
return ResultVoUtil.SAVE_SUCCESS;
}
/**
* 跳转到详细页面
*/
@GetMapping("/detail/{id}")
@RequiresPermissions("bss:vatInvoice:detail")
public String toDetail(@PathVariable("id") BssVatInvoice bssVatInvoice, Model model) {
model.addAttribute("bssVatInvoice",bssVatInvoice);
return "/business/vatInvoice/detail";
}
/**
* 设置一条或者多条数据的状态
*/
@RequestMapping("/status/{param}")
@RequiresPermissions("bss:vatInvoice:status")
@ResponseBody
public ResultVo status(
@PathVariable("param") String param,
@RequestParam(value = "ids", required = false) List<Long> ids) {
// 更新状态
StatusEnum statusEnum = StatusUtil.getStatusEnum(param);
if (bssVatInvoiceService.updateStatus(statusEnum, ids)) {
return ResultVoUtil.success(statusEnum.getMessage() + "成功");
} else {
return ResultVoUtil.error(statusEnum.getMessage() + "失败,请重新操作");
}
}
}

View File

@ -13,10 +13,6 @@ import javax.validation.constraints.NotEmpty;
public class BssTaxinfoValid implements Serializable {
@NotEmpty(message = "纳税人识别号不能为空")
private String taxNo;
@NotEmpty(message = "开户行及账号不能为空")
private String account;
@NotEmpty(message = "地址、电话不能为空")
private String addressPhone;
@NotEmpty(message = "名称不能为空")
private String name;
}

View File

@ -0,0 +1,24 @@
package com.cwhelp.admin.business.validator;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
/**
* @author yan.y
* @date 2019/08/26
*/
@Data
public class BssVatInvoiceCheckValid implements Serializable {
@NotEmpty(message = "发票代码不能为空")
private String invoiceCode;
@NotEmpty(message = "发票号码不能为空")
private String invoiceNo;
@NotEmpty(message = "发票日期不能为空")
@Pattern(regexp = "[0-9]{4}-[0-9]{2}-[0-9]{2}", message = "日期格式不正确")
private String invoiceDate;
@NotEmpty(message = "校验码不能为空")
private String checkCode;
}

View File

@ -0,0 +1,34 @@
package com.cwhelp.admin.business.validator;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
/**
* @author yan.y
* @date 2019/08/26
*/
@Data
public class BssVatInvoiceValid implements Serializable {
@NotEmpty(message = "发票代码不能为空")
private String invoiceCode;
@NotEmpty(message = "发票类型不能为空")
private String invoiceType;
@NotEmpty(message = "发票号码不能为空")
private String invoiceNo;
@NotEmpty(message = "发票日期不能为空")
@Pattern(regexp = "[0-9]{4}-[0-9]{2}-[0-9]{2}", message = "日期格式不正确")
private String invoiceDate;
@NotEmpty(message = "校验码不能为空")
private String checkCode;
@NotEmpty(message = "发票金额不能为空")
private String invoiceMoney;
@NotEmpty(message = "税额不能为空")
private String taxAmount;
@NotEmpty(message = "总金额不能为空")
private String totalAmount;
@NotEmpty(message = "总金额(大写)不能为空")
private String totalAmountCn;
}

View File

@ -36,11 +36,12 @@ spring:
thymeleaf:
prefix: classpath:/templates
suffix: .html
mode: HTML
mode: LEGACYHTML5
encoding: utf-8
servlet.content-type: text/html
cache: false
## 文件上传配置
servlet:
multipart:

View File

@ -0,0 +1,213 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})">
<link rel="stylesheet" th:href="@{/css/generate.code.css}">
</head>
<body>
<div class="layui-form timo-compile" style="padding-top: 0px;">
<div class="layui-tab layui-tab-card">
<ul class="layui-tab-title">
<li class="layui-this">手工录入</li>
<li>查验录入</li>
</ul>
<div class="layui-tab-content" style="height: 100%;">
<div class="layui-tab-item layui-show">
<!-- <form th:action="@{/bss/vatInvoice/add}">-->
<fieldset id="basic" class="layui-elem-field layui-form">
<legend class="code-legend">基本信息</legend>
<div class="layui-field-box">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">项目路径</label>
<div class="layui-input-inline">
<input type="text" name="projectPath" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">项目包名</label>
<div class="layui-input-inline">
<input type="text" name="packagePath" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">作者名称</label>
<div class="layui-input-inline">
<input type="text" name="author" autocomplete="off" class="layui-input">
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">父级菜单</label>
<div class="layui-input-inline">
<input class="layui-input select-tree" type="text" name="genPMenu" value="顶级菜单" data-value="0" placeholder="请选择父级菜单">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">模块名称</label>
<div class="layui-input-inline">
<input type="text" name="genModule" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">业务名称</label>
<div class="layui-input-inline">
<input type="text" name="genTitle" autocomplete="off" class="layui-input">
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">表前缀</label>
<div class="layui-input-inline">
<input type="text" name="tablePrefix" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">表名称</label>
<div class="layui-input-inline">
<input type="text" name="tableName" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">实体类</label>
<div class="layui-input-inline">
<input type="text" name="tableEntity" autocomplete="off" class="layui-input tableEntity">
</div>
</div>
</div>
<div class="layui-inline">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">访问地址</label>
<div class="layui-input-inline">
<input type="text" name="requestMapping" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">模块结构</label>
<div class="layui-input-inline">
<input type="radio" name="moduleType" value="1" title="独立模块" checked="">
<input type="radio" name="moduleType" value="2" title="后台模块">
</div>
</div>
</div>
</div>
</div>
</fieldset>
<div class="panel">
<div class="panel-header">
<div class="title">实体类</div>
<div class="control">
<button class="field-add layui-btn layui-btn-primary layui-btn-xs">
<i class="fa fa-plus-circle"></i>添加
</button>
<button class="field-del layui-btn layui-btn-primary layui-btn-xs">
<i class="fa fa-minus-circle"></i>删除
</button>
</div>
<div class="entity"><span class="bindTableEntity"></span>(<span class="bindTablePrefix"></span><span class="bindTableName"></span>)</div>
</div>
<div class="panel-body panel-body-entity">
<table class="layui-table">
<thead>
<tr>
<th width="20">#</th>
<th width="100">字段名称</th>
<th width="100">字段标题</th>
<th width="100">数据类型</th>
<th width="100">查询(可选)</th>
<th width="100">列表显示</th>
<th>字段验证(可选)</th>
</tr>
</thead>
<tbody id="entity">
<tr>
<td class="entity-number" th:text="1"></td>
<td class="entity-name"><input type="text" name="name"/></td>
<td class="entity-title"><input type="text" name="title"/></td>
<td class="layui-form entity-type">
<input type="text" name="title"/>
</td>
<td class="layui-form entity-query">
<input type="text" name="title"/>
</td>
<td class="layui-form entity-show">
<input type="text" name="title"/>
</td>
<td class="entity-verify">
<input type="text" name="title"/>
</td>
</tr>
</tbody>
</table>
</div>
<div class="layui-form-item timo-finally">
<button class="layui-btn ajax-submit"><i class="fa fa-check-circle"></i> 保存</button>
<button class="layui-btn btn-secondary close-popup"><i class="fa fa-times-circle"></i> 关闭</button>
</div>
</div>
</form>
</div>
<div class="layui-tab-item">
<form th:action="@{/bss/vatInvoice/check}">
<div class="layui-form-item">
<label class="layui-form-label required">发票代码</label>
<div class="layui-input-inline">
<input class="layui-input" type="text" name="invoiceCode" placeholder="请输入发票代码" />
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label required">发票号码</label>
<div class="layui-input-inline">
<input class="layui-input" type="text" name="invoiceNo" placeholder="请输入发票号码" />
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label required">开票时间</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="invoiceDate" placeholder="yyyy-MM-dd">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">开具金额(不含税)</label>
<div class="layui-input-inline">
<input class="layui-input" type="text" name="invoiceMoney" placeholder="请输入开具金额(不含税)" />
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label required">校验码</label>
<div class="layui-input-inline">
<input class="layui-input" type="text" name="checkCode" placeholder="请输入校验码" />
</div>
</div>
<div class="layui-form-item timo-finally">
<button class="layui-btn ajax-submit"><i class="fa fa-check-circle"></i> 保存</button>
<button class="layui-btn btn-secondary close-popup"><i class="fa fa-times-circle"></i> 关闭</button>
</div>
</form>
</div>
</div>
</div>
</div>
<script th:replace="/common/template :: script"></script>
<script type="text/javascript" th:src="@{/js/plugins/jquery-3.3.1.min.js}"></script>
<script type="text/javascript" th:src="@{/lib/zTree_v3/js/jquery.ztree.core.min.js}"></script>
<script type="text/javascript" th:src="@{/js/timoTree.js}"></script>
<script type="text/javascript">
// 树形菜单
$.fn.selectTree({
rootTree: '顶级菜单'
});
// 验证下拉选择器
layui.config({
base: '[[@{/lib/formSelects-v4/}]]'
}).extend({
formSelects: 'formSelects-v4.min'
});
</script>
<script type="text/javascript" th:src="@{/js/generate.code.js}"></script>
</body>
</html>

View File

@ -0,0 +1,65 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})">
</head>
<body>
<div class="timo-detail-page">
<div class="timo-detail-title">基本信息</div>
<table class="layui-table timo-detail-table">
<colgroup>
<col width="100px"><col>
<col width="100px"><col>
</colgroup>
<tbody>
<tr>
<th>主键ID</th>
<td th:text="${bssVatInvoice.id}"></td>
<th>发票代码</th>
<td th:text="${bssVatInvoice.invoiceCode}"></td>
</tr>
<tr>
<th>发票号码</th>
<td th:text="${bssVatInvoice.invoiceNo}"></td>
<th>发票日期</th>
<td th:text="${bssVatInvoice.invoiceDate}"></td>
</tr>
<tr>
<th>校验码</th>
<td th:text="${bssVatInvoice.checkCode}"></td>
<th>机器编码</th>
<td th:text="${bssVatInvoice.machineNo}"></td>
</tr>
<tr>
<th>发票金额</th>
<td th:text="${bssVatInvoice.invoiceMoney}"></td>
<th>税额</th>
<td th:text="${bssVatInvoice.taxAmount}"></td>
</tr>
<tr>
<th>总金额</th>
<td th:text="${bssVatInvoice.totalAmount}"></td>
<th>总金额(大写)</th>
<td th:text="${bssVatInvoice.totalAmountCn}"></td>
</tr>
<tr>
<th>购买方纳税人信息</th>
<td th:text="${bssVatInvoice?.buyTaxInfo?.name}"></td>
<th>销售方纳税人信息</th>
<td th:text="${bssVatInvoice?.salerTaxInfo?.name}"></td>
</tr>
<tr>
<th>创建时间</th>
<td th:text="${bssVatInvoice.createDate}"></td>
<th>更新时间</th>
<td th:text="${bssVatInvoice.updateDate}"></td>
</tr>
<tr>
<th>备注</th>
<td th:text="${bssVatInvoice.remark}" colspan="3"></td>
</tr>
</tbody>
</table>
</div>
<script th:replace="/common/template :: script"></script>
</body>
</html>

View File

@ -0,0 +1,89 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})">
</head>
<body>
<div class="layui-form timo-compile">
<form th:action="@{/bss/vatInvoice/add}">
<input type="hidden" name="id" th:if="${bssVatInvoice}" th:value="${bssVatInvoice.id}">
<div class="layui-form-item">
<label class="layui-form-label">发票代码</label>
<div class="layui-input-inline">
<input class="layui-input" type="text" name="invoiceCode" placeholder="请输入发票代码" th:value="${bssVatInvoice?.invoiceCode}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">发票号码</label>
<div class="layui-input-inline">
<input class="layui-input" type="text" name="invoiceNo" placeholder="请输入发票号码" th:value="${bssVatInvoice?.invoiceNo}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">发票日期</label>
<div class="layui-input-inline">
<input class="layui-input" type="text" name="invoiceDate" placeholder="请输入发票日期" th:value="${bssVatInvoice?.invoiceDate}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">校验码</label>
<div class="layui-input-inline">
<input class="layui-input" type="text" name="checkCode" placeholder="请输入校验码" th:value="${bssVatInvoice?.checkCode}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">机器编码</label>
<div class="layui-input-inline">
<input class="layui-input" type="text" name="machineNo" placeholder="请输入机器编码" th:value="${bssVatInvoice?.machineNo}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">发票金额</label>
<div class="layui-input-inline">
<input class="layui-input" type="text" name="invoiceMoney" placeholder="请输入发票金额" th:value="${bssVatInvoice?.invoiceMoney}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">税额</label>
<div class="layui-input-inline">
<input class="layui-input" type="text" name="taxAmount" placeholder="请输入税额" th:value="${bssVatInvoice?.taxAmount}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">总金额</label>
<div class="layui-input-inline">
<input class="layui-input" type="text" name="totalAmount" placeholder="请输入总金额" th:value="${bssVatInvoice?.totalAmount}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">总金额(大写)</label>
<div class="layui-input-inline">
<input class="layui-input" type="text" name="totalAmountCn" placeholder="请输入总金额(大写)" th:value="${bssVatInvoice?.totalAmountCn}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">购买方纳税人信息</label>
<div class="layui-input-inline">
<input class="layui-input" type="text" name="buyTaxInfo" placeholder="请输入购买方纳税人信息" th:value="${bssVatInvoice?.buyTaxInfo?.name}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">销售方纳税人信息</label>
<div class="layui-input-inline">
<input class="layui-input" type="text" name="salerTaxInfo" placeholder="请输入销售方纳税人信息" th:value="${bssVatInvoice?.salerTaxInfo?.name}">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">备注</label>
<div class="layui-input-block">
<textarea placeholder="请输入内容" class="layui-textarea" name="remark">[[${bssVatInvoice?.remark}]]</textarea>
</div>
</div>
<div class="layui-form-item timo-finally">
<button class="layui-btn ajax-submit"><i class="fa fa-check-circle"></i> 保存</button>
<button class="layui-btn btn-secondary close-popup"><i class="fa fa-times-circle"></i> 关闭</button>
</div>
</form>
</div>
<script th:replace="/common/template :: script"></script>
</body>
</html>

View File

@ -0,0 +1,88 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})">
</head>
<body class="timo-layout-page">
<div class="layui-card">
<div class="layui-card-header timo-card-header">
<span><i class="fa fa-bars"></i> 增值税发票信息管理</span>
<i class="layui-icon layui-icon-refresh refresh-btn"></i>
</div>
<div class="layui-card-body">
<div class="layui-row timo-card-screen">
<div class="pull-left layui-form-pane timo-search-box">
<div class="layui-inline">
<label class="layui-form-label">状态</label>
<div class="layui-input-block timo-search-status">
<select class="timo-search-select" name="status" mo:dict="SEARCH_STATUS" mo-selected="${param.status}"></select>
</div>
</div>
<div class="layui-inline">
<button class="layui-btn timo-search-btn">
<i class="fa fa-search"></i>
</button>
</div>
</div>
<div class="pull-right screen-btn-group">
<button class="layui-btn open-popup" data-title="添加增值税发票信息" th:attr="data-url=@{/bss/vatInvoice/add}" data-size="max">
<i class="fa fa-plus"></i> 添加</button>
<div class="btn-group">
<button class="layui-btn">操作<span class="caret"></span></button>
<dl class="layui-nav-child layui-anim layui-anim-upbit">
<dd><a class="ajax-status" th:href="@{/bss/vatInvoice/status/ok}">启用</a></dd>
<dd><a class="ajax-status" th:href="@{/bss/vatInvoice/status/freezed}">冻结</a></dd>
<dd><a class="ajax-status" th:href="@{/bss/vatInvoice/status/delete}">删除</a></dd>
</dl>
</div>
</div>
</div>
<div class="timo-table-wrap">
<table class="layui-table timo-table">
<thead>
<tr>
<th class="timo-table-checkbox">
<label class="timo-checkbox"><input type="checkbox">
<i class="layui-icon layui-icon-ok"></i></label>
</th>
<th>发票类型</th>
<th>发票代码</th>
<th>发票号码</th>
<th>发票日期</th>
<th>发票金额</th>
<th>税额</th>
<th>总金额</th>
<th>总金额(大写)</th>
<th>购买方纳税人信息</th>
<th>销售方纳税人信息</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr th:each="item:${list}">
<td><label class="timo-checkbox"><input type="checkbox" th:value="${item.id}">
<i class="layui-icon layui-icon-ok"></i></label></td>
<td th:text="${item.invoiceType}">发票类型</td>
<td th:text="${item.invoiceCode}">发票代码</td>
<td th:text="${item.invoiceNo}">发票号码</td>
<td th:text="${item.invoiceDate}">发票日期</td>
<td th:text="${item.invoiceMoney}">发票金额</td>
<td th:text="${item.taxAmount}">税额</td>
<td th:text="${item.totalAmount}">总金额</td>
<td th:text="${item.totalAmountCn}">总金额(大写)</td>
<td th:text="${item?.buyTaxInfo?.name}">购买方纳税人信息</td>
<td th:text="${item?.salerTaxInfo?.name}">销售方纳税人信息</td>
<td>
<a class="open-popup" data-title="编辑增值税发票信息" th:attr="data-url=@{'/bss/vatInvoice/edit/'+${item.id}}" data-size="auto" href="#">编辑</a>
<a class="open-popup" data-title="详细信息" th:attr="data-url=@{'/bss/vatInvoice/detail/'+${item.id}}" data-size="800,600" href="#">详细</a>
<a class="ajax-get" data-msg="您是否确认删除" th:href="@{/bss/vatInvoice/status/delete(ids=${item.id})}">删除</a>
</td>
</tr>
</tbody>
</table>
</div>
<div th:replace="/common/fragment :: page"></div>
</div>
</div>
<script th:replace="/common/template :: script"></script>
</body>
</html>

View File

@ -31,7 +31,7 @@
</a>
</li>
<li class="layui-nav-item timo-nav-user">
<a class="timo-header-nickname" th:text="${user.nickname}">TIMO</a>
<a class="timo-header-nickname" th:text="${user.nickname}">财务帮</a>
<div class="layui-nav-child">
<div class="timo-nav-child-box">
<div><a class="open-popup" data-title="个人信息" th:attr="data-url=@{/userInfo}"

View File

@ -100,58 +100,12 @@
<div class="layui-row layui-col-space15">
<div class="layui-col-md8">
<div class="layui-card">
<div class="layui-card-header">项目介绍</div>
<div class="layui-card-body project-introduce">
<blockquote class="layui-elem-quote layui-quote-nm">
Cwhelp后台管理系统基于SpringBoot2.0 + Spring Data Jpa + Thymeleaf + Shiro 开发的后台管理系统,采用分模块的方式便于开发和维护,目前支持的功能有:权限管理、部门管理、字典管理、日志记录、文件上传、代码生成等!
</blockquote>
<div>
<h4>技术选型</h4>
<ol>
<li>后端技术SpringBoot + Spring Data Jpa + Thymeleaf + Shiro + EhCache</li>
<li>前端技术Layui + Jquery + zTree + Font-awesome</li>
</ol>
</div>
<div>
<h4>功能列表</h4>
<ol>
<li>用户管理:用于管理后台系统的用户,可进行增删改查等操作。</li>
<li>角色管理:分配权限的最小单元,通过角色给用户分配权限。</li>
<li>菜单管理:用于配置系统菜单,同时也作为权限资源。</li>
<li>部门管理:通过不同的部门来管理和区分用户。</li>
<li>字典管理:对一些需要转换的数据进行统一管理,如:男、女等。</li>
<li>行为日志:用于记录用户对系统的操作,同时监视系统运行时发生的错误。</li>
<li>文件上传:内置了文件上传接口,方便开发者使用文件上传功能。</li>
<li>代码生成:可以帮助开发者快速开发项目,减少不必要的重复操作,花更多精力注重业务实现。</li>
<li>表单构建:通过拖拽的方式快速构建一个表单模块。</li>
<li>数据接口根据业务代码自动生成相关的api接口文档</li>
</ol>
</div>
</div>
</div>
</div>
<div class="layui-col-md4">
<div class="layui-card">
<div class="layui-card-header">更新日志</div>
<div class="layui-card-body">
<ul class="layui-timeline">
<li class="layui-timeline-item">
<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
<div class="layui-timeline-content layui-text">
<h3 class="layui-timeline-title">v2.0.1</h3>
<p>
1.项目初始化<br>
</p>
</div>
</li>
<li class="layui-timeline-item">
<i class="layui-icon layui-timeline-axis">&#xe63f;</i>
<div class="layui-timeline-content layui-text">
<div class="layui-timeline-title">yan.y</div>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,29 @@
package com.cwhelp.common.utils;
import com.alibaba.fastjson.JSONObject;
import org.junit.Assert;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* @author: yan.y
* @Description:
* @Date: Created in 01:00 2019-08-27
* @Modified by:
*/
public class HttpYoushangFapiaoUtilTest {
@Test
public void getVatInfoiceInfo() {
JSONObject params = new JSONObject();
params.put("fpdm","031001800304");
params.put("fphm","00073818");
params.put("kprq","2019-06-26");
params.put("kjje","");
params.put("jym","554287");
JSONObject fapiaoInfo = HttpYoushangFapiaoUtil.getVatInfoiceInfo(params);
String code = fapiaoInfo.getString("code");
Assert.assertEquals("200",code);
}
}

View File

@ -15,6 +15,8 @@
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/${project.build.directory}/classes" />
<excludeFolder url="file://$MODULE_DIR$/${project.build.directory}/test-classes" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
@ -103,5 +105,9 @@
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
<orderEntry type="library" name="Maven: org.jsoup:jsoup:1.11.3" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.56" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.11" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.8" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
</component>
</module>

View File

@ -13,4 +13,5 @@
<artifactId>cwhelp</artifactId>
<version>2.0.1</version>
</parent>
</project>

View File

@ -0,0 +1,50 @@
package com.cwhelp.common.utils;
import com.alibaba.fastjson.JSONObject;
import com.cwhelp.common.enums.ResultEnum;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.net.URI;
/**
* @author: yan.y
* @Description:
* @Date: Created in 23:59 2019-08-26
* @Modified by:
*/
public class HttpYoushangFapiaoUtil {
private static final String url = "https://fapiao.youshang.com/GuoShuiAction.do";
public static final JSONObject getVatInfoiceInfo(JSONObject params){
final String action = "findInvoiceResult";
JSONObject result = new JSONObject();
try {
HttpClient httpClient = HttpClients.createDefault();
URIBuilder uriBuilder = new URIBuilder(url);
URI uri = uriBuilder.addParameter("action", action)
.addParameter("fpdm", params.getString("fpdm"))
.addParameter("fphm", params.getString("fphm"))
.addParameter("kprq", params.getString("kprq"))
.addParameter("kjje", params.getString("kjje"))
.addParameter("jym", params.getString("jym")).build();
HttpGet httpGet = new HttpGet(uri);
HttpResponse response = httpClient.execute(httpGet);
if (response.getStatusLine().getStatusCode() == 200) {
String content = EntityUtils.toString(response.getEntity(), "UTF-8");
result.put("code", ResultEnum.SUCCESS.getCode());
result.put("meg", ResultEnum.SUCCESS.getMessage());
result.put("data", content);
}
} catch (Exception e) {
result.put("code", ResultEnum.ERROR.getCode());
result.put("msg", ResultEnum.ERROR.getMessage() + "-" + e.getMessage());
}
return result;
}
}

View File

@ -24,7 +24,6 @@
<orderEntry type="module" module-name="excel" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi:4.0.0" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:3.0.1" level="project" />
@ -130,5 +129,9 @@
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
<orderEntry type="library" name="Maven: org.jsoup:jsoup:1.11.3" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.56" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.11" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.8" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
</component>
</module>

View File

@ -92,5 +92,9 @@
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
<orderEntry type="library" name="Maven: org.jsoup:jsoup:1.11.3" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.56" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.11" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.8" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
</component>
</module>

View File

@ -22,7 +22,6 @@
<orderEntry type="module" module-name="common" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi:4.0.0" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:3.0.1" level="project" />
@ -112,5 +111,9 @@
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
<orderEntry type="library" name="Maven: org.jsoup:jsoup:1.11.3" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.56" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.11" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.8" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
</component>
</module>

View File

@ -24,7 +24,6 @@
<orderEntry type="module" module-name="excel" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi:4.0.0" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:3.0.1" level="project" />
@ -114,5 +113,9 @@
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
<orderEntry type="library" name="Maven: org.jsoup:jsoup:1.11.3" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.56" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.11" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.8" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
</component>
</module>

View File

@ -115,5 +115,8 @@
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
<orderEntry type="library" name="Maven: org.jsoup:jsoup:1.11.3" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.56" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.11" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.8" level="project" />
</component>
</module>

View File

@ -24,7 +24,6 @@
<orderEntry type="module" module-name="excel" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi:4.0.0" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:3.0.1" level="project" />
@ -129,5 +128,9 @@
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
<orderEntry type="library" name="Maven: org.jsoup:jsoup:1.11.3" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.56" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.11" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.8" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
</component>
</module>

View File

@ -24,7 +24,6 @@
<orderEntry type="module" module-name="excel" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi:4.0.0" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:3.0.1" level="project" />
@ -120,5 +119,9 @@
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
<orderEntry type="library" name="Maven: org.jsoup:jsoup:1.11.3" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.56" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.11" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.8" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
</component>
</module>

View File

@ -92,5 +92,9 @@
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
<orderEntry type="library" name="Maven: org.jsoup:jsoup:1.11.3" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.56" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.11" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.8" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
</component>
</module>

View File

@ -25,7 +25,6 @@
<orderEntry type="module" module-name="excel" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi:4.0.0" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:3.0.1" level="project" />
@ -144,5 +143,9 @@
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.2" level="project" />
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.jsoup:jsoup:1.11.3" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.56" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.11" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.8" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
</component>
</module>

View File

@ -92,5 +92,9 @@
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
<orderEntry type="library" name="Maven: org.jsoup:jsoup:1.11.3" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.56" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.11" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.8" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
</component>
</module>

View File

@ -2,21 +2,19 @@ package com.cwhelp.modules.business.domain;
import com.cwhelp.common.enums.StatusEnum;
import com.cwhelp.common.utils.StatusUtil;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import org.hibernate.annotations.NotFound;
import org.hibernate.annotations.NotFoundAction;
import org.hibernate.annotations.Where;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* @author yan.y
@ -38,19 +36,27 @@ public class BssGoods implements Serializable {
// 数量
private Integer num;
// 细节金额
private BigDecimal detail_amount;
@Column(name = "detail_amount")
private BigDecimal detailAmount;
// 税额
private BigDecimal tax_amount;
@Column(name = "tax_amount")
private BigDecimal taxAmount;
// 税率
private String tax_rate;
@Column(name = "tax_rate")
private String taxRate;
// 单位
private String unit;
// 单价
private String unit_price;
@Column(name = "unit_price")
private String unitPrice;
// 规格型号
private String specification;
// 增值税
private Integer vat_invoice_id;
@OneToOne(fetch=FetchType.LAZY)
@NotFound(action= NotFoundAction.IGNORE)
@JoinColumn(name="vat_invoice_id")
@JsonIgnore
private BssVatInvoice vatInvoice;
// 创建时间
@CreatedDate
private Date createDate;

View File

@ -0,0 +1,91 @@
package com.cwhelp.modules.business.domain;
import com.cwhelp.common.enums.StatusEnum;
import com.cwhelp.common.utils.StatusUtil;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import org.hibernate.annotations.NotFound;
import org.hibernate.annotations.NotFoundAction;
import org.hibernate.annotations.Where;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @author yan.y
* @date 2019/08/26
*/
@Data
@Entity
@Table(name="bss_vat_invoice")
@EntityListeners(AuditingEntityListener.class)
@Where(clause = StatusUtil.notDelete)
public class BssVatInvoice implements Serializable {
// 主键ID
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
// 发票代码
@Column(name = "invoice_code")
private String invoiceCode;
// 发票号码
@Column(name = "invoice_no")
private String invoiceNo;
// 发票日期
@Column(name = "invoice_date")
private String invoiceDate;
// 校验码
@Column(name = "check_code")
private String checkCode;
// 机器编码
@Column(name = "machine_no")
private String machineNo;
// 发票金额
@Column(name = "invoice_money")
private BigDecimal invoiceMoney;
// 税额
@Column(name = "tax_amount")
private BigDecimal taxAmount;
// 总金额
@Column(name = "total_amount")
private BigDecimal totalAmount;
// 总金额(大写)
@Column(name = "total_amount_cn")
private String totalAmountCn;
@Column(name = "invoice_type")
private Integer invoiceType;
// 备注
private String remark;
// 购买方纳税人信息
@OneToOne(fetch=FetchType.LAZY)
@NotFound(action= NotFoundAction.IGNORE)
@JoinColumn(name="buy_tax_info_id")
@JsonIgnore
private BssTaxinfo buyTaxInfo;
// 销售方纳税人信息
// 购买方纳税人信息
@OneToOne(fetch=FetchType.LAZY)
@NotFound(action= NotFoundAction.IGNORE)
@JoinColumn(name="saler_tax_info_id")
@JsonIgnore
private BssTaxinfo salerTaxInfo;
@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
@JoinColumn(name="vatInvoice",referencedColumnName = "id")
private List<BssGoods> bssGoods;
// 状态
private Byte status = StatusEnum.OK.getCode();
// 创建时间
@CreatedDate
private Date createDate;
// 更新时间
@LastModifiedDate
private Date updateDate;
}

View File

@ -0,0 +1,11 @@
package com.cwhelp.modules.business.repository;
import com.cwhelp.modules.business.domain.BssVatInvoice;
import com.cwhelp.modules.system.repository.BaseRepository;
/**
* @author yan.y
* @date 2019/08/26
*/
public interface BssVatInvoiceRepository extends BaseRepository<BssVatInvoice, Long> {
}

View File

@ -0,0 +1,41 @@
package com.cwhelp.modules.business.service;
import com.cwhelp.common.enums.StatusEnum;
import com.cwhelp.modules.business.domain.BssVatInvoice;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Page;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @author yan.y
* @date 2019/08/26
*/
public interface BssVatInvoiceService {
/**
* 获取分页列表数据
* @param example 查询实例
* @return 返回分页数据
*/
Page<BssVatInvoice> getPageList(Example<BssVatInvoice> example);
/**
* 根据ID查询数据
* @param id 主键ID
*/
BssVatInvoice getById(Long id);
/**
* 保存数据
* @param bssVatInvoice 实体对象
*/
BssVatInvoice save(BssVatInvoice bssVatInvoice);
/**
* 状态(启用冻结删除)/批量状态处理
*/
@Transactional
Boolean updateStatus(StatusEnum statusEnum, List<Long> idList);
}

View File

@ -0,0 +1,66 @@
package com.cwhelp.modules.business.service.impl;
import com.cwhelp.common.data.PageSort;
import com.cwhelp.common.enums.StatusEnum;
import com.cwhelp.modules.business.domain.BssVatInvoice;
import com.cwhelp.modules.business.repository.BssVatInvoiceRepository;
import com.cwhelp.modules.business.service.BssVatInvoiceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @author yan.y
* @date 2019/08/26
*/
@Service
public class BssVatInvoiceServiceImpl implements BssVatInvoiceService {
@Autowired
private BssVatInvoiceRepository bssVatInvoiceRepository;
/**
* 根据ID查询数据
* @param id 主键ID
*/
@Override
@Transactional
public BssVatInvoice getById(Long id) {
return bssVatInvoiceRepository.findById(id).orElse(null);
}
/**
* 获取分页列表数据
* @param example 查询实例
* @return 返回分页数据
*/
@Override
public Page<BssVatInvoice> getPageList(Example<BssVatInvoice> example) {
// 创建分页对象
PageRequest page = PageSort.pageRequest();
return bssVatInvoiceRepository.findAll(example, page);
}
/**
* 保存数据
* @param bssVatInvoice 实体对象
*/
@Override
public BssVatInvoice save(BssVatInvoice bssVatInvoice) {
return bssVatInvoiceRepository.save(bssVatInvoice);
}
/**
* 状态(启用冻结删除)/批量状态处理
*/
@Override
@Transactional
public Boolean updateStatus(StatusEnum statusEnum, List<Long> idList) {
return bssVatInvoiceRepository.updateStatus(statusEnum.getCode(), idList) > 0;
}
}

View File

@ -23,7 +23,6 @@
<orderEntry type="module" module-name="excel" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi:4.0.0" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:4.0.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:3.0.1" level="project" />
@ -113,5 +112,9 @@
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
<orderEntry type="library" name="Maven: org.jsoup:jsoup:1.11.3" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.56" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.11" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.8" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
</component>
</module>

17
pom.xml
View File

@ -103,5 +103,22 @@
<artifactId>jsoup</artifactId>
<version>${jsoup.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.56</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.11</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.8</version>
</dependency>
</dependencies>
</project>