diff --git a/admin/admin.iml b/admin/admin.iml index 41d2cd7..3b69299 100644 --- a/admin/admin.iml +++ b/admin/admin.iml @@ -162,5 +162,9 @@ + + + + \ No newline at end of file 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 df823be..b95d139 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 @@ -3,14 +3,19 @@ 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.api.baidu.BaiduAipOCR; +import com.cwhelp.common.api.baidu.entity.vatinvoice.*; +import com.cwhelp.common.api.baidu.entity.vatinvoice.enums.VatInvoiceTypeEnum; 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.utils.*; import com.cwhelp.common.vo.ResultVo; +import com.cwhelp.component.fileUpload.FileUpload; +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.BssVatInvoiceService; +import com.cwhelp.modules.system.domain.Upload; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Example; @@ -20,7 +25,13 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.annotation.Validated; 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; /** @@ -143,4 +154,91 @@ public class BssVatInvoiceController { return ResultVoUtil.error(statusEnum.getMessage() + "失败,请重新操作"); } } + + + /** + * 上传发票图片 + */ + @PostMapping("/upload/image") + @ResponseBody + public ResultVo uploadImage(@RequestParam("image") MultipartFile multipartFile) { + + // 创建Upload实体对象 + Upload upload = FileUpload.getFile(multipartFile, "/images"); + try { + FileUpload.transferTo(multipartFile, upload); + 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()); + //商品 + List goods = new ArrayList<>(); + List commodityNames = wordsResult.getCommodityName(); + List commodityTypes = wordsResult.getCommodityType(); + List commodityUnits = wordsResult.getCommodityUnit(); + List commodityNums = wordsResult.getCommodityNum(); + List commodityPrices = wordsResult.getCommodityPrice(); + List commodityAmounts = wordsResult.getCommodityAmount(); + List commodityTaxRates = wordsResult.getCommodityTaxRate(); + List commodityTaxs = wordsResult.getCommodityTax(); + + for (int i = 0; i < commodityNames.size(); i++) { + BssGoods good = new BssGoods(); + good.setName(commodityNames.get(i).getWord()); + if (ToolUtil.checkListSize(commodityTypes) && !StringUtil.isBlank(commodityTypes.get(i).getWord())) { + good.setSpecification(commodityTypes.get(i).getWord()); + } + if (ToolUtil.checkListSize(commodityUnits) && !StringUtil.isBlank(commodityUnits.get(i).getWord())) { + good.setUnit(commodityUnits.get(i).getWord()); + } + if (ToolUtil.checkListSize(commodityNums) && !StringUtil.isBlank(commodityNums.get(i).getWord())) { + good.setNum(Integer.valueOf(commodityNums.get(i).getWord())); + } + if (ToolUtil.checkListSize(commodityPrices) && !StringUtil.isBlank(commodityPrices.get(i).getWord())) { + good.setUnitPrice(commodityPrices.get(i).getWord()); + } + if (ToolUtil.checkListSize(commodityAmounts) && !StringUtil.isBlank(commodityAmounts.get(i).getWord())) { + good.setDetailAmount(new BigDecimal(commodityAmounts.get(i).getWord())); + } + if (ToolUtil.checkListSize(commodityTaxRates) && !StringUtil.isBlank(commodityTaxRates.get(i).getWord())) { + good.setTaxRate(commodityTaxRates.get(i).getWord()); + } + if (ToolUtil.checkListSize(commodityTaxs) && !StringUtil.isBlank(commodityTaxs.get(i).getWord())) { + good.setTaxAmount(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()); + vatInvoice.setCheckCode(wordsResult.getCheckCode()); + vatInvoice.setInvoiceMoney(new BigDecimal(wordsResult.getTotalAmount())); + vatInvoice.setTaxAmount(new BigDecimal(wordsResult.getTotalTax())); + 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())); + + return ResultVoUtil.success(vatInvoice); + } catch (Exception e) { + return ResultVoUtil.error("上传图片失败"); + } + } } \ No newline at end of file diff --git a/admin/src/main/resources/application.yml b/admin/src/main/resources/application.yml index a7a247a..4505587 100644 --- a/admin/src/main/resources/application.yml +++ b/admin/src/main/resources/application.yml @@ -22,7 +22,7 @@ spring: devtools: restart: enabled: true - ## jpa配置 + ## 11jpa配置 jpa: show-sql: true hibernate: diff --git a/admin/src/main/resources/static/js/main.js b/admin/src/main/resources/static/js/main.js index 8074fc2..ea412f4 100644 --- a/admin/src/main/resources/static/js/main.js +++ b/admin/src/main/resources/static/js/main.js @@ -332,8 +332,8 @@ layui.use(['element', 'form', 'layer', 'upload'], function () { ,exts: 'jpg|jpeg|png|gif' //支持的图片格式 ,multiple: true //开启多文件选择 ,choose: function (obj) { + var upload = $('.upload-image'); obj.preview(function (index, file, result) { - var upload = $('.upload-image'); var name = upload.attr('name'); var show = upload.parents('.layui-form-item').children('.upload-show'); show.append("
" + @@ -349,6 +349,7 @@ layui.use(['element', 'form', 'layer', 'upload'], function () { if(hide.length > 0){ var item = hide.parent('.upload-item'); if (res.code === 200) { + alert(res.data[field]); hide.val(res.data[field]); item.addClass('succeed'); }else { @@ -361,6 +362,63 @@ layui.use(['element', 'form', 'layer', 'upload'], function () { } }); + /** 上传图片(增值税发票)操作 */ + upload.render({ + elem: '#vatInvoiceImg' //绑定元素 + ,url: $('#vatInvoiceImg').attr('up-url') //上传接口 + ,field: 'image' //文件域的字段名 + ,acceptMime: 'image/*' //选择文件类型 + ,exts: 'jpg|jpeg|png|gif' //支持的图片格式 + ,multiple: false + ,choose: function (obj) { + var upload = $('#vatInvoiceImg'); + var show = upload.parents('.layui-form-item').children('.upload-show'); + if ($(show).children("div").length == 1) { + alert("只允许上传一张照片!"); + return ; + } + obj.preview(function (index, file, result) { + var name = upload.attr('name'); + var show = upload.parents('.layui-form-item').children('.upload-show'); + show.append("
" + + "" + + "
"); + }); + } + ,done: function(res, index, upload){ + // 解决节点渲染和异步上传不同步问题 + var interval = window.setInterval(function(){ + var hide = $("#"+index); + if(hide.length > 0){ + var item = hide.parent('.upload-item'); + if (res.code === 200) { + $('#invoiceType').find("option[value='" + res.data['invoiceType'] + "']").attr("selected",true); + $('#invoiceCode').val(res.data['invoiceCode']); + $('#invoiceNo').val(res.data['invoiceNo']); + $('#checkCode').val(res.data['checkCode']); + var invoiceDate = res.data['invoiceDate']; + invoiceDate = invoiceDate.replace('年','-') + invoiceDate = invoiceDate.replace('月','-') + invoiceDate = invoiceDate.replace('日','') + $('#laydate').val(invoiceDate); + $('#remark').val(res.data['remark']); + $('#invoiceMoney').val(res.data['invoiceMoney']); + $('#taxAmount').val(res.data['taxAmount']); + $('#totalAmount').val(res.data['totalAmount']); + form.render("select"); + hide.val(res.data['invoiceImg']); + item.addClass('succeed'); + + }else { + hide.remove(); + item.addClass('error'); + } + clearInterval(interval); + } + }, 100); + } + }); + // 删除上传图片展示项 $(document).on("click", ".upload-item-close", function () { $(this).parent('.upload-item').remove(); diff --git a/admin/src/main/resources/templates/business/vatInvoice/add.html b/admin/src/main/resources/templates/business/vatInvoice/add.html index a975c54..a27a76e 100644 --- a/admin/src/main/resources/templates/business/vatInvoice/add.html +++ b/admin/src/main/resources/templates/business/vatInvoice/add.html @@ -8,7 +8,7 @@
  • 手工录入
  • -
  • 查验录入
  • +
@@ -18,79 +18,76 @@
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
-
- -
- -
-
-
- -
- - -
+ +
+
+
@@ -113,31 +110,27 @@ # - 字段名称 - 字段标题 - 数据类型 - 查询(可选) - 列表显示 - 字段验证(可选) + 货物名称 + 规格型号 + 单位 + 数量 + 单价 + 金额 + 税率 + 税额 - - - - - - - - - - - - - + + + + + + + @@ -149,7 +142,7 @@
-
+
@@ -209,5 +202,6 @@ }); + \ No newline at end of file diff --git a/admin/src/main/resources/templates/system/main/index.html b/admin/src/main/resources/templates/system/main/index.html index 2ebe464..c0eaef2 100644 --- a/admin/src/main/resources/templates/system/main/index.html +++ b/admin/src/main/resources/templates/system/main/index.html @@ -59,7 +59,7 @@ -
+
diff --git a/common/common.iml b/common/common.iml index 44f5126..1e2b0d4 100644 --- a/common/common.iml +++ b/common/common.iml @@ -21,6 +21,10 @@ + + + + @@ -103,11 +107,11 @@ - + \ No newline at end of file diff --git a/common/pom.xml b/common/pom.xml index 04d330a..50d9ab2 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -14,4 +14,12 @@ 2.0.1 + + + com.baidu.aip + java-sdk + 4.12.0 + + + \ No newline at end of file diff --git a/common/src/main/java/com/cwhelp/common/api/baidu/BaiduAipOCR.java b/common/src/main/java/com/cwhelp/common/api/baidu/BaiduAipOCR.java new file mode 100644 index 0000000..dd92590 --- /dev/null +++ b/common/src/main/java/com/cwhelp/common/api/baidu/BaiduAipOCR.java @@ -0,0 +1,63 @@ +package com.cwhelp.common.api.baidu; + +import com.alibaba.fastjson.JSON; +import com.baidu.aip.ocr.AipOcr; +import com.cwhelp.common.api.baidu.entity.vatinvoice.VatInvoiceResult; +import com.cwhelp.common.api.baidu.entity.vatinvoice.WordsResult; +import org.json.JSONObject; +import sun.misc.BASE64Encoder; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; + +/** + * @author: yan.y + * @Description: + * @Date: Created in 21:16 2019/10/5 + */ +public class BaiduAipOCR { + + private static final String APP_ID = "16956531"; + private static final String API_KEY = "hLXMPm45eMxUDl3BVELvZAjV"; + private static final String SECRET_KEY = "UeNdsyE23QFHLUx1Ge9D3kfrNwH6Eixl"; + + private static AipOcr client = null; + + static { + initAipOcr(); + } + + /** + * 初始化 + */ + private static void initAipOcr(){ + if (null == client) { + client = new AipOcr(APP_ID, API_KEY, SECRET_KEY); + } + } + + /** + * 百度OCR接口 增值税发票 + * @param file + * @return + */ + public static VatInvoiceResult queryBaiduVatInvoiceApi(File file){ + byte[] data = null; + // 读取图片字节数组 + try { + InputStream in = new FileInputStream(file); + data = new byte[in.available()]; + in.read(data); + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + JSONObject result = client.vatInvoice(data, null); + VatInvoiceResult vatInvoiceResult = JSON.parseObject(result.toString(), VatInvoiceResult.class); + return vatInvoiceResult; + } + +} diff --git a/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityAmount.java b/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityAmount.java new file mode 100644 index 0000000..47cad6b --- /dev/null +++ b/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityAmount.java @@ -0,0 +1,17 @@ +package com.cwhelp.common.api.baidu.entity.vatinvoice; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author: yan.y + * @Description: + * @Date: Created in 23:32 2019/10/5 + */ +@Data +public class CommodityAmount implements Serializable { + private String row; + + private String word; +} diff --git a/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityName.java b/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityName.java new file mode 100644 index 0000000..a198460 --- /dev/null +++ b/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityName.java @@ -0,0 +1,17 @@ +package com.cwhelp.common.api.baidu.entity.vatinvoice; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author: yan.y + * @Description: + * @Date: Created in 23:32 2019/10/5 + */ +@Data +public class CommodityName implements Serializable { + private String row; + + private String word; +} diff --git a/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityNum.java b/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityNum.java new file mode 100644 index 0000000..81879e5 --- /dev/null +++ b/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityNum.java @@ -0,0 +1,17 @@ +package com.cwhelp.common.api.baidu.entity.vatinvoice; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author: yan.y + * @Description: + * @Date: Created in 23:32 2019/10/5 + */ +@Data +public class CommodityNum implements Serializable { + private String row; + + private String word; +} diff --git a/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityPrice.java b/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityPrice.java new file mode 100644 index 0000000..8fe17d0 --- /dev/null +++ b/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityPrice.java @@ -0,0 +1,18 @@ +package com.cwhelp.common.api.baidu.entity.vatinvoice; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author: yan.y + * @Description: + * @Date: Created in 23:32 2019/10/5 + */ +@Data +public class CommodityPrice implements Serializable { + + private String row; + + private String word; +} diff --git a/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityTax.java b/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityTax.java new file mode 100644 index 0000000..9b8cb2b --- /dev/null +++ b/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityTax.java @@ -0,0 +1,17 @@ +package com.cwhelp.common.api.baidu.entity.vatinvoice; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author: yan.y + * @Description: + * @Date: Created in 23:32 2019/10/5 + */ +@Data +public class CommodityTax implements Serializable { + private String row; + + private String word; +} diff --git a/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityTaxRate.java b/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityTaxRate.java new file mode 100644 index 0000000..90661ac --- /dev/null +++ b/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityTaxRate.java @@ -0,0 +1,17 @@ +package com.cwhelp.common.api.baidu.entity.vatinvoice; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author: yan.y + * @Description: + * @Date: Created in 23:32 2019/10/5 + */ +@Data +public class CommodityTaxRate implements Serializable { + private String row; + + private String word; +} diff --git a/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityType.java b/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityType.java new file mode 100644 index 0000000..7ffdc52 --- /dev/null +++ b/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityType.java @@ -0,0 +1,17 @@ +package com.cwhelp.common.api.baidu.entity.vatinvoice; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author: yan.y + * @Description: + * @Date: Created in 23:32 2019/10/5 + */ +@Data +public class CommodityType implements Serializable { + private String row; + + private String word; +} diff --git a/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityUnit.java b/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityUnit.java new file mode 100644 index 0000000..c39edfd --- /dev/null +++ b/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/CommodityUnit.java @@ -0,0 +1,17 @@ +package com.cwhelp.common.api.baidu.entity.vatinvoice; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author: yan.y + * @Description: + * @Date: Created in 23:32 2019/10/5 + */ +@Data +public class CommodityUnit implements Serializable { + private String row; + + private String word; +} diff --git a/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/VatInvoiceResult.java b/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/VatInvoiceResult.java new file mode 100644 index 0000000..1b3cc46 --- /dev/null +++ b/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/VatInvoiceResult.java @@ -0,0 +1,20 @@ +package com.cwhelp.common.api.baidu.entity.vatinvoice; + +import lombok.Data; + +/** + * @author: yan.y + * @Description: + * @Date: Created in 23:49 2019/10/5 + */ +@Data +public class VatInvoiceResult { + + private String log_id; + + private WordsResult words_result; + + private String words_result_num; + + private String direction; +} diff --git a/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/WordsResult.java b/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/WordsResult.java new file mode 100644 index 0000000..bdcfb81 --- /dev/null +++ b/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/WordsResult.java @@ -0,0 +1,102 @@ +package com.cwhelp.common.api.baidu.entity.vatinvoice; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author: yan.y + * @Description: + * @Date: Created in 23:24 2019/10/5 + */ +@Data +public class WordsResult implements Serializable { + + //销售方 + private String SellerAddress; + + private String SellerRegisterNum; + + private String SellerName; + + private String SellerBank; + + // 发票信息 + private String Remarks; + + private String CheckCode; + + private String InvoiceNum; + + private String InvoiceCode; + + private String InvoiceDate; + + private String InvoiceType; + + private String AmountInFiguers; + + private String AmountInWords; + + //购买方 + private String PurchaserRegisterNum; + + private String PurchaserName; + + private String PurchaserAddress; + + private String PurchaserBank; + + //商品 + private List CommodityName; + + private List CommodityType; + + private List CommodityUnit; + + private List CommodityNum; + + private List CommodityPrice; + + private List CommodityAmount; + + private List CommodityTaxRate; + + private List CommodityTax; + + private String TotalAmount; + + private String TotalTax; + + @Override + public String toString() { + return "WordsResult{" + + "SellerAddress='" + SellerAddress + '\'' + + ", SellerRegisterNum='" + SellerRegisterNum + '\'' + + ", SellerName='" + SellerName + '\'' + + ", SellerBank='" + SellerBank + '\'' + + ", Remarks='" + Remarks + '\'' + + ", CheckCode='" + CheckCode + '\'' + + ", InvoiceNum='" + InvoiceNum + '\'' + + ", InvoiceCode='" + InvoiceCode + '\'' + + ", InvoiceDate='" + InvoiceDate + '\'' + + ", AmountInFiguers='" + AmountInFiguers + '\'' + + ", AmountInWords='" + AmountInWords + '\'' + + ", PurchaserRegisterNum='" + PurchaserRegisterNum + '\'' + + ", PurchaserName='" + PurchaserName + '\'' + + ", PurchaserAddress='" + PurchaserAddress + '\'' + + ", PurchaserBank='" + PurchaserBank + '\'' + + ", CommodityName=" + CommodityName + + ", CommodityType=" + CommodityType + + ", CommodityUnit=" + CommodityUnit + + ", CommodityNum=" + CommodityNum + + ", CommodityPrice=" + CommodityPrice + + ", CommodityAmount=" + CommodityAmount + + ", CommodityTaxRate=" + CommodityTaxRate + + ", CommodityTax=" + CommodityTax + + ", TotalAmount='" + TotalAmount + '\'' + + ", TotalTax='" + TotalTax + '\'' + + '}'; + } +} diff --git a/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/enums/VatInvoiceTypeEnum.java b/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/enums/VatInvoiceTypeEnum.java new file mode 100644 index 0000000..ccde086 --- /dev/null +++ b/common/src/main/java/com/cwhelp/common/api/baidu/entity/vatinvoice/enums/VatInvoiceTypeEnum.java @@ -0,0 +1,31 @@ +package com.cwhelp.common.api.baidu.entity.vatinvoice.enums; + +/** + * @author: yan.y + * @Description: + * @Date: Created in 0:46 2019/10/6 + */ +public enum VatInvoiceTypeEnum { + + ORDINARY_VAT_INVOICE("普通发票",0), + SPECIAL_VAT_INVOICE("专用发票",1); + + public String invoiceType; + + public int invoiceCode; + + VatInvoiceTypeEnum(String invoiceType, int invoiceCode) { + this.invoiceType = invoiceType; + this.invoiceCode = invoiceCode; + } + + public static int getVatInvoiceCode(String invoiceType) { + VatInvoiceTypeEnum[] values = VatInvoiceTypeEnum.values(); + for (VatInvoiceTypeEnum value : values) { + if (value.invoiceType.equals(invoiceType)) { + return value.invoiceCode; + } + } + return 0; + } +} diff --git a/common/src/main/java/com/cwhelp/common/utils/HttpYoushangFapiaoUtil.java b/common/src/main/java/com/cwhelp/common/utils/HttpYoushangFapiaoUtil.java index d674648..79bde38 100644 --- a/common/src/main/java/com/cwhelp/common/utils/HttpYoushangFapiaoUtil.java +++ b/common/src/main/java/com/cwhelp/common/utils/HttpYoushangFapiaoUtil.java @@ -18,14 +18,14 @@ import java.net.URI; * @Modified by: */ public class HttpYoushangFapiaoUtil { - private static final String url = "https://fapiao.youshang.com/GuoShuiAction.do"; + 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); + URIBuilder uriBuilder = new URIBuilder(URL); URI uri = uriBuilder.addParameter("action", action) .addParameter("fpdm", params.getString("fpdm")) .addParameter("fphm", params.getString("fphm")) @@ -46,5 +46,4 @@ public class HttpYoushangFapiaoUtil { } return result; } - } diff --git a/common/src/main/java/com/cwhelp/common/utils/ToolUtil.java b/common/src/main/java/com/cwhelp/common/utils/ToolUtil.java index 8df02d3..1a639ba 100644 --- a/common/src/main/java/com/cwhelp/common/utils/ToolUtil.java +++ b/common/src/main/java/com/cwhelp/common/utils/ToolUtil.java @@ -5,6 +5,7 @@ import java.io.UnsupportedEncodingException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.net.URLDecoder; +import java.util.List; import java.util.Map; import java.util.Random; import java.util.TreeMap; @@ -147,4 +148,11 @@ public class ToolUtil { } return ""; } + + public static boolean checkListSize(List list) { + if (list.size() > 0) + return true; + else + return false; + } } diff --git a/component/actionLog/actionLog.iml b/component/actionLog/actionLog.iml index bcbf6ac..f544f95 100644 --- a/component/actionLog/actionLog.iml +++ b/component/actionLog/actionLog.iml @@ -133,5 +133,9 @@ + + + + \ No newline at end of file diff --git a/component/component.iml b/component/component.iml index 8c6e153..cc41767 100644 --- a/component/component.iml +++ b/component/component.iml @@ -96,5 +96,9 @@ + + + + \ No newline at end of file diff --git a/component/excel/excel.iml b/component/excel/excel.iml index b628316..3000602 100644 --- a/component/excel/excel.iml +++ b/component/excel/excel.iml @@ -115,5 +115,9 @@ + + + + \ No newline at end of file diff --git a/component/fileUpload/fileUpload.iml b/component/fileUpload/fileUpload.iml index 29e9cf0..8a583ce 100644 --- a/component/fileUpload/fileUpload.iml +++ b/component/fileUpload/fileUpload.iml @@ -29,6 +29,7 @@ + @@ -117,5 +118,8 @@ + + + \ No newline at end of file diff --git a/component/fileUpload/pom.xml b/component/fileUpload/pom.xml index 48bc431..df5bcb0 100644 --- a/component/fileUpload/pom.xml +++ b/component/fileUpload/pom.xml @@ -26,6 +26,11 @@ system ${project.version} + + net.coobird + thumbnailator + 0.4.8 + diff --git a/component/fileUpload/src/main/java/com/cwhelp/component/fileUpload/FileUpload.java b/component/fileUpload/src/main/java/com/cwhelp/component/fileUpload/FileUpload.java index 96c2ffd..b71b9a0 100644 --- a/component/fileUpload/src/main/java/com/cwhelp/component/fileUpload/FileUpload.java +++ b/component/fileUpload/src/main/java/com/cwhelp/component/fileUpload/FileUpload.java @@ -6,6 +6,7 @@ import com.cwhelp.common.utils.ToolUtil; import com.cwhelp.component.fileUpload.config.properties.UploadProjectProperties; import com.cwhelp.component.fileUpload.enums.UploadResultEnum; import com.cwhelp.modules.system.domain.Upload; +import net.coobird.thumbnailator.Thumbnails; import org.springframework.web.multipart.MultipartFile; import java.io.File; @@ -128,6 +129,7 @@ public class FileUpload { BigInteger SHA1Bi = new BigInteger(1, sha1.digest()); upload.setMd5(MD5Bi.toString(16)); upload.setSha1(SHA1Bi.toString(16)); + Thumbnails.of(getDestFile(upload)).scale(1).toFile(getDestFile(upload)); } /** @@ -150,5 +152,4 @@ public class FileUpload { return null; } } - } diff --git a/component/jwt/jwt.iml b/component/jwt/jwt.iml index f373a42..a4a1cb8 100644 --- a/component/jwt/jwt.iml +++ b/component/jwt/jwt.iml @@ -118,5 +118,9 @@ + + + + \ No newline at end of file diff --git a/component/shiro/shiro.iml b/component/shiro/shiro.iml index 465c811..bb20ff6 100644 --- a/component/shiro/shiro.iml +++ b/component/shiro/shiro.iml @@ -132,5 +132,9 @@ + + + + \ No newline at end of file diff --git a/component/thymeleaf/thymeleaf.iml b/component/thymeleaf/thymeleaf.iml index a576569..768c242 100644 --- a/component/thymeleaf/thymeleaf.iml +++ b/component/thymeleaf/thymeleaf.iml @@ -123,5 +123,9 @@ + + + + \ No newline at end of file diff --git a/cwhelp.iml b/cwhelp.iml index 8c6e153..cc41767 100644 --- a/cwhelp.iml +++ b/cwhelp.iml @@ -96,5 +96,9 @@ + + + + \ No newline at end of file diff --git a/devtools/devtools.iml b/devtools/devtools.iml index 593b033..560510f 100644 --- a/devtools/devtools.iml +++ b/devtools/devtools.iml @@ -147,5 +147,9 @@ + + + + \ No newline at end of file diff --git a/devtools/src/main/java/com/cwhelp/devtools/generate/utils/jAngel/utils/StringUtil.java b/devtools/src/main/java/com/cwhelp/devtools/generate/utils/jAngel/utils/StringUtil.java index 37cfb07..3e9617a 100644 --- a/devtools/src/main/java/com/cwhelp/devtools/generate/utils/jAngel/utils/StringUtil.java +++ b/devtools/src/main/java/com/cwhelp/devtools/generate/utils/jAngel/utils/StringUtil.java @@ -94,4 +94,16 @@ public class StringUtil { } return false; } + + /** + * 字符串是否是空 + * @param str + * @return + */ + public static boolean isBlank(String str) { + if (null == str || "".equals(str) || "null".equals(str)) + return true; + else + return false; + } } diff --git a/devtools/src/main/resources/static/js/generate.code.js b/devtools/src/main/resources/static/js/generate.code.js index e884431..8593f18 100644 --- a/devtools/src/main/resources/static/js/generate.code.js +++ b/devtools/src/main/resources/static/js/generate.code.js @@ -142,7 +142,11 @@ layui.use(['element', 'form', 'layer', 'formSelects'], function () { // 删除字段 $(".field-del").on("click", function () { if(field != null){ + if (entity.children("tr").length == 1) { + return; + } $(field).parent().remove(); + entity.children("tr:last-child").children(".entity-number").click(); resetNumber(); } }); diff --git a/modules/modules.iml b/modules/modules.iml index 8c6e153..cc41767 100644 --- a/modules/modules.iml +++ b/modules/modules.iml @@ -96,5 +96,9 @@ + + + + \ No newline at end of file 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 8255029..8aea6f9 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 @@ -31,8 +31,6 @@ public class BssGoods implements Serializable { @GeneratedValue(strategy=GenerationType.IDENTITY) private Long id; private String name; - // 货物代码 - private String code; // 数量 private Integer num; // 细节金额 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 4de6700..3f7b15c 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 @@ -43,9 +43,6 @@ public class BssVatInvoice implements Serializable { // 校验码 @Column(name = "check_code") private String checkCode; - // 机器编码 - @Column(name = "machine_no") - private String machineNo; // 发票金额 @Column(name = "invoice_money") private BigDecimal invoiceMoney; @@ -58,11 +55,16 @@ public class BssVatInvoice implements Serializable { // 总金额(大写) @Column(name = "total_amount_cn") private String totalAmountCn; + + //发票类型 @Column(name = "invoice_type") private Integer invoiceType; // 备注 private String remark; + + @Column(name = "invoice_img") + private String invoiceImg; // 购买方纳税人信息 @OneToOne(fetch=FetchType.LAZY) @NotFound(action= NotFoundAction.IGNORE) diff --git a/modules/system/system.iml b/modules/system/system.iml index c85455c..bc9ea84 100644 --- a/modules/system/system.iml +++ b/modules/system/system.iml @@ -116,5 +116,9 @@ + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index cae0ab3..73fc737 100644 --- a/pom.xml +++ b/pom.xml @@ -120,5 +120,19 @@ httpclient 4.5.8 + + + + com.baidu.aip + java-sdk + 4.12.0 + + + + + net.coobird + thumbnailator + 0.4.8 +