From 26f0df269d2cfc6ed4d48c3d9ed26245af8c1ae3 Mon Sep 17 00:00:00 2001 From: kk <1910333201@qq.com> Date: Tue, 31 Oct 2023 16:51:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A7=E5=88=B6=E5=8F=B0-=E7=BA=A2=E5=AD=97?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E8=A1=A8=E4=B8=8B=E8=BD=BD=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/vo/RedinfoCopyAisinoVO.java | 330 ++++++++++++++++++ .../domain/vo/RedinfodetailAisinoVO.java | 190 ++++++++++ .../console/DownloadJdcDetailItemVO.java | 1 + .../AisinoInvoiceRequestAdapterImpl.java | 2 +- ...noConsoleInvoiceApiZhongQiServiceImpl.java | 85 +++-- 5 files changed, 586 insertions(+), 22 deletions(-) create mode 100644 jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/RedinfoCopyAisinoVO.java create mode 100644 jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/RedinfodetailAisinoVO.java 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 new file mode 100644 index 0000000..93d5ca2 --- /dev/null +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/RedinfoCopyAisinoVO.java @@ -0,0 +1,330 @@ +package com.jianshui.invoice.domain.vo; + +import cn.hutool.core.annotation.Alias; +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.jianshui.common.annotation.Excel; +import com.jianshui.invoice.domain.Redinfodetail; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 红字信息表对象 redinfo转换专用 + * + * @author Gong Quanlin + * @date 2022-03-29 + */ + +@Data +public class RedinfoCopyAisinoVO { + + + /** + * 本系统订单号 + */ + @Excel(name = "本系统订单号") + private String systemOrderno; + + /** + * 客户系统订单号 + */ + @Excel(name = "客户系统订单号") + private String outTradeOrderno; + + /** + * 流水号 + */ + @Excel(name = "流水号") + private String fpqqlsh; + + /** + * bill_info表的bill_id + */ + @Excel(name = "bill_info表的bill_id") + private Long billInfoId; + + /** + * 信息表编号 + */ + @Alias("ReqBillNo") + @Excel(name = "信息表编号") + private String redInfoNo; + + /** + * 信息表状态 + */ + @Alias("statusDM") + @Excel(name = "信息表状态") + private String redInfoStatus; + + /** + * 信息表状态描述 + */ + @Alias("statusMC") + @Excel(name = "信息表状态描述") + private String redInfoMessage; + + /** + * 信息表类型 + */ + @Alias("billType") + @Excel(name = "信息表类型") + private String redInfoType; + + /** + * 原发票代码 + */ + @Alias("typeCode") + @Excel(name = "原发票代码") + private String originFpdm; + + /** + * 信息表特殊标识 + */ + @Excel(name = "信息表特殊标识") + private String redInfoSpecFlag; + + /** + * 原发票号码 + */ + @Alias("invNo") + @Excel(name = "原发票号码") + private String originFphm; + + /** + * 税种类别 + */ + @Alias("szlb") + @Excel(name = "税种类别") + private String taxType; + + /** + * 原发票开票日期 + */ + @Alias("lzkprq") + @Excel(name = "原发票开票日期") + private String originKprq; + + /** + * 多税率标志 + */ + @Alias("isMutiRate") + @Excel(name = "多税率标志") + private String multTaxRate; + + /** + * 填开日期 + */ + @Alias("date") + @Excel(name = "填开日期") + private String billInputTime; + + /** + * 购方名称 + */ + @Alias("buyerName") + @Excel(name = "购方名称") + private String buyerName; + + /** + * 购方税号 + */ + @Alias("buyerTaxCode") + private String buyerTaxnum; + + /** + * 销方名称 + */ + @Alias("sellerName") + @Excel(name = "销方名称") + private String sellerName; + + /** + * 销方税号 + */ + @Alias("sellTaxCode") + @Excel(name = "销方税号") + private String sellerTaxnum; + + /** + * 不含税金额 + */ + @Alias("amount") + @Excel(name = "不含税金额") + private BigDecimal taxfreeamt; + + /** + * 税额 + */ + @Alias("tax") + @Excel(name = "税额") + private BigDecimal tax; + + /** + * 含税金额 + */ + @Excel(name = "含税金额") + private BigDecimal taxamt; + + /** + * 申请说明 + */ + @Alias("reqMemo") + @Excel(name = "申请说明") + private String applyRemark; + + /** + * 申请表pdf 地址 + */ + @Excel(name = "申请表pdf 地址") + private String pdfUrl; + + /** + * 商品编码版本号 + */ + @Alias("spbmbbh") + @Excel(name = "商品编码版本号") + private String bmbbh; + + /** + * 营业税标志 + */ + @Excel(name = "营业税标志") + private String businessTaxCode; + + /** + * 申请时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "申请时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date applyTime; + + /** + * 发票种类 invoice_type( p电子增值税普通发票 c增值税普通发票 s 增值税专用发票 e 收购发票 f 收购发票 r增值税普通发票) + */ + @Alias("lzfplxdm") + @Excel(name = "发票种类 invoice_type", readConverterExp = "p=电子增值税普通发票,c=增值税普通发票,s=,增=值税专用发票,e=,收=购发票,f=,收=购发票,r=增值税普通发票") + private String invoiceType; + + /** + * 分机号 + */ + @Excel(name = "分机号") + private String fjh; + + /** + * 终端号 + */ + @Excel(name = "终端号") + private String terminalNumber; + + /** + * 设备编号 + */ + @Excel(name = "设备编号") + private String jspbh; + + /** + * 所属月份 + */ + @Excel(name = "所属月份") + private String ssyf; + + /** + * 税率 + */ + @Alias("taxRate") + @Excel(name = "税率") + private BigDecimal taxrate; + + /** + * 申请选择 + */ + + @Excel(name = "申请选择") + private String sqxz; + + /** + * 经办人 + */ + @Excel(name = "经办人") + private String jbr; + + /** + * 申请方税号 + */ + @Excel(name = "申请方税号") + private String reqnsrsbh; + + /** + * 成品油标志 + */ + @Excel(name = "成品油标志") + private String productOilFlag; + + /** + * 服务公司 + */ + @Excel(name = "服务公司") + private String serviceSupplierKey; + + /** + * 申请类别 + */ + @Alias("sqly") + @Excel(name = "申请类别") + private Integer sqlb; // 申请类别,0为销方申请,1为购方申请 + + @Excel(name = "回调地址") + private String callbackUrl; + + /** + * 红字信息表详情信息 + */ + @TableField(exist = false) + private List redinfodetailList; + + @TableField(exist = false) + @JsonIgnore + private String searchValue; + + @TableField(exist = false) + @JsonIgnore + private String remark; + + /** 数科新加字段**/ + + @Alias("hzfphm") + @Excel(name = "红字发票号码") + private String fphm; + + @Alias("hzkprq") + @Excel(name = "红字发票开票日期") + private String kprq; + + @Alias("hzfpxxqrdid") + @Excel(name = "红字发票信息确认单id") + private String hzfpxxqrdid; + + @Alias("hzhjje") + @Excel(name = "红字合计金额") + private String hzhjje; + + @Alias("hzhjse") + @Excel(name = "红字合计税额") + private String hzhjse; + + @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 new file mode 100644 index 0000000..543b6c0 --- /dev/null +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/RedinfodetailAisinoVO.java @@ -0,0 +1,190 @@ +package com.jianshui.invoice.domain.vo; + +import cn.hutool.core.annotation.Alias; +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.jianshui.common.annotation.Excel; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.Map; + +/** + * 红字信息表详情对象 redinfodetail + * + * @author Gong Quanlin + * @date 2022-03-29 + */ +@Data +public class RedinfodetailAisinoVO { + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + private Long id; + + /** + * redinfo表的id + */ + @Excel(name = "redinfo表的id") + private Long redinfoId; + + /** + * 申请单号 + */ + @Excel(name = "申请单号") + private String billno; + + /** + * $column.columnComment + */ + @Excel(name = "序号", readConverterExp = "$column.readConverterExp()") + private Integer index; + + + /** + * 商品名称 + */ + @Excel(name = "商品名称") + private String goodName; + + @Alias("goodsUnit") + /** + * 单位 + */ + @Excel(name = "单位") + private String unit; + + /** + * 规格型号 + */ + @Alias("goodsGgxh") + @Excel(name = "规格型号") + private String spec; + + /** + * 商品数量 + */ + @Alias("goodsNum") + @Excel(name = "商品数量") + private BigDecimal num; + + /** + * 商品单价,不含税 + */ + @Alias("goodsPrice") + @Excel(name = "商品单价,不含税") + private BigDecimal price; + + /** + * 不含税金额 + */ + @Alias("goodsJE") + @Excel(name = "不含税金额") + private BigDecimal taxfreeamt; + + /** + * 税率 + */ + @Alias("goodsTaxRate") + @Excel(name = "税率") + private BigDecimal taxrate; + + /** + * 税额 + */ + @Alias("goodsSE") + @Excel(name = "税额") + private BigDecimal tax; + + /** + * 含税金额 + */ + @Excel(name = "含税金额") + private BigDecimal taxamt; + + /** + * 税收分类编码 + */ + @Excel(name = "税收分类编码") + private String spbm; + + /** + * 商品编码版本号 + */ + @Excel(name = "商品编码版本号") + private String bmbbh; + + /** + * 优惠政策标识,0不使用,1使用 + */ + @Alias("syyhzcbz") + @Excel(name = "优惠政策标识,0不使用,1使用") + private Integer yhzcbs; + + /** + * 增值税特殊管理(优惠政策表示名称) + */ + @Excel(name = "增值税特殊管理", readConverterExp = "优=惠政策表示名称") + private String zzstsgl; + + /** + * 零税率标识,1=免税,2=不征税,3=普通零税率 + */ + @Alias("LSLBZ") + @Excel(name = "零税率标识,1=免税,2=不征税,3=普通零税率") + private String lslbs; + + /** + * 商品编码简称 + */ + @Excel(name = "商品编码简称") + private String goodAbbreviation; + + /** + * 发票行性质 + */ + @Excel(name = "发票行性质") + private Integer fphxz; + + /** + * 扣除额 + */ + @Excel(name = "扣除额") + private BigDecimal kce; + + /** + * 修改时间 + */ + @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") + private String withTaxFlag; + + // 含税单价 + @TableField(exist = false) + @JsonIgnore + private String priceWithTax; + + @TableField(exist = false) + @JsonIgnore + private String searchValue; + + @TableField(exist = false) + @JsonIgnore + private String remark; + + @TableField(exist = false) + @JsonIgnore + private Map params; + + +} 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 ad6ce58..5c203ed 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 @@ -1,5 +1,6 @@ package com.jianshui.invoice.domain.vo.api.aisino.console; +import cn.hutool.core.annotation.Alias; import lombok.Data; /** 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 95bffaa..69504ac 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 2066387..13eb488 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 @@ -32,7 +32,10 @@ import com.jianshui.invoice.domain.dto.api.aisino.console.*; import com.jianshui.invoice.domain.dto.api.aisino.console.vehicle.TaxEquipmentInfo; import com.jianshui.invoice.domain.dto.api.aisino.console.vehicle.VehicleInvoiceExpBo; import com.jianshui.invoice.domain.ele.EleNewMessage; +import com.jianshui.invoice.domain.vo.RedinfoCopyAisinoVO; +import com.jianshui.invoice.domain.vo.RedinfodetailAisinoVO; import com.jianshui.invoice.domain.vo.api.aisino.console.AisinoConsoleInvoiceAddVO; +import com.jianshui.invoice.domain.vo.api.aisino.console.DownloadJdcDetailItemVO; import com.jianshui.invoice.domain.vo.api.aisino.console.DownloadJdcVO; import com.jianshui.invoice.mapper.*; import com.jianshui.invoice.service.IInvoiceApiService; @@ -924,33 +927,46 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer 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() : ""; // 返回结果处理 if (!StringUtils.equals("0", retcode)) { + if(StrUtil.isNotEmpty(retdata)){ + // 返回结果解析。 + if(retdata.indexOf("") != -1 && retdata.indexOf("") != -1){ + System.out.println("存在"); + String data = retdata.substring(retdata.indexOf("") + 6,retdata.indexOf("")); + 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(); + cn.hutool.json.JSONArray jsonArray = JSONUtil.parseArray(RedInvReqBill); + + // 拿到最终报文 + List downloadJdcVOList = BeanUtil.copyToList(jsonArray,DownloadJdcVO.class); + + // 解析 + List red = null; + try { + red = parseRedinfo(downloadJdcVOList); + } catch (Exception e) { + log.info("红字信息表税局解密错误:{}",e); + return new HXResponse("9999","系统异常!!!"); + } + + return new HXResponse("0000",red); - // TODO: 2023/10/28 返回结果待解析。 - /*if(sss.indexOf("") != -1 && sss.indexOf("") != -1){ - System.out.println("存在"); - String data = sss.substring(sss.indexOf("") + 6,sss.indexOf("")); - 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(); - cn.hutool.json.JSONArray jsonArray = JSONUtil.parseArray(RedInvReqBill); - List downloadJdcVOList = BeanUtil.copyToList(jsonArray,DownloadJdcVO.class); - System.out.println(jsonArray); + } } - System.out.println(map); } - }*/ - + } return new HXResponse("9999",retmsg); }else{ @@ -958,7 +974,34 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer } } + /** + * @author kk + * @date 15:25 + * @param: [downloadJdcVOList] + * @return: + * 红字信息表下载报文转换 + */ + private List parseRedinfo(List downloadJdcVOList) { + + List 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); + } + + return redinfoList; + } /**