From c2bcc34e0b884ffed04152ceba1890661cd5dba9 Mon Sep 17 00:00:00 2001 From: kk <1910333201@qq.com> Date: Mon, 6 Nov 2023 11:28:12 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=B1=BD=E7=BA=A2=E5=AD=97=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E8=A1=A8=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../http/invoice/v1/InvoiceController.java | 6 +- .../jianshui/invoice/domain/InvoiceBack.java | 35 ++++ .../domain/vo/RedinfoCopyAisinoVO.java | 68 ++++--- .../domain/vo/RedinfodetailAisinoVO.java | 32 ++- .../console/DownloadJdcDetailItemVO.java | 24 +-- .../vo/api/aisino/console/DownloadJdcVO.java | 46 ++--- .../AisinoInvoiceRequestAdapterImpl.java | 2 +- ...noConsoleInvoiceApiZhongQiServiceImpl.java | 187 +++++++++++++----- .../com/jianshui/invoice/utils/JcskTest.java | 11 ++ .../mapper/invoice/InvoiceBackMapper.xml | 17 +- 10 files changed, 307 insertions(+), 121 deletions(-) diff --git a/jianshui-admin/src/main/java/com/jianshui/api/controller/http/invoice/v1/InvoiceController.java b/jianshui-admin/src/main/java/com/jianshui/api/controller/http/invoice/v1/InvoiceController.java index 3dc50b1..f2e8697 100644 --- a/jianshui-admin/src/main/java/com/jianshui/api/controller/http/invoice/v1/InvoiceController.java +++ b/jianshui-admin/src/main/java/com/jianshui/api/controller/http/invoice/v1/InvoiceController.java @@ -1760,7 +1760,11 @@ public class InvoiceController { public Object addInvoiceBatch(HttpServletRequest request, String identity) throws Exception { // TODO: 2023/11/2 批量开票接口 - + + + // 摘成异步逻辑,状态码过来所有的错误记录数据库,记录请求过来的数据先 + + if (StringUtils.isEmpty(identity)) { return AjaxResult.error(ErrorCode.EMPTY_IDENTITY); } diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/InvoiceBack.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/InvoiceBack.java index d9fc5d4..f9b8a12 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/InvoiceBack.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/InvoiceBack.java @@ -44,6 +44,41 @@ public class InvoiceBack @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; + /** 接口返回信息*/ + private String resultMsg; + + /** 接口返回状态码*/ + private String resultCode; + + /** 更新时间*/ + private String updateTime; + + + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getResultCode() { + return resultCode; + } + + public void setResultCode(String resultCode) { + this.resultCode = resultCode; + } + + public String getResultMsg() { + return resultMsg; + } + + public void setResultMsg(String resultMsg) { + this.resultMsg = resultMsg; + } + public Date getCreateTime() { return createTime; } diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/RedinfoCopyAisinoVO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/RedinfoCopyAisinoVO.java index 93d5ca2..f786ad0 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/RedinfoCopyAisinoVO.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/RedinfoCopyAisinoVO.java @@ -44,6 +44,7 @@ public class RedinfoCopyAisinoVO { /** * bill_info表的bill_id */ + @Alias("BillInfoId") @Excel(name = "bill_info表的bill_id") private Long billInfoId; @@ -57,148 +58,153 @@ public class RedinfoCopyAisinoVO { /** * 信息表状态 */ - @Alias("statusDM") + @Alias("StatusDM") @Excel(name = "信息表状态") private String redInfoStatus; /** * 信息表状态描述 */ - @Alias("statusMC") + @Alias("StatusMC") @Excel(name = "信息表状态描述") private String redInfoMessage; /** * 信息表类型 */ - @Alias("billType") + @Alias("BillType") @Excel(name = "信息表类型") private String redInfoType; /** * 原发票代码 */ - @Alias("typeCode") + @Alias("TypeCode") @Excel(name = "原发票代码") private String originFpdm; /** * 信息表特殊标识 */ + @Alias("RedInfoSpecFlag") @Excel(name = "信息表特殊标识") private String redInfoSpecFlag; /** * 原发票号码 */ - @Alias("invNo") + @Alias("InvNo") @Excel(name = "原发票号码") private String originFphm; /** * 税种类别 */ - @Alias("szlb") + @Alias("Szlb") @Excel(name = "税种类别") private String taxType; /** * 原发票开票日期 */ - @Alias("lzkprq") + @Alias("Lzkprq") @Excel(name = "原发票开票日期") private String originKprq; /** * 多税率标志 */ - @Alias("isMutiRate") + @Alias("IsMutiRate") @Excel(name = "多税率标志") private String multTaxRate; /** * 填开日期 */ - @Alias("date") + @Alias("Date") @Excel(name = "填开日期") private String billInputTime; /** * 购方名称 */ - @Alias("buyerName") + @Alias("BuyerName") @Excel(name = "购方名称") private String buyerName; /** * 购方税号 */ - @Alias("buyerTaxCode") + @Alias("BuyerTaxCode") private String buyerTaxnum; /** * 销方名称 */ - @Alias("sellerName") + @Alias("SellerName") @Excel(name = "销方名称") private String sellerName; /** * 销方税号 */ - @Alias("sellTaxCode") + @Alias("SellTaxCode") @Excel(name = "销方税号") private String sellerTaxnum; /** * 不含税金额 */ - @Alias("amount") + @Alias("Amount") @Excel(name = "不含税金额") private BigDecimal taxfreeamt; /** * 税额 */ - @Alias("tax") + @Alias("Tax") @Excel(name = "税额") private BigDecimal tax; /** * 含税金额 */ + @Alias("Taxamt") @Excel(name = "含税金额") private BigDecimal taxamt; /** * 申请说明 */ - @Alias("reqMemo") + @Alias("ReqMemo") @Excel(name = "申请说明") private String applyRemark; /** * 申请表pdf 地址 */ + @Alias("PdfUrl") @Excel(name = "申请表pdf 地址") private String pdfUrl; /** * 商品编码版本号 */ - @Alias("spbmbbh") + @Alias("Spbmbbh") @Excel(name = "商品编码版本号") private String bmbbh; /** * 营业税标志 */ + @Alias("BusinessTaxCode") @Excel(name = "营业税标志") private String businessTaxCode; /** * 申请时间 */ + @Alias("ApplyTime") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "申请时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date applyTime; @@ -206,76 +212,84 @@ public class RedinfoCopyAisinoVO { /** * 发票种类 invoice_type( p电子增值税普通发票 c增值税普通发票 s 增值税专用发票 e 收购发票 f 收购发票 r增值税普通发票) */ - @Alias("lzfplxdm") + @Alias("Lzfplxdm") @Excel(name = "发票种类 invoice_type", readConverterExp = "p=电子增值税普通发票,c=增值税普通发票,s=,增=值税专用发票,e=,收=购发票,f=,收=购发票,r=增值税普通发票") private String invoiceType; /** * 分机号 */ + @Alias("Fjh") @Excel(name = "分机号") private String fjh; /** * 终端号 */ + @Alias("TerminalNumber") @Excel(name = "终端号") private String terminalNumber; /** * 设备编号 */ + @Alias("Jspbh") @Excel(name = "设备编号") private String jspbh; /** * 所属月份 */ + @Alias("Ssyf") @Excel(name = "所属月份") private String ssyf; /** * 税率 */ - @Alias("taxRate") + @Alias("TaxRate") @Excel(name = "税率") private BigDecimal taxrate; /** * 申请选择 */ - + @Alias("Sqxz") @Excel(name = "申请选择") private String sqxz; /** * 经办人 */ + @Alias("Jbr") @Excel(name = "经办人") private String jbr; /** * 申请方税号 */ + @Alias("Reqnsrsbh") @Excel(name = "申请方税号") private String reqnsrsbh; /** * 成品油标志 */ + @Alias("ProductOilFlag") @Excel(name = "成品油标志") private String productOilFlag; /** * 服务公司 */ + @Alias("ServiceSupplierKey") @Excel(name = "服务公司") private String serviceSupplierKey; /** * 申请类别 */ - @Alias("sqly") + @Alias("Sqly") @Excel(name = "申请类别") private Integer sqlb; // 申请类别,0为销方申请,1为购方申请 @@ -298,27 +312,27 @@ public class RedinfoCopyAisinoVO { /** 数科新加字段**/ - @Alias("hzfphm") + @Alias("Hzfphm") @Excel(name = "红字发票号码") private String fphm; - @Alias("hzkprq") + @Alias("Hzkprq") @Excel(name = "红字发票开票日期") private String kprq; - @Alias("hzfpxxqrdid") + @Alias("Hzfpxxqrdid") @Excel(name = "红字发票信息确认单id") private String hzfpxxqrdid; - @Alias("hzhjje") + @Alias("Hzhjje") @Excel(name = "红字合计金额") private String hzhjje; - @Alias("hzhjse") + @Alias("Hzhjse") @Excel(name = "红字合计税额") private String hzhjse; - @Alias("ykjhzfpbz") + @Alias("Ykjhzfpbz") @Excel(name = "是否开具红字发票") private String ykjhzfpbz; diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/RedinfodetailAisinoVO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/RedinfodetailAisinoVO.java index 543b6c0..507bf74 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/RedinfodetailAisinoVO.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/RedinfodetailAisinoVO.java @@ -29,18 +29,21 @@ public class RedinfodetailAisinoVO { /** * redinfo表的id */ + @Alias("RedinfoId") @Excel(name = "redinfo表的id") private Long redinfoId; /** * 申请单号 */ + @Alias("Billno") @Excel(name = "申请单号") private String billno; /** * $column.columnComment */ + @Alias("Index") @Excel(name = "序号", readConverterExp = "$column.readConverterExp()") private Integer index; @@ -48,10 +51,11 @@ public class RedinfodetailAisinoVO { /** * 商品名称 */ + @Alias("GoodName") @Excel(name = "商品名称") private String goodName; - @Alias("goodsUnit") + @Alias("GoodsUnit") /** * 单位 */ @@ -61,73 +65,77 @@ public class RedinfodetailAisinoVO { /** * 规格型号 */ - @Alias("goodsGgxh") + @Alias("GoodsGgxh") @Excel(name = "规格型号") private String spec; /** * 商品数量 */ - @Alias("goodsNum") + @Alias("GoodsNum") @Excel(name = "商品数量") private BigDecimal num; /** * 商品单价,不含税 */ - @Alias("goodsPrice") + @Alias("GoodsPrice") @Excel(name = "商品单价,不含税") private BigDecimal price; /** * 不含税金额 */ - @Alias("goodsJE") + @Alias("GoodsJE") @Excel(name = "不含税金额") private BigDecimal taxfreeamt; /** * 税率 */ - @Alias("goodsTaxRate") + @Alias("GoodsTaxRate") @Excel(name = "税率") private BigDecimal taxrate; /** * 税额 */ - @Alias("goodsSE") + @Alias("GoodsSE") @Excel(name = "税额") private BigDecimal tax; /** * 含税金额 */ + @Alias("Taxamt") @Excel(name = "含税金额") private BigDecimal taxamt; /** * 税收分类编码 */ + @Alias("Spbm") @Excel(name = "税收分类编码") private String spbm; /** * 商品编码版本号 */ + @Alias("Bmbbh") @Excel(name = "商品编码版本号") private String bmbbh; /** * 优惠政策标识,0不使用,1使用 */ - @Alias("syyhzcbz") + @Alias("Syyhzcbz") @Excel(name = "优惠政策标识,0不使用,1使用") private Integer yhzcbs; /** * 增值税特殊管理(优惠政策表示名称) */ + @Alias("Zzstsgl") @Excel(name = "增值税特殊管理", readConverterExp = "优=惠政策表示名称") private String zzstsgl; @@ -141,35 +149,41 @@ public class RedinfodetailAisinoVO { /** * 商品编码简称 */ + @Alias("GoodAbbreviation") @Excel(name = "商品编码简称") private String goodAbbreviation; /** * 发票行性质 */ + @Alias("Fphxz") @Excel(name = "发票行性质") private Integer fphxz; /** * 扣除额 */ + @Alias("Kce") @Excel(name = "扣除额") private BigDecimal kce; /** * 修改时间 */ + @Alias("UpdatedTime") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date updatedTime; + // 含税标志 @TableField(exist = false) @JsonIgnore - @Alias("hsbz") + @Alias("Hsbz") private String withTaxFlag; // 含税单价 + @Alias("PriceWithTax") @TableField(exist = false) @JsonIgnore private String priceWithTax; diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/api/aisino/console/DownloadJdcDetailItemVO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/api/aisino/console/DownloadJdcDetailItemVO.java index 5c203ed..4709123 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/api/aisino/console/DownloadJdcDetailItemVO.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/api/aisino/console/DownloadJdcDetailItemVO.java @@ -11,39 +11,39 @@ import lombok.Data; public class DownloadJdcDetailItemVO { // 商品名称 - private String goodsName; + private String GoodsName; //计量单位 - private String goodsUnit; + private String GoodsUnit; //单价 - private String goodsPrice; + private String GoodsPrice; //税率 - private String goodsTaxRate; + private String GoodsTaxRate; //规格型号 - private String goodsGgxh; + private String GoodsGgxh; //数量 - private String goodsNum; + private String GoodsNum; //金额 - private String goodsJE; + private String GoodsJE; //税额 - private String goodsSE; + private String GoodsSE; // 含税标志 - private String hsbz; + private String Hsbz; // 商品编码 - private String spbm; + private String Spbm; //商品企业自编 - private String qyspbm; + private String Qyspbm; //是否使用优惠政策标识0:不使用,1:使用 - private String syyhzcbz; + private String Syyhzcbz; // 零税率标识 private String LSLBZ; diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/api/aisino/console/DownloadJdcVO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/api/aisino/console/DownloadJdcVO.java index 9358d0a..ff44f2d 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/api/aisino/console/DownloadJdcVO.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/api/aisino/console/DownloadJdcVO.java @@ -15,73 +15,73 @@ public class DownloadJdcVO { private String ReqBillNo; // 信息表编号 - private String resBillNo; + private String ResBillNo; // 信息表状态代码 - private String statusDM; + private String StatusDM; // 信息表状态描述 - private String statusMC; + private String StatusMC; // 信息表类型 - private String billType; + private String BillType; // 对应蓝票代码 - private String typeCode; + private String TypeCode; // 对应蓝票号码 - private String invNo; + private String InvNo; // 税种类别 - private String szlb; + private String Szlb; // 多税率标志 - private String isMutiRate; + private String IsMutiRate; // 填开日期 - private String date; + private String Date; // 购方名称 - private String buyerName; + private String BuyerName; // 购方税号 - private String buyerTaxCode; + private String BuyerTaxCode; // 购方地址电话 - private String buyerAdd; + private String BuyerAdd; // 购方银行账号 - private String buyerBank; + private String BuyerBank; // 销方名称 - private String sellerName; + private String SellerName; // 销方税号 - private String sellTaxCode; + private String SellTaxCode; // 合计金额 - private String amount; + private String Amount; // 税率 - private String taxRate; + private String TaxRate; // 合计税额 - private String tax; + private String Tax; // 申请说明 - private String reqMemo; + private String ReqMemo; // 商品编码版本号 - private String spbmbbh; + private String Spbmbbh; // 含税税率标识 - private String slbz; + private String Slbz; // 异地代开 - private String yddk; + private String Yddk; // 代开比对标识 - private String dkbdbs; + private String Dkbdbs; // 商品明细 private List RedInvReqBillMx; diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/request/AisinoInvoiceRequestAdapterImpl.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/request/AisinoInvoiceRequestAdapterImpl.java index 69504ac..95bffaa 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/request/AisinoInvoiceRequestAdapterImpl.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/request/AisinoInvoiceRequestAdapterImpl.java @@ -103,7 +103,7 @@ public class AisinoInvoiceRequestAdapterImpl implements IInvoiceRequestService { // 平台解密 try { // TODO: 2023/9/20 - order = AisinoInvoiceDecryptUtil.decrypt(order, JKey); +// order = AisinoInvoiceDecryptUtil.decrypt(order, JKey); } catch (Exception e) { e.printStackTrace(); throw new JianshuiParamErrorException(ErrorCode.DECRYPT_ERROR, companyservice, "invoice"); diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiZhongQiServiceImpl.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiZhongQiServiceImpl.java index 13eb488..202b4c3 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiZhongQiServiceImpl.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiZhongQiServiceImpl.java @@ -103,7 +103,6 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer static final String SUFFIX = ".tmp";//后缀字符串定义文件的扩展名;如果为null,则将使用后缀".tmp" - /** * 1.发票开具 SID = 1 * @@ -293,12 +292,12 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer try { // 控制台文档给的不对,反了 String jdcbz = aisinoConsoleInvoiceAddDTO.getJDCBZ() != null ? aisinoConsoleInvoiceAddDTO.getJDCBZ() : ""; - log.info("机动车标志:{}",jdcbz); - if("1".equals(jdcbz)){ + log.info("机动车标志:{}", jdcbz); + if ("1".equals(jdcbz)) { aisinoConsoleInvoiceAddDTO.setJDCBZ("2"); - }else if("2".equals(jdcbz)){ + } else if ("2".equals(jdcbz)) { aisinoConsoleInvoiceAddDTO.setJDCBZ("1"); - }else { + } else { aisinoConsoleInvoiceAddDTO.setJDCBZ("2"); } @@ -405,7 +404,7 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer try { Long c = Long.valueOf(RandomUtil.randomInt(3, 5)); Thread.sleep(c * 1000); - callBackAisino(finalQueryInvoiceBack,callBackUrl, invoice.getId()); + callBackAisino(finalQueryInvoiceBack, callBackUrl, invoice.getId()); } catch (InterruptedException e) { } @@ -429,7 +428,7 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer * @param callBackUrl * @param id */ - private void callBackAisino(InvoiceBack invoiceBack,String callBackUrl, Long id) { + private void callBackAisino(InvoiceBack invoiceBack, String callBackUrl, Long id) { // TODO: 2023/10/27 回调处理 @@ -451,21 +450,21 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer log.info("【控制台】发票回调接口,发送数据结束,id={},接口返回信息={}", id, result); cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(result); - if(jsonObject != null){ - String status = jsonObject.get("Result") != null ? jsonObject.get("Result").toString():""; - String message = jsonObject.get("Message")!= null ? jsonObject.get("Message").toString():""; + if (jsonObject != null) { + String status = jsonObject.get("Result") != null ? jsonObject.get("Result").toString() : ""; + String message = jsonObject.get("Message") != null ? jsonObject.get("Message").toString() : ""; - if("0000".equals(status)){ + if ("0000".equals(status)) { invoiceBack.setStatus("1"); invoiceBack.setBackMsg(message); invoiceBackMapper.updateInvoiceBack(invoiceBack); - }else if("9999".equals(status)){ + } else if ("9999".equals(status)) { invoiceBack.setStatus("3"); invoiceBack.setBackMsg(message); invoiceBackMapper.updateInvoiceBack(invoiceBack); - }else { + } else { invoiceBack.setStatus("2"); - invoiceBack.setBackMsg(status+message); + invoiceBack.setBackMsg(status + message); invoiceBackMapper.updateInvoiceBack(invoiceBack); } } @@ -889,7 +888,7 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer String fjh = companyserviceDetailList.get(0).getFjh(); // 组装报文 - AisinoConsoleInvoiceRedDownloadDTO downloadDTO = BeanUtil.copyProperties(downloadRedInfoDTO,AisinoConsoleInvoiceRedDownloadDTO.class); + AisinoConsoleInvoiceRedDownloadDTO downloadDTO = BeanUtil.copyProperties(downloadRedInfoDTO, AisinoConsoleInvoiceRedDownloadDTO.class); downloadDTO.setYQZT("N"); downloadDTO.setXXBFW("0"); downloadDTO.setPAGENO("1"); @@ -924,7 +923,65 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer throw new JianshuiServiceException(ajaxResult.getMsg()); } - cn.hutool.json.JSONObject resultJSON = JSONUtil.parseObj(ajaxResult.get("data")); + /** sb控制台和文档不一样*/ + String retdata = ajaxResult.get("data") != null ? ajaxResult.get("data").toString() : ""; + if (StrUtil.isEmpty(retdata)) { + return new HXResponse("9999", "下载失败"); + } + String FPXT_COM_OUTPUT = JSONUtil.parseObj(retdata).get("FPXT_COM_OUTPUT") != null ? + JSONUtil.parseObj(retdata).get("FPXT_COM_OUTPUT").toString() : ""; + if (StrUtil.isEmpty(retdata)) { + return new HXResponse("9999", "下载失败"); + } + String data = JSONUtil.parseObj(FPXT_COM_OUTPUT).get("DATA") != null ? + JSONUtil.parseObj(FPXT_COM_OUTPUT).get("DATA").toString() : ""; + + if (StrUtil.isNotEmpty(data)) { + System.out.println("存在"); + System.out.println(data); + if (StrUtil.isNotEmpty(data)) { +// Map map = new HashMap<>(); + data = Base64.decodeStr(data, "GB2312"); + + if (data.indexOf("") != -1 && data.indexOf("") != -1) { + String dataChild = data.substring(data.indexOf("") + 6, data.indexOf("")); + + + cn.hutool.json.JSONObject dataChildJson = JSONUtil.parseObj(dataChild); + String RedInvReqBill = dataChildJson.get("RedInvReqBill").toString(); + + // TODO: 2023/11/4 这里处理 +// cn.hutool.json.JSONArray jsonArray = JSONUtil.parseArray(RedInvReqBill); + + cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(RedInvReqBill); + JSONArray jsonArray1 = new JSONArray(); + jsonArray1.add(jsonObject); + + // 拿到最终报文 +// List downloadJdcVOList = BeanUtil.copyToList(jsonArray, DownloadJdcVO.class); + List downloadJdcVOList = BeanUtil.copyToList(jsonArray1, DownloadJdcVO.class); + + // 解析 + List red = null; + try { + red = parseRedinfo(downloadJdcVOList); + } catch (Exception e) { + log.info("红字信息表税局解密错误:{}", e); + return new HXResponse("9999", "系统异常!!!"); + } + + return new HXResponse("0000", red); + + } + } + + } + + return new HXResponse("9999", "系统错误!"); + +// ajaxResult.get("data") != null ? JSONUtil.parseObj(ajaxResult.get("data")).get("FPXT_COM_OUTPUT") + + /* cn.hutool.json.JSONObject resultJSON = JSONUtil.parseObj(ajaxResult.get("data")); String retcode = resultJSON.get("retcode") != null ? resultJSON.get("retcode").toString() : ""; String retmsg = resultJSON.get("retmsg") != null ? resultJSON.get("retmsg").toString() : ""; String retdata = resultJSON.get("retdata") != null ? resultJSON.get("retdata").toString() : ""; @@ -971,16 +1028,53 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer return new HXResponse("9999",retmsg); }else{ return new HXResponse("9999",retmsg); - } + }*/ } + + public static void main(String[] args) { + String aa = "{\"ReqBillNo\":\"661824626856231102101257\",\"ResBillNo\":4109222311000083,\"StatusDM\":\"TZD0000\",\"StatusMC\":\"审核通过\",\"BillType\":0,\"TypeCode\":\"0000000000\",\"InvNo\":\"00000000\",\"Szlb\":1,\"IsMutiRate\":0,\"Date\":\"2023-11-02\",\"BuyerName\":\"河南首发汽车销售服务有限公司\",\"BuyTaxCode\":\"91410922MA455KT3X6\",\"BuyerAdd\":\"\",\"BuyerBank\":\"\",\"SellerName\":\"中国重汽集团济南商用车有限公司\",\"SellTaxCode\":\"9137010072624213XP\",\"Amount\":-246902.65,\"TaxRate\":0.13,\"Tax\":-32097.35,\"ReqMemo\":\"Y\",\"SPBMBBH\":50,\"SLBZ\":0,\"YDDK\":\"\",\"DKBDBS\":\"\",\"Tspz\":\"\",\"Xhqdbz\":\"N\",\"RedInvReqBillMx\":{\"GoodsMx\":{\"GoodsName\":\"*机动车*销售折让\",\"GoodsUnit\":\"\",\"GoodsPrice\":\"\",\"GoodsTaxRate\":0.13,\"GoodsGgxh\":\"\",\"GoodsNum\":\"\",\"GoodsJE\":-246902.65,\"GoodsSE\":-32097.35,\"HS_BZ\":\"N\",\"SPBM\":1090305040000000000,\"QYSPBM\":\"004\",\"SYYHZCBZ\":0,\"YHZC\":\"\",\"LSLBZ\":\"\"}}}"; + cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(aa); + JSONArray jsonArray1 = new JSONArray(); + jsonArray1.add(jsonObject); + + // 拿到最终报文 +// List downloadJdcVOList = BeanUtil.copyToList(jsonArray, DownloadJdcVO.class); + List downloadJdcVOList = BeanUtil.copyToList(jsonArray1, DownloadJdcVO.class); + + // 解析 + List redinfoList = null; + try { + redinfoList = new ArrayList<>(); + + for (DownloadJdcVO downloadJdcVO : downloadJdcVOList) { + RedinfoCopyAisinoVO redinfoCopyAisinoVO = BeanUtil.copyProperties(downloadJdcVO, RedinfoCopyAisinoVO.class); + + // 明细处理 + if (!CollectionUtils.isEmpty(downloadJdcVO.getRedInvReqBillMx()) && !CollectionUtils.isEmpty(downloadJdcVO.getRedInvReqBillMx().get(0).getGoodsMx())) { + List downloadJdcDetailItemVOS = downloadJdcVO.getRedInvReqBillMx().get(0).getGoodsMx(); + List redinfodetailAisinoVOList = BeanUtil.copyToList(downloadJdcDetailItemVOS, RedinfodetailAisinoVO.class); + redinfoCopyAisinoVO.setRedinfodetailList(redinfodetailAisinoVOList); + } + + // 返回转换 + Redinfo redinfo = BeanUtil.copyProperties(BeanToMapUtils.fastJsonBean2Map(redinfoCopyAisinoVO), Redinfo.class); + redinfoList.add(redinfo); + } + System.out.println(redinfoList); + } catch (Exception e) { + log.info("红字信息表税局解密错误:{}", e); +// return new HXResponse("9999", "系统异常!!!"); + } + +// return new HXResponse("0000", red); + } /** - * @author kk - * @date 15:25 - * @param: [downloadJdcVOList] - * @return: - * 红字信息表下载报文转换 - */ + * @author kk + * @date 15:25 + * @param: [downloadJdcVOList] + * @return: 红字信息表下载报文转换 + */ private List parseRedinfo(List downloadJdcVOList) { List redinfoList = new ArrayList<>(); @@ -989,9 +1083,9 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer RedinfoCopyAisinoVO redinfoCopyAisinoVO = BeanUtil.copyProperties(downloadJdcVO, RedinfoCopyAisinoVO.class); // 明细处理 - if(!CollectionUtils.isEmpty(downloadJdcVO.getRedInvReqBillMx()) && !CollectionUtils.isEmpty(downloadJdcVO.getRedInvReqBillMx().get(0).getGoodsMx())){ + if (!CollectionUtils.isEmpty(downloadJdcVO.getRedInvReqBillMx()) && !CollectionUtils.isEmpty(downloadJdcVO.getRedInvReqBillMx().get(0).getGoodsMx())) { List downloadJdcDetailItemVOS = downloadJdcVO.getRedInvReqBillMx().get(0).getGoodsMx(); - List redinfodetailAisinoVOList = BeanUtil.copyToList(downloadJdcDetailItemVOS,RedinfodetailAisinoVO.class); + List redinfodetailAisinoVOList = BeanUtil.copyToList(downloadJdcDetailItemVOS, RedinfodetailAisinoVO.class); redinfoCopyAisinoVO.setRedinfodetailList(redinfodetailAisinoVOList); } @@ -1151,10 +1245,10 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer @Override public HXResponse exportVehicleInvoice(JSONObject decryptResult, Companyservice companyservice) { - ExportVehicleDTO exportVehicleDTO = BeanUtil.copyProperties(decryptResult,ExportVehicleDTO.class); + ExportVehicleDTO exportVehicleDTO = BeanUtil.copyProperties(decryptResult, ExportVehicleDTO.class); - if(BeanUtil.isEmpty(exportVehicleDTO)){ - return new HXResponse("9999","请求参数为空!"); + if (BeanUtil.isEmpty(exportVehicleDTO)) { + return new HXResponse("9999", "请求参数为空!"); } // 机动车加密导出路径配置 @@ -1169,13 +1263,13 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer } catch (Exception e) { log.error("【销项发票】【总部控制台接口】【机动车加密】机动车加密文件导出请求异常,请求报文{},销方信息{}", JSONUtil.parse(decryptResult).toString(), JSONObject.toJSONString(companyservice)); e.printStackTrace(); - return new HXResponse("9999","系统异常!"); + return new HXResponse("9999", "系统异常!"); } log.info("【销项发票】【总部控制台发票】机动车加密文件导出结果{}", ajaxResult.toString()); //返回报文解析 if (ajaxResult.isError()) { - return new HXResponse("9999",ajaxResult.getMsg()); + return new HXResponse("9999", ajaxResult.getMsg()); } cn.hutool.json.JSONObject resultJSON = JSONUtil.parseObj(ajaxResult.get("data")); @@ -1189,7 +1283,7 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer if (secretIdProp == null || StrUtil.isEmpty(secretIdProp.getValue())) { log.info("【销项发票】【总部控制台发票-机动车加密】推送nginx地址未配置!aisino_nginx_url"); - return new HXResponse("9999","推送中间件地址未配置!"); + return new HXResponse("9999", "推送中间件地址未配置!"); } String downloadUrl = secretIdProp.getValue(); @@ -1197,7 +1291,7 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer cn.hutool.json.JSONObject queryDto = JSONUtil.parseObj(json); if (queryDto == null) { log.info("【销项发票】【总部控制台发票-机动车加密】查询条件未获取到!"); - return new HXResponse("9999","查询条件未获取到!"); + return new HXResponse("9999", "查询条件未获取到!"); } String indexPage = null; @@ -1205,7 +1299,7 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer indexPage = HttpUtil.get(downloadUrl); } catch (Exception e) { log.info("【销项发票】【总部控制台发票-机动车加密】{}", e); - return new HXResponse("9999","中间件读取失败!"); + return new HXResponse("9999", "中间件读取失败!"); } String startDate = queryDto.get("KSRQ") != null ? queryDto.get("KSRQ").toString().replace("-", ".") : ""; @@ -1244,12 +1338,12 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer // InputStream is = new ByteArrayInputStream(fileStream.getBytes()); CompanyserviceProp qyjc = companyserviceProp.selectPropByKey(companyservice.getCompanyid(), "aisino_qyjc"); - if(qyjc == null || StrUtil.isEmpty(qyjc.getValue())){ - return new HXResponse("9999","重汽推送企业简称未设置!"); + if (qyjc == null || StrUtil.isEmpty(qyjc.getValue())) { + return new HXResponse("9999", "重汽推送企业简称未设置!"); } CompanyserviceProp zdr = companyserviceProp.selectPropByKey(companyservice.getCompanyid(), "aisino_zdr"); - if(zdr == null || StrUtil.isEmpty(zdr.getValue())){ - return new HXResponse("9999","重汽推送制单人未设置!"); + if (zdr == null || StrUtil.isEmpty(zdr.getValue())) { + return new HXResponse("9999", "重汽推送制单人未设置!"); } // 调用重汽的推送接口 @@ -1260,12 +1354,12 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer CompanyserviceProp pushUrl = companyserviceProp.selectPropByKey(companyservice.getCompanyid(), "aisino_upload_url"); if (pushUrl == null || StrUtil.isEmpty(pushUrl.getValue())) { - return new HXResponse("9999","重汽推送机动车地址未设置!"); + return new HXResponse("9999", "重汽推送机动车地址未设置!"); } String retCode = null; String retMsg = null; try { - log.info("【机动车加密接口推送】请求内容:{}",paramMap); + log.info("【机动车加密接口推送】请求内容:{}", paramMap); // String result = HttpUtil.post(pushUrl.getValue(), paramMap); String result = HttpRequest.post(pushUrl.getValue()) .form(paramMap)//表单内容 @@ -1276,7 +1370,7 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer retCode = jsonObject.get("retCode") != null ? jsonObject.get("retCode").toString() : ""; retMsg = jsonObject.get("retMsg") != null ? jsonObject.get("retMsg").toString() : ""; } catch (Exception e) { - log.info("【机动车加密接口推送】超时,{}",e); + log.info("【机动车加密接口推送】超时,{}", e); return new HXResponse("9999", "推送接口超时!"); } // 重汽返回接口信息 @@ -1293,13 +1387,12 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer } /** - * @author kk - * @date 17:42 - * @param: [in] - * @return: - * 机动车加密导出-文件转化本地 - */ - public static File stream2file (InputStream in) throws IOException { + * @author kk + * @date 17:42 + * @param: [in] + * @return: 机动车加密导出-文件转化本地 + */ + public static File stream2file(InputStream in) throws IOException { final File tempFile = File.createTempFile(PREFIX, SUFFIX); tempFile.deleteOnExit(); try (FileOutputStream out = new FileOutputStream(tempFile)) { diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/JcskTest.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/JcskTest.java index bae30ee..654ee6c 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/JcskTest.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/JcskTest.java @@ -119,6 +119,8 @@ public class JcskTest { " }\n" + "}"; + + /* order = "{ \n" + " \"appkey\": \"935248bf224f6c8431cdc1969f029519\",\n" + " \"async\": false,\n" + @@ -297,6 +299,15 @@ public class JcskTest { " \"requestId\": \"20230816@385a441d-4095-4bf5-aad5-45da817d790c\",\n" + " \"serviceId\": \"tycxjk\"\n" + "}"; + order = "{\n" + + " \"appkey\": \"935248bf224f6c8431cdc1969f029519\",\n" + + " \"dqbm\":\"beijing\",\n" + + " \"async\": false,\n" + + " \"bsrysfzjhm\":\"370404199302011453\",\n" + + " \"nsrsbh\": \"92370214MACAAEK16E\",\n" + + " \"requestId\": \"20230816@385a441d-4095-4bf5-aad5-45da817d790c\",\n" + + " \"serviceId\": \"tycxjk\"\n" + + "}"; // System.out.println(order); diff --git a/jianshui-invoice/src/main/resources/mapper/invoice/InvoiceBackMapper.xml b/jianshui-invoice/src/main/resources/mapper/invoice/InvoiceBackMapper.xml index 79777ea..c685af7 100644 --- a/jianshui-invoice/src/main/resources/mapper/invoice/InvoiceBackMapper.xml +++ b/jianshui-invoice/src/main/resources/mapper/invoice/InvoiceBackMapper.xml @@ -12,10 +12,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + - select id, system_orderno, status, back_url, identity, create_time, back_msg from invoice_back + select id, system_orderno, status, back_url, identity, create_time, back_msg,result_msg,result_code,update_time from invoice_back @@ -44,6 +50,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" identity, create_time, back_msg, + result_msg, + result_code, + update_time, #{id}, @@ -53,6 +62,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{identity}, #{createTime}, #{backMsg}, + #{resultMsg}, + #{resultCode}, + #{updateTime}, @@ -65,6 +77,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" identity = #{identity}, create_time = #{createTime}, back_msg = #{backMsg}, + result_msg = #{resultMsg}, + resultCode = #{resultCode}, + update_time = #{updateTime}, where id = #{id}