From 9718646a67e810eb599fcb3c9366ae9591145e98 Mon Sep 17 00:00:00 2001 From: kk <1910333201@qq.com> Date: Mon, 25 Sep 2023 10:30:44 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=A2=E5=AD=97=E7=A1=AE=E8=AE=A4=E5=8D=95?= =?UTF-8?q?=E7=94=B3=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../http/invoice/v1/InvoiceController.java | 6 +- .../dto/api/elephant/sd/HZQRDMXLIST.java | 47 ++++++ .../domain/dto/api/elephant/sd/RedUpload.java | 86 +++++++++++ .../api/ElephantInvoiceApiV6ServiceImpl.java | 134 +++++++----------- jianshui-queue/pom.xml | 2 + 5 files changed, 188 insertions(+), 87 deletions(-) create mode 100644 jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/elephant/sd/HZQRDMXLIST.java create mode 100644 jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/elephant/sd/RedUpload.java 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 0889552..14a216a 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 @@ -1403,7 +1403,7 @@ public class InvoiceController { } /** 大象数电V6 */ - /** 生成动态二维码接口 */ + /** 生成动态二维码接口 (扫码开票)*/ @ApiImplicitParams({ @ApiImplicitParam(name = "identity", value = "身份认证", dataType = "java.lang.Void", example = "1130", required = true), @ApiImplicitParam(name = "order", value = "请求体", dataType = "java.lang.Void", required = true)}) @@ -1501,7 +1501,7 @@ public class InvoiceController { /** 红字确认单申请(数电专用) */ - @ApiImplicitParams({ +/* @ApiImplicitParams({ @ApiImplicitParam(name = "identity", value = "身份认证", dataType = "java.lang.Void", example = "1130", required = true), @ApiImplicitParam(name = "order", value = "请求体", dataType = "java.lang.Void", required = true)}) @PostMapping({"/api/invoice/v1/redConfirmationApply/{identity}", "/api/invoice/v1/redConfirmationApply"}) @@ -1530,7 +1530,7 @@ public class InvoiceController { return invoiceResponseService.response(result, companyservice, ""); - } + }*/ /** 红字确认单确认(数电专用) */ @ApiImplicitParams({ diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/elephant/sd/HZQRDMXLIST.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/elephant/sd/HZQRDMXLIST.java new file mode 100644 index 0000000..53f1dff --- /dev/null +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/elephant/sd/HZQRDMXLIST.java @@ -0,0 +1,47 @@ +package com.jianshui.invoice.domain.dto.api.elephant.sd; + + +import lombok.Data; + +/** + * 红字申请确认单-明细 + */ +@Data +public class HZQRDMXLIST { + + // 蓝字发票明细序号 + private String LZMXXH; + + // 序号 + private String XH; + + // 商品和服务税收分类合并编码 + private String SPHFWSSFLHBBM; + + // 项目名称 + private String XMMC; + + // 规格型号 + private String GGXH; + + // 单位 + private String DW; + + // 单价 + private String FPSPDJ; + + // 数量 + private String FPSPSL; + + // 金额 + private String JE; + + // 税率 + private String SLV; + + // 税额 + private String SE; + + + +} diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/elephant/sd/RedUpload.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/elephant/sd/RedUpload.java new file mode 100644 index 0000000..a002c35 --- /dev/null +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/elephant/sd/RedUpload.java @@ -0,0 +1,86 @@ +package com.jianshui.invoice.domain.dto.api.elephant.sd; + + +import cn.hutool.core.annotation.Alias; +import lombok.Data; + +import java.util.List; + +/** + * 红字确认单申请 + */ +@Data +public class RedUpload { + + + // 录入方身份 + @Alias("sqlb") + private String LRFSF; + + @Alias("sellerTaxnum") + // 销售方纳税人识别号 + private String XSFNSRSBH; + + @Alias("sellerName") + // 销售方名称 + private String XSFMC; + + @Alias("buyerTaxnum") + // 购买方纳税人识别号 + private String GMFNSRSBH; + + @Alias("buyerName") + // 购买方名称 + private String GMFMC; + + @Alias("originFpdm") + // 蓝字发票代码 + private String LZFPDM; + + @Alias("originFphm") + // 蓝字发票号码 + private String LZFPHM; + + // 是否纸质发票标志 + private String SFZZFPBZ; + + @Alias("originKprq") + // 蓝字发票开票日期 + private String LZKPRQ; + + // 蓝字发票合计金额 + private String LZHJJE; + + // 蓝字发票合计税额 + private String LZHJSE; + + // 蓝字发票票种代码 + private String LZFPPZDM; + + // 蓝字发票特定要素类型代码 + private String LZFPTDYSLXDM; + + // 数电蓝字发票号码 + private String LZFPQDHM; + + @Alias("taxamt") + // 红字冲销金额 + private String HZCXJE; + + @Alias("tax") + // 红字冲销税额 + private String HZCXSE; + + @Alias("applyRemark") + // 红字发票冲红原因代码 + private String CHYYDM; + + + + List HZQRDMXLIST; + + + + + +} diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/ElephantInvoiceApiV6ServiceImpl.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/ElephantInvoiceApiV6ServiceImpl.java index 93b4aa6..bc432f4 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/ElephantInvoiceApiV6ServiceImpl.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/ElephantInvoiceApiV6ServiceImpl.java @@ -30,6 +30,8 @@ import com.jianshui.invoice.domain.dto.adapter.response.RedInfoDTO; import com.jianshui.invoice.domain.dto.adapter.response.RedInfoDetailDTO; import com.jianshui.invoice.domain.dto.api.*; import com.jianshui.invoice.domain.dto.api.elephant.*; +import com.jianshui.invoice.domain.dto.api.elephant.sd.HZQRDMXLIST; +import com.jianshui.invoice.domain.dto.api.elephant.sd.RedUpload; import com.jianshui.invoice.domain.ele.EleNewMessage; import com.jianshui.invoice.domain.ele.EleOuterMessage; import com.jianshui.invoice.domain.ele.HZSQDMessage; @@ -1019,75 +1021,65 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { String fplxdm = ""; String invioceType = redinfo.getInvoiceType(); fplxdm = ElephantUtils.transElephantType(invioceType, 1); - // switch (invioceType) { - // case "p": - // fplxdm = "026"; - // break; - // case "c": - // fplxdm = "007"; - // break; - // case "s": - // fplxdm = "004"; - // break; - // case "b": - // fplxdm = "028"; - // break; - // case "j": - // fplxdm = "005"; - // throw new JianshuiParamErrorException("暂不支持的开票类型,请联系管理员!", companyservice, "invoice"); - // case "u": - // fplxdm = "006"; - // throw new JianshuiParamErrorException("暂不支持的开票类型,请联系管理员!", companyservice, "invoice"); - // case "r": - // default: - // throw new JianshuiParamErrorException("暂不支持的开票类型,请联系管理员!", companyservice, "invoice"); - // } - - ElephatRedInfoDTO elephatRedInfoDTO = new ElephatRedInfoDTO(); - - // 配置头信息 - HZSQDSCPC HZSQDSCPC = new HZSQDSCPC(); - // HZSQDSCPC.setSQBSCQQPCH(IdUtils.randomSystemOrderno()); // "申请表上传请求批次号", - HZSQDSCPC.setSQBSCQQPCH(redinfo.getOutTradeOrderno()); // "申请表上传请求批次号", // 大象要求如果只有一条申请信息,上传批次号必须和上传流水号一直,就是上传单号 - HZSQDSCPC.setNSRSBH(redinfo.getSellerTaxnum()); // "申请方纳税人识别号", - HZSQDSCPC.setKPZD(redinfo.getTerminalNumber()); // "开票终端", - HZSQDSCPC.setFPLXDM(fplxdm); // "发票类型代码", - HZSQDSCPC.setSQLB(Integer.toString(redinfo.getSqlb())); // "申请类别,0 为销方申请,1 为购方申请", - // HZSQDSCPC.setKZZD(); // "扩展字段" - elephatRedInfoDTO.setHZSQDSCPC(HZSQDSCPC); - // TODO 处理税额、不含税金额、含税金额 + RedUpload redUpload = BeanUtil.copyProperties(redinfo,RedUpload.class); - // 配置订单头信息 - HZSQDTXX HZSQDTXX = new HZSQDTXX(redinfo); + // 报文组装 + Invoice invoice = invoiceMapper.selectByFpdmFphm(companyservice.getCompanyid(),redinfo.getOriginFpdm(),redinfo.getOriginFphm()); + if(BeanUtil.isEmpty(invoice)){ + return new HXResponse("009999", "未查询到原蓝字发票信息!"); + } + // 蓝字发票信息补全 + redUpload.setLZHJJE(String.valueOf(invoice.getTaxfreeamt())); + redUpload.setLZHJSE(String.valueOf(invoice.getTax())); + redUpload.setLZFPPZDM(invoice.getInvoiceType()); + redUpload.setLZFPTDYSLXDM(invoice.getTdyslxdm()); + redUpload.setLZFPQDHM(invoice.getFphm()); + // TODO: 2023/9/22 是否纸质发票这里判断一下 + redUpload.setSFZZFPBZ("Y"); - // 配置订单明细 - List myRedinfodetailList = redinfo.getRedinfodetailList(); - List ddmxxxList = new ArrayList<>(); - for (int i = 0; i < myRedinfodetailList.size(); i++) { - Redinfodetail temp = myRedinfodetailList.get(i); - DDMXXX DDMXXX = new DDMXXX(temp); - ddmxxxList.add(DDMXXX); + List invoiceDetail = invoice.getInvoiceDetailList(); + if(CollectionUtils.isEmpty(invoiceDetail)){ + return new HXResponse("009999", "未查询到原蓝字发票明细信息!"); } - elephatRedInfoDTO.setHZSQDSCPC(HZSQDSCPC); + List hzqrdmxlistList = new ArrayList<>(); + for (InvoiceDetail detail : invoiceDetail) { - List HZSQDSCZXXList = new ArrayList<>(); - HZSQDSCZXX HZSQDSCZXX = new HZSQDSCZXX(); - HZSQDSCZXX.setHZSQDTXX(HZSQDTXX); - HZSQDSCZXX.setDDMXXX(ddmxxxList); - HZSQDSCZXXList.add(HZSQDSCZXX); - elephatRedInfoDTO.setHZSQDSCZXX(HZSQDSCZXXList); + // 根据蓝字发票组装报文 + HZQRDMXLIST hzqrdmxlist = new HZQRDMXLIST(); + hzqrdmxlist.setLZMXXH(String.valueOf(detail.getIndex())); + hzqrdmxlist.setXH(String.valueOf(detail.getIndex())); + hzqrdmxlist.setSPHFWSSFLHBBM(detail.getSpbm()); + hzqrdmxlist.setXMMC(detail.getGoodName()); + hzqrdmxlist.setGGXH(detail.getSpec()); + hzqrdmxlist.setDW(detail.getUnit()); + hzqrdmxlist.setFPSPDJ(String.valueOf(detail.getPrice())); + hzqrdmxlist.setFPSPSL(String.valueOf(detail.getNum())); + hzqrdmxlist.setJE(String.valueOf(detail.getTaxfreeamt())); + hzqrdmxlist.setSLV(String.valueOf(detail.getTaxrate())); + hzqrdmxlist.setSE(String.valueOf(detail.getTax())); - // AjaxResult queryResult = ElephantUtils.sendRequest(ElephantConstantsV6.REDINFO_UPLOAD, JSONUtil.parse(elephatRedInfoDTO)); - AjaxResult queryResult = null; + hzqrdmxlistList.add(hzqrdmxlist); + } + redUpload.setHZQRDMXLIST(hzqrdmxlistList); + + DxhyInterfaceResponse dxhyInterfaceResponse = null; try { - queryResult = ElephantUtils.sendRequestWithoutToken(ElephantConstantsV6.REDINFO_UPLOAD_LOCALHOST, ElephantConstantsV6.REDINFO_UPLOAD_METHOD, JSONUtil.parse(elephatRedInfoDTO), companyservice); + dxhyInterfaceResponse = ElephantUtils.sendRequestWithoutTokenV6(ElephantConstantsV6.RED_CONFIRMATION_LOCALHOST, ElephantConstantsV6.RED_CONFIRMATION_METHOD, JSONUtil.parse(redUpload), companyservice); } catch (UnsupportedEncodingException | InvalidKeyException | NoSuchAlgorithmException e) { - log.error("【销项发票】【大象接口】【红字信息表上传】发票请求异常,请求报文{},销方信息{}", JSONUtil.parse(elephatRedInfoDTO).toString(), JSONObject.toJSONString(companyservice)); + log.error("【销项发票】【大象接口】【数电】【红字确认单申请】发票请求异常,请求报文{},销方信息{}", JSONUtil.toJsonStr(redUpload), JSONObject.toJSONString(companyservice)); e.printStackTrace(); - throw new JianshuiServiceException("系统异常!"); + return new HXResponse("009999", "系统异常!"); } + + // 组装通用报文 + AjaxResult queryResult = null; + queryResult.put("code",dxhyInterfaceResponse.getCode()); + queryResult.put("data",dxhyInterfaceResponse.getData()); + queryResult.put("msg",dxhyInterfaceResponse.getMessage()); + + log.info("【销项发票】【大象发票】红字信息表上传请求结果{}", queryResult.toString()); // 判断外层报文是否成功 @@ -1120,32 +1112,6 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { return new HXResponse(contentJson.getString("ZTXX")); } - // if (!StringUtils.equals("060000", ztdm) && !StringUtils.equals("060001", ztdm)) { - // redinfo.setRedInfoStatus("2"); - // redinfo.setRedInfoMessage(contentJson.getString("ZTXX")); - // redinfoMapper.updateRedinfo(redinfo); - // return new HXResponse(contentJson.getString("ZTXX")); - // } - - // 红字信息表成功报文 - /** - * { - * "msg": "操作成功", - * "code": 200, - * "data": { - * "ZTXX": "成功", - * "SQBSCQQPCH": "d899831373174d9a8bf71e76f0dd030c", - * "ZTDM": "0000", - * "HZSQDSCJG": [{ - * "ZTXX": "审核通过", - * "SQBSCQQLSH": "fce79f2be4c143438eb5e095bfbd5f81", - * "SQDH": "661505060963220417171834", - * "XXBBH": "5001012204024900", - * "ZTDM": "TZD0000" - * }] - * } - * } - */ // HZSQDSCJG内部状态diamante JSONArray hzsqdscjg = contentJson.getJSONArray("HZSQDSCJG"); diff --git a/jianshui-queue/pom.xml b/jianshui-queue/pom.xml index d9aff39..745badc 100644 --- a/jianshui-queue/pom.xml +++ b/jianshui-queue/pom.xml @@ -44,4 +44,6 @@ 8 + + \ No newline at end of file