diff --git a/admin/src/main/java/com/cwhelp/admin/business/controller/BssVatInvoiceController.java b/admin/src/main/java/com/cwhelp/admin/business/controller/BssVatInvoiceController.java index a3899d6..9da8edc 100644 --- a/admin/src/main/java/com/cwhelp/admin/business/controller/BssVatInvoiceController.java +++ b/admin/src/main/java/com/cwhelp/admin/business/controller/BssVatInvoiceController.java @@ -10,10 +10,12 @@ import com.cwhelp.common.enums.StatusEnum; import com.cwhelp.common.utils.*; import com.cwhelp.common.vo.ResultVo; import com.cwhelp.component.fileUpload.FileUpload; +import com.cwhelp.component.shiro.ShiroUtil; import com.cwhelp.devtools.generate.utils.jAngel.utils.StringUtil; import com.cwhelp.modules.business.domain.BssGoods; import com.cwhelp.modules.business.domain.BssTaxinfo; import com.cwhelp.modules.business.domain.BssVatInvoice; +import com.cwhelp.modules.business.service.BssTaxinfoService; import com.cwhelp.modules.business.service.BssVatInvoiceService; import com.cwhelp.modules.system.domain.Upload; import org.apache.shiro.authz.annotation.RequiresPermissions; @@ -28,9 +30,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.File; -import java.io.IOException; import java.math.BigDecimal; -import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.List; @@ -45,6 +45,9 @@ public class BssVatInvoiceController { @Autowired private BssVatInvoiceService bssVatInvoiceService; + @Autowired + private BssTaxinfoService bssTaxinfoService; + /** * 列表页面 */ @@ -110,17 +113,29 @@ public class BssVatInvoiceController { /** * 保存添加/修改的数据 - * @param valid 验证对象 + * @param */ @PostMapping({"/add","/edit"}) @RequiresPermissions({"bss:vatInvoice:add","bss:vatInvoice:edit"}) @ResponseBody - public ResultVo save(@Validated BssVatInvoiceValid valid, BssVatInvoice bssVatInvoice) { +// public ResultVo save(@Validated @RequestBody BssVatInvoiceValid valid, @RequestBody BssVatInvoice bssVatInvoice) { + public ResultVo save(@Validated @RequestBody BssVatInvoice bssVatInvoice) { // 复制保留无需修改的数据 if (bssVatInvoice.getId() != null) { BssVatInvoice beBssVatInvoice = bssVatInvoiceService.getById(bssVatInvoice.getId()); EntityBeanUtil.copyProperties(beBssVatInvoice, bssVatInvoice); } + if(!StringUtil.isBlank(String.valueOf(bssVatInvoice.getSalerTaxInfoId()))){ + bssVatInvoice.setSalerTaxInfo(bssTaxinfoService.getById(bssVatInvoice.getSalerTaxInfoId())); + } + if(!StringUtil.isBlank(String.valueOf(bssVatInvoice.getBuyTaxInfoId()))) { + bssVatInvoice.setBuyTaxInfo(bssTaxinfoService.getById(bssVatInvoice.getBuyTaxInfoId())); + } + + List bssGoods = bssVatInvoice.getBssGoods(); + bssGoods.stream().forEach(good ->{ + good.setVatInvoice(bssVatInvoice); + }); // 保存数据 bssVatInvoiceService.save(bssVatInvoice); @@ -170,18 +185,43 @@ public class BssVatInvoiceController { File destFile = FileUpload.getDestFile(upload); VatInvoiceResult vatInvoiceResult = BaiduAipOCR.queryBaiduVatInvoiceApi(destFile); WordsResult wordsResult = vatInvoiceResult.getWords_result(); - //销售方 - BssTaxinfo sellerTaxInfo = new BssTaxinfo(); - sellerTaxInfo.setName(wordsResult.getSellerName()); - sellerTaxInfo.setTaxNo(wordsResult.getSellerRegisterNum()); - sellerTaxInfo.setAccount(wordsResult.getSellerBank()); - sellerTaxInfo.setAddressPhone(wordsResult.getSellerAddress()); - //购买方 - BssTaxinfo purchaserTaxInfo = new BssTaxinfo(); - purchaserTaxInfo.setName(wordsResult.getPurchaserName()); - purchaserTaxInfo.setTaxNo(wordsResult.getPurchaserRegisterNum()); - purchaserTaxInfo.setAccount(wordsResult.getPurchaserBank()); - purchaserTaxInfo.setAddressPhone(wordsResult.getPurchaserAddress()); + BssVatInvoice vatInvoice = new BssVatInvoice(); + Long bssplatformId = ShiroUtil.getSubject().getBssPlatform().getId(); + //add by hjc 发票上扫到的买卖双方如果不在系统中先入库 + if(!StringUtil.isBlank(wordsResult.getSellerRegisterNum())){ + BssTaxinfo sellerTaxInfo = new BssTaxinfo(); + BssTaxinfo taxNo = bssTaxinfoService.getByTaxNo(wordsResult.getSellerRegisterNum()); + if(taxNo == null){ + //销售方 + sellerTaxInfo.setName(wordsResult.getSellerName()); + sellerTaxInfo.setTaxNo(wordsResult.getSellerRegisterNum()); + sellerTaxInfo.setAccount(wordsResult.getSellerBank()); + sellerTaxInfo.setAddressPhone(wordsResult.getSellerAddress()); + sellerTaxInfo.setPlatformId(bssplatformId); + bssTaxinfoService.save(sellerTaxInfo); + vatInvoice.setSalerTaxInfoId(sellerTaxInfo.getId()); + }else { + vatInvoice.setSalerTaxInfoId(taxNo.getId()); + } + } + + if(!StringUtil.isBlank(wordsResult.getPurchaserRegisterNum())){ + BssTaxinfo purchaserTaxInfo = new BssTaxinfo(); + BssTaxinfo taxNo = bssTaxinfoService.getByTaxNo(wordsResult.getPurchaserRegisterNum()); + if(taxNo == null){ + //购买方 + purchaserTaxInfo.setName(wordsResult.getPurchaserName()); + purchaserTaxInfo.setTaxNo(wordsResult.getPurchaserRegisterNum()); + purchaserTaxInfo.setAccount(wordsResult.getPurchaserBank()); + purchaserTaxInfo.setAddressPhone(wordsResult.getPurchaserAddress()); + purchaserTaxInfo.setPlatformId(bssplatformId); + bssTaxinfoService.save(purchaserTaxInfo); + vatInvoice.setBuyTaxInfoId(purchaserTaxInfo.getId()); + }else{ + vatInvoice.setBuyTaxInfoId(taxNo.getId()); + } + } + //商品 List goods = new ArrayList<>(); List commodityNames = wordsResult.getCommodityName(); @@ -215,12 +255,11 @@ public class BssVatInvoiceController { good.setTaxRate(commodityTaxRates.get(i).getWord()); } if (ToolUtil.checkListSize(commodityTaxs) && !StringUtil.isBlank(commodityTaxs.get(i).getWord())) { - good.setTaxAmount(new BigDecimal(commodityTaxs.get(i).getWord())); + good.setGoodTaxAmount(new BigDecimal(commodityTaxs.get(i).getWord())); } goods.add(good); } - BssVatInvoice vatInvoice = new BssVatInvoice(); vatInvoice.setInvoiceCode(wordsResult.getInvoiceCode()); vatInvoice.setInvoiceNo(wordsResult.getInvoiceNum()); vatInvoice.setInvoiceDate(wordsResult.getInvoiceDate()); @@ -230,8 +269,6 @@ public class BssVatInvoiceController { vatInvoice.setTotalAmount(new BigDecimal(wordsResult.getAmountInFiguers())); vatInvoice.setTotalAmountCn(wordsResult.getAmountInWords()); vatInvoice.setRemark(wordsResult.getRemarks()); - vatInvoice.setBuyTaxInfo(purchaserTaxInfo); - vatInvoice.setSalerTaxInfo(sellerTaxInfo); vatInvoice.setBssGoods(goods); vatInvoice.setInvoiceImg(upload.getPath()); vatInvoice.setInvoiceType(VatInvoiceTypeEnum.getVatInvoiceCode(wordsResult.getInvoiceType())); diff --git a/admin/src/main/resources/static/js/main.js b/admin/src/main/resources/static/js/main.js index 9ac27b2..2b1f636 100644 --- a/admin/src/main/resources/static/js/main.js +++ b/admin/src/main/resources/static/js/main.js @@ -127,18 +127,55 @@ layui.use(['element', 'form', 'layer', 'upload'], function () { } }; - /* 提交表单数据 */ + /* 提交表单数据 */ // update by hjc $(document).on("click", ".ajax-submit", function (e) { e.preventDefault(); var form = $(this).parents("form"); var url = form.attr("action"); var serializeArray = form.serializeArray(); - $.post(url, serializeArray, function (result) { - if (result.data == null) { - result.data = 'submit[refresh]'; + var _newData = null; + var from = false; // from = true 代表增值税页面请求,用设置content-type的请求 + for(var i=0; i + +
@@ -102,10 +104,10 @@
货物信息
- -
@@ -136,13 +138,13 @@ - +
- +
@@ -192,22 +194,73 @@ - - + + - - + + \ No newline at end of file diff --git a/admin/src/main/resources/templates/system/main/userInfo.html b/admin/src/main/resources/templates/system/main/userInfo.html index 569aac2..222d05a 100644 --- a/admin/src/main/resources/templates/system/main/userInfo.html +++ b/admin/src/main/resources/templates/system/main/userInfo.html @@ -20,7 +20,7 @@
- +
diff --git a/modules/system/src/main/java/com/cwhelp/modules/business/domain/BssGoods.java b/modules/system/src/main/java/com/cwhelp/modules/business/domain/BssGoods.java index 8aea6f9..a877889 100644 --- a/modules/system/src/main/java/com/cwhelp/modules/business/domain/BssGoods.java +++ b/modules/system/src/main/java/com/cwhelp/modules/business/domain/BssGoods.java @@ -38,7 +38,7 @@ public class BssGoods implements Serializable { private BigDecimal detailAmount; // 税额 @Column(name = "tax_amount") - private BigDecimal taxAmount; + private BigDecimal goodTaxAmount; // 税率 @Column(name = "tax_rate") private String taxRate; diff --git a/modules/system/src/main/java/com/cwhelp/modules/business/domain/BssVatInvoice.java b/modules/system/src/main/java/com/cwhelp/modules/business/domain/BssVatInvoice.java index cb715f4..b04bf75 100644 --- a/modules/system/src/main/java/com/cwhelp/modules/business/domain/BssVatInvoice.java +++ b/modules/system/src/main/java/com/cwhelp/modules/business/domain/BssVatInvoice.java @@ -12,6 +12,9 @@ import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import javax.persistence.*; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; @@ -33,32 +36,42 @@ public class BssVatInvoice implements Serializable { private Long id; // 发票代码 @Column(name = "invoice_code") + @NotEmpty(message = "发票代码不能为空") private String invoiceCode; // 发票号码 @Column(name = "invoice_no") + @NotEmpty(message = "发票号码不能为空") private String invoiceNo; // 发票日期 @Column(name = "invoice_date") + @NotEmpty(message = "发票日期不能为空") + @Pattern(regexp = "[0-9]{4}-[0-9]{2}-[0-9]{2}", message = "日期格式不正确") private String invoiceDate; // 校验码 @Column(name = "check_code") + @NotEmpty(message = "校验码不能为空") private String checkCode; // 发票金额 @Column(name = "invoice_money") + @NotNull(message = "发票金额不能为空") private BigDecimal invoiceMoney; // 税额 @Column(name = "tax_amount") + @NotNull(message = "税额不能为空") private BigDecimal taxAmount; // 总金额 @Column(name = "total_amount") + @NotNull(message = "总金额不能为空") private BigDecimal totalAmount; // 总金额(大写) @Column(name = "total_amount_cn") + @NotEmpty(message = "总金额(大写)不能为空") private String totalAmountCn; //发票类型 //增值税普通发票 0; 增值税专用发票 1 @Column(name = "invoice_type") + @NotNull(message = "发票类型不能为空") private Integer invoiceType; // 备注 @@ -73,7 +86,6 @@ public class BssVatInvoice implements Serializable { @JsonIgnore private BssTaxinfo buyTaxInfo; // 销售方纳税人信息 - // 购买方纳税人信息 @OneToOne(fetch=FetchType.LAZY) @NotFound(action= NotFoundAction.IGNORE) @JoinColumn(name="saler_tax_info_id") @@ -91,4 +103,10 @@ public class BssVatInvoice implements Serializable { // 更新时间 @LastModifiedDate private Date updateDate; + + @Transient + private Long buyTaxInfoId; + + @Transient + private Long salerTaxInfoId; } \ No newline at end of file diff --git a/modules/system/src/main/java/com/cwhelp/modules/business/repository/BssTaxinfoRepository.java b/modules/system/src/main/java/com/cwhelp/modules/business/repository/BssTaxinfoRepository.java index ee9f04d..4ceb4c8 100644 --- a/modules/system/src/main/java/com/cwhelp/modules/business/repository/BssTaxinfoRepository.java +++ b/modules/system/src/main/java/com/cwhelp/modules/business/repository/BssTaxinfoRepository.java @@ -8,4 +8,5 @@ import com.cwhelp.modules.system.repository.BaseRepository; * @date 2019/08/16 */ public interface BssTaxinfoRepository extends BaseRepository { + BssTaxinfo getByTaxNo(String taxNo); } \ No newline at end of file diff --git a/modules/system/src/main/java/com/cwhelp/modules/business/service/BssTaxinfoService.java b/modules/system/src/main/java/com/cwhelp/modules/business/service/BssTaxinfoService.java index bda4b8f..a561674 100644 --- a/modules/system/src/main/java/com/cwhelp/modules/business/service/BssTaxinfoService.java +++ b/modules/system/src/main/java/com/cwhelp/modules/business/service/BssTaxinfoService.java @@ -38,4 +38,9 @@ public interface BssTaxinfoService { */ @Transactional Boolean updateStatus(StatusEnum statusEnum, List idList); + + /** + * 根据纳税人识别号查询数据 + */ + BssTaxinfo getByTaxNo(String taxNo); } \ No newline at end of file diff --git a/modules/system/src/main/java/com/cwhelp/modules/business/service/impl/BssTaxinfoServiceImpl.java b/modules/system/src/main/java/com/cwhelp/modules/business/service/impl/BssTaxinfoServiceImpl.java index 5830790..efd3ca7 100644 --- a/modules/system/src/main/java/com/cwhelp/modules/business/service/impl/BssTaxinfoServiceImpl.java +++ b/modules/system/src/main/java/com/cwhelp/modules/business/service/impl/BssTaxinfoServiceImpl.java @@ -24,6 +24,11 @@ public class BssTaxinfoServiceImpl implements BssTaxinfoService { @Autowired private BssTaxinfoRepository bssTaxinfoRepository; + @Override + public BssTaxinfo getByTaxNo(String taxNo) { + return bssTaxinfoRepository.getByTaxNo(taxNo); + } + /** * 根据ID查询数据 * @param id 主键ID