From 5bfe4d8a5cb8805941d70e4355d3ff606048352c Mon Sep 17 00:00:00 2001 From: dongxiaoke <1910333201@qq.com> Date: Fri, 31 Mar 2023 10:56:21 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=A2=E5=AD=97=E4=BF=A1=E6=81=AF=E8=A1=A8?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=90=88=E5=B9=B6=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/jcsk/SqhzJsonDataDetailTwoDTO.java | 10 ++ .../dto/api/jcsk/SqhzJsonDataTwoDTO.java | 7 + .../impl/api/JcskInvoiceApiServiceImpl.java | 135 ++++++++---------- 3 files changed, 76 insertions(+), 76 deletions(-) diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/SqhzJsonDataDetailTwoDTO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/SqhzJsonDataDetailTwoDTO.java index 293a27b..c54f731 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/SqhzJsonDataDetailTwoDTO.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/SqhzJsonDataDetailTwoDTO.java @@ -1,5 +1,6 @@ package com.jianshui.invoice.domain.dto.api.jcsk; +import cn.hutool.core.annotation.Alias; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -13,18 +14,22 @@ import javax.validation.constraints.NotEmpty; @Data public class SqhzJsonDataDetailTwoDTO { + @Alias("price") @NotEmpty @ApiModelProperty(value = "单价") private String dj; + @Alias("unit") @NotEmpty @ApiModelProperty(value = "单位") private String dw; + @Alias("spec") @NotEmpty @ApiModelProperty(value = "规格型号") private String ggxh; + @Alias("taxfreeamt") @NotEmpty @ApiModelProperty(value = "金额") private String je; @@ -33,22 +38,27 @@ public class SqhzJsonDataDetailTwoDTO { @ApiModelProperty(value = "蓝字明细序号") private String lzmxxh; + @Alias("tax") @NotEmpty @ApiModelProperty(value = "税额") private String se; + @Alias("num") @NotEmpty @ApiModelProperty(value = "数量") private String sl; + @Alias("taxrate") @NotEmpty @ApiModelProperty(value = "税率") private String slv; + @Alias("bmbbh") @NotEmpty @ApiModelProperty(value = "商品编码") private String spbm; + @Alias("goodName") @NotEmpty @ApiModelProperty(value = "商品名称") private String xmmc; diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/SqhzJsonDataTwoDTO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/SqhzJsonDataTwoDTO.java index 15fef5f..d32dba7 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/SqhzJsonDataTwoDTO.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/SqhzJsonDataTwoDTO.java @@ -1,5 +1,6 @@ package com.jianshui.invoice.domain.dto.api.jcsk; +import cn.hutool.core.annotation.Alias; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -14,10 +15,12 @@ import java.util.List; @Data public class SqhzJsonDataTwoDTO { + @Alias("applyRemark") @NotEmpty @ApiModelProperty(value = "冲红原因代码") private String chyydm; + @Alias("buyerTaxnum") @NotEmpty @ApiModelProperty(value = "购买方纳税人识别号") private String gmfnsrsbh; @@ -30,6 +33,7 @@ public class SqhzJsonDataTwoDTO { @ApiModelProperty(value = "红字合计税额") private String hzcxse; + @Alias("sqlb") @NotEmpty @ApiModelProperty(value = "申请来源") private String sqly; @@ -38,14 +42,17 @@ public class SqhzJsonDataTwoDTO { @ApiModelProperty(value = "特定要素类型代码(参考码表)") private String tdyslxdm; + @Alias("sellerTaxnum") @NotEmpty @ApiModelProperty(value = "销售方纳税人识别号") private String xsfnsrsbh; + @Alias("originFphm") @NotEmpty @ApiModelProperty(value = "原发票号码") private String yfphm; + @Alias("originKprq") @NotEmpty @ApiModelProperty(value = "原开票日期") private String ykprq; diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/JcskInvoiceApiServiceImpl.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/JcskInvoiceApiServiceImpl.java index eb064c2..89a3063 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/JcskInvoiceApiServiceImpl.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/JcskInvoiceApiServiceImpl.java @@ -1,4 +1,6 @@ package com.jianshui.invoice.service.impl.api; +import com.jianshui.invoice.domain.dto.api.jcsk.SqhzJsonDataDetailTwoDTO; +import com.jianshui.invoice.domain.dto.api.jcsk.SqhzJsonDataTwoDTO; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUtil; @@ -23,6 +25,7 @@ import com.jianshui.invoice.domain.*; import com.jianshui.invoice.domain.dto.*; import com.jianshui.invoice.domain.dto.api.aisino.console.*; import com.jianshui.invoice.domain.dto.api.jcsk.QueryTwoDTO; +import com.jianshui.invoice.domain.dto.api.jcsk.SqhzTwoDTO; import com.jianshui.invoice.domain.dto.api.jcsk.add.InvoiceAllAddInfoTwoDTO; import com.jianshui.invoice.domain.dto.api.jcsk.add.InvoiceAllAddTwoDTO; import com.jianshui.invoice.domain.dto.api.jcsk.add.InvoiceAllAddmxListTwoDTO; @@ -511,8 +514,7 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { @Override public HXResponse uploadRedInfo(Redinfo redinfo, Companyservice companyservice) { - // 前置处理 - redinfo.setCompanyId(companyservice.getCompanyid()); + // 前置处理 redinfo.setCompanyId(companyservice.getCompanyid()); redinfo.setSystemOrderno(IdUtils.randomSystemOrderno()); if (StringUtils.isEmpty(redinfo.getOutTradeOrderno())) { // 把 outTradeOrderno作为用户的申请单号 @@ -538,7 +540,6 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { int index = 0; String spbm = ""; - for (Redinfodetail detail : redinfodetailList) { detail.setBillno(redinfo.getRedInfoNo()); detail.setRedinfoId(redinfo.getId()); @@ -551,105 +552,87 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { spbm = detail.getSpbm(); } - // TODO: 2023/3/9 设备号是 jspbh 并非billNO? 申请方税号reqnsrsbh - // - redinfo.setJspbh("661024643068230218103524".substring(0, 12)); - redinfo.setReqnsrsbh("9113093067851155XY"); - redinfo.setFjh("123"); - redinfo.setMultTaxRate("0"); - redinfo.setBillInputTime("2022-11-11"); - redinfo.setBmbbh("2323232"); - redinfo.setTaxrate(new BigDecimal("0.03")); - // - redinfoMapper.batchRedinfodetail(redinfodetailList); - // 参数校验及参数处理 - AisinoConsoleInvoiceRedUploadDTO redUploadDTO = BeanUtil.copyProperties(redinfo, AisinoConsoleInvoiceRedUploadDTO.class); - // 填开日期 - redUploadDTO.setDate(redinfo.getBillInputTime()); - // 信息表类型 - redUploadDTO.setBillType("0"); - // TODO-dxk: 2023/2/27 含税、不含税金额 含税标志,这里需要确定 - // 合计金额计算 - redUploadDTO.setAmount(String.valueOf(taxfreeamt)); - // 含税税率标识 - redUploadDTO.setSLBZ("0"); - // 税种类别 - redUploadDTO.setSzlb("1"); - ValidateUtils.validate(redUploadDTO); - - - if (redinfo.getRedinfodetailList() == null || redinfo.getRedinfodetailList().size() == 0) { - return new HXResponse("格式校验失败,请上传明细信息!"); - } - - - String paramChild = ""; - List redUploadChildDTO = BeanUtil.copyToList(redinfo.getRedinfodetailList(), AisinoConsoleInvoiceRedUploadChildDTO.class); - for (AisinoConsoleInvoiceRedUploadChildDTO childDTO : redUploadChildDTO) { - // TODO-dxk: 2023/2/27 含税、不含税金额 - childDTO.setHS_BZ(childDTO.getHS_BZ().equals("false") ? "N" : "Y"); - - paramChild = "" + JSONUtil.toXmlStr(JSONUtil.parse(childDTO)) + " "; + // 金财数科数据处理 start + // 查询用户登记参数 + QueryWrapper yhdjQueryWrapper = new QueryWrapper<>(); + yhdjQueryWrapper.eq("nsrsbh", companyservice.getSellertax()); + yhdjQueryWrapper.eq("identity", companyservice.getIdentity()); + InvoiceAllYhdj invoiceAllYhdj = yhdjMapper.selectOne(yhdjQueryWrapper); - ValidateUtils.validate(childDTO); + if (BeanUtil.isEmpty(invoiceAllYhdj)) { + return new HXResponse("用户未登记!"); } - // 组装xml报文 - String param = JSONUtil.toXmlStr(JSONUtil.parse(redUploadDTO)); + SqhzTwoDTO sqhzDTO = BeanUtil.copyProperties(redinfo,SqhzTwoDTO.class); + sqhzDTO.setAsync("true"); + sqhzDTO.setBsrysfzjhm(invoiceAllYhdj.getBsrysfzjhm()); + sqhzDTO.setDqbm(invoiceAllYhdj.getDqbm()); + sqhzDTO.setNsrsbh(invoiceAllYhdj.getNsrsbh()); + ValidateUtils.validate(sqhzDTO); -// param = "\n" + - param = "" + - "\n" + - " \n" + - " " + param; + SqhzJsonDataTwoDTO sqhzJsonDataTwoDTO = BeanUtil.copyProperties(redinfo,SqhzJsonDataTwoDTO.class); + ValidateUtils.validate(sqhzJsonDataTwoDTO); - param = param + ""; + List sqhzJsonDataDetailTwoDTOS = BeanUtil.copyToList(redinfo.getRedinfodetailList(),SqhzJsonDataDetailTwoDTO.class); + for (SqhzJsonDataDetailTwoDTO sqhzJsonDataDetailTwoDTO : sqhzJsonDataDetailTwoDTOS) { + ValidateUtils.validate(sqhzJsonDataDetailTwoDTO); + } + sqhzJsonDataTwoDTO.setHzqrxxmxlist(sqhzJsonDataDetailTwoDTOS); + sqhzDTO.setJsonData(sqhzJsonDataTwoDTO); - param = param + paramChild; + cn.hutool.json.JSONObject result = null; + try { + result = ApiHttp.request(WebServiceConstant.SQHZFPXXQRD, WebServiceConstant.URL, sqhzDTO, companyservice); - param = param + " \n" + - " \n" + - " \n" + - ""; + String code = result.get("code") != null ? result.get("code").toString() : ""; + String msg = result.get("msg") != null ? result.get("msg").toString() : ""; + String data = result.get("data") != null ? result.get("data").toString() : ""; + if ("0000".equals(code) && StrUtil.isNotEmpty(data)) { + cn.hutool.json.JSONObject json = JSONUtil.parseObj(data); + String requestId = json.getOrDefault("requestId", "").toString(); + if (StrUtil.isEmpty(requestId)) { + return new HXResponse(msg); + } + InvoiceAllApiLog allApiLog = new InvoiceAllApiLog(); + allApiLog.setUrl(WebServiceConstant.SQHZFPXXQRD); + allApiLog.setSendMsg(sqhzDTO.toString()); + allApiLog.setResultMsg(JSONUtil.toJsonStr(result)); + allApiLog.setCompany(companyservice.getSellertax()); + allApiLog.setIdentityId(companyservice.getIdentity()); + allApiLog.setRequestId(requestId); + allApiLog.setCreateTime(new Date()); + allApiLogMapper.insertInvoiceAllApiLog(allApiLog); + + + HXResponse response = new HXResponse("0000", "申请成功"); + response.put("data",requestId); + return response; - //发起请求 - AjaxResult ajaxResult = null; - try { - ajaxResult = AisinoConsoleUtil.sendRequest(AisinoConsoleConstants.RED_UPLOAD, param, companyservice); + } else { + return new HXResponse(msg); + } } catch (Exception e) { - log.error("【销项发票】【总部控制台接口】【发票作废】发票请求异常,请求报文{},销方信息{}", "", JSONObject.toJSONString(companyservice)); e.printStackTrace(); - throw new JianshuiServiceException("系统异常!"); - } + log.error("【金四服务类】【金财数科】【申请红字信息表】API请求异常,外部报文返回code非0000。错误信息:{}", e.getMessage()); + return new HXResponse("通用查询接口异常"); - //返回报文解析 - if (ajaxResult.isError()) { - throw new JianshuiServiceException(ajaxResult.getMsg()); } - // todo-k: 返回报文解析这里还带看下具体的返回形式 - - 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() : ""; - - - if (!StringUtils.equals("0000", retcode)) { + /*if (!StringUtils.equals("0000", retcode)) { redinfo.setRedInfoStatus("2"); redinfo.setRedInfoMessage(retmsg); redinfoMapper.updateRedinfo(redinfo); return new HXResponse(retmsg); } - // TODO-dxk: 2023/2/27 看下 RedInfoStatus 0 1 2代表什么 redinfo.setRedInfoStatus("1"); redinfo.setRedInfoMessage(retmsg); redinfoMapper.updateRedinfo(redinfo); - return new HXResponse(retmsg); + return new HXResponse(retmsg);*/ } @Override