From cbe4e54a366b8855163a96fae8836079c9673cfa Mon Sep 17 00:00:00 2001 From: dongxiaoke <1910333201@qq.com> Date: Thu, 18 May 2023 14:22:58 +0800 Subject: [PATCH] =?UTF-8?q?=E9=94=80=E9=A1=B9=E5=90=88=E5=B9=B6=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=EF=BC=9A=E5=BF=AB=E9=80=9F=E7=BA=A2=E5=86=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/api/jcsk/CxhzJsonDataTwoDTO.java | 5 - .../domain/dto/api/jcsk/KshcTwoDTO.java | 1 - .../impl/api/JcskInvoiceApiServiceImpl.java | 92 ++++++++++++++++--- 3 files changed, 81 insertions(+), 17 deletions(-) diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/CxhzJsonDataTwoDTO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/CxhzJsonDataTwoDTO.java index 7e74961..5e320e7 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/CxhzJsonDataTwoDTO.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/CxhzJsonDataTwoDTO.java @@ -30,25 +30,20 @@ public class CxhzJsonDataTwoDTO { private String kprqz; @Alias("billNo") - @NotEmpty @ApiModelProperty(value = "红字发票信息确认单id") private String hzfpxxqrdid; @Alias("billInfoNo") - @NotEmpty @ApiModelProperty(value = "红字发票信息确认单编号") private String hzfpxxqrdbh; @Alias("originFphm") - @NotEmpty @ApiModelProperty(value = "蓝字发票号码") private String originFphm; - @NotEmpty @ApiModelProperty(value = "每页条数") private String pageSize; - @NotEmpty @ApiModelProperty(value = "页数") private String pageNumber; diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/KshcTwoDTO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/KshcTwoDTO.java index ecb6702..c496f6f 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/KshcTwoDTO.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/KshcTwoDTO.java @@ -29,7 +29,6 @@ public class KshcTwoDTO { @ApiModelProperty(value = "纳税人识别号") private String nsrsbh; - @NotEmpty private KshcJsonDataTwoDTO jsonData; 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 793d18c..eb0da61 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 @@ -339,8 +339,7 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { for (RedInvoiceQueryTWOVO redInvoiceQueryTWOVO : redInvoiceQueryTWOVOS) { RedinfoCopyVO redinfoVO = BeanUtil.copyProperties(redInvoiceQueryTWOVO, RedinfoCopyVO.class); - - Redinfo redinfo = BeanUtil.copyProperties(JSONUtil.parseObj(redinfoVO), Redinfo.class); + Redinfo redinfo = BeanUtil.copyProperties(BeanToMapUtils.fastJsonBean2Map(redinfoVO), Redinfo.class); // TODO: 2023/4/6 明细接口数科还没对 // redinfo.setRedinfodetailList(null); @@ -535,7 +534,8 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { cn.hutool.json.JSONObject result = null; try { - result = ApiHttp.request(WebServiceConstant.CXHZFPXXQRD, WebServiceConstant.URL, cxhzDTO, companyservice); + Map mapParam = BeanToMapUtils.fastJsonBean2Map(cxhzDTO); + result = ApiHttp.request(WebServiceConstant.CXHZFPXXQRD, WebServiceConstant.URL, mapParam, companyservice); String code = result.get("code") != null ? result.get("code").toString() : ""; String msg = result.get("msg") != null ? result.get("msg").toString() : ""; @@ -1004,8 +1004,32 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { kshcDTO.setDqbm(yhdj.getDqbm()); kshcDTO.setBsrysfzjhm(yhdj.getBsrysfzjhm()); kshcDTO.setJsonData(jsonDataTwoDTO); + ValidateUtils.validate(kshcDTO); - ValidateUtils.validate(kshcDTO.getJsonData()); + ValidateUtils.validate(jsonDataTwoDTO); + + // redInfo 前置处理 start + Redinfo redinfo = new Redinfo(); + redinfo.setCompanyId(companyservice.getCompanyid()); + String id = IdUtils.randomSystemOrderno(); + redinfo.setSystemOrderno(id); + redinfo.setOutTradeOrderno(id); + redinfo.setFpqqlsh(id); + redinfo.setRedInfoStatus("0"); + redinfo.setSellerName(companyservice.getSellername()); + redinfo.setSellerTaxnum(companyservice.getSellertax()); + redinfo.setBillInputTime(TimeUtil.dateFormat(new Date(), "yyyyMMddHHmmss")); + // 纸票为必填 + redinfo.setBuyerName("全电"); + redinfo.setBuyerTaxnum("全电"); + redinfo.setSellerName("全电"); + redinfo.setSellerTaxnum("全电"); + redinfo.setServiceSupplierKey("0"); + + redinfo.setOriginFphm(invoiceAllKshcDTO.getYfphm()); + redinfo.setApplyRemark(invoiceAllKshcDTO.getChyydm()); + redinfoMapper.insertRedinfo(redinfo); + // end cn.hutool.json.JSONObject result = null; try { @@ -1031,6 +1055,12 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { allApiLog.setCreateTime(new Date()); allApiLogMapper.insertInvoiceAllApiLog(allApiLog); + redinfo.setOutTradeOrderno(requestId); + redinfoMapper.updateRedinfo(redinfo); + + HXResponse response = new HXResponse("0000", "同步成功", JSONUtil.parse(data)); + return response; + } else { return new HXResponse(msg); } @@ -1041,8 +1071,7 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { } - HXResponse response = new HXResponse("0000", "同步成功", result); - return response; + } @Override @@ -1421,14 +1450,55 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { } } else if (WebServiceConstant.KSHC.equals(finalServiceId)) { // 快速冲红 - // TODO: 后期存库 -// KschVO kschVO = BeanUtil.copyProperties(data,KschVO.class); -// InvoiceAllKschVO invoiceAllKschVO = BeanUtil.copyProperties(kschVO,InvoiceAllKschVO.class); + KschTWOVO kschVO = BeanUtil.copyProperties(JSONUtil.parse(data),KschTWOVO.class); + + QueryWrapper billInfoQueryWrapper = new QueryWrapper<>(); + billInfoQueryWrapper.eq("out_trade_orderno", requestId); + Redinfo billInfoR = redinfoMapper.selectOne(billInfoQueryWrapper); + if (billInfoR != null && StrUtil.isNotEmpty(billInfoR.getOriginFphm())) { + + // 查找原发票信息 + String originFphm = billInfoR.getOriginFphm(); + QueryWrapper invoiceQueryWrapper = new QueryWrapper<>(); + invoiceQueryWrapper.eq("fphm", originFphm); + Invoice invoice = invoiceMapper.selectOne(invoiceQueryWrapper); + + if (BeanUtil.isNotEmpty(kschVO)) { + + //更新蓝字发票状态为冲红 99 + invoice.setState(99); + invoiceMapper.updateInvoice(invoice); + + invoice.setId(null); + invoice.setOriginFphm(invoice.getFphm()); + invoice.setFphm(kschVO.getFphm()); + invoice.setBillInfoId(billInfoR.getId()); + invoice.setSystemOrderno(billInfoR.getSystemOrderno()); + invoice.setOutTradeOrderno(requestId); + invoice.setFpqqlsh(billInfoR.getFpqqlsh()); + invoice.setKprq(DateUtil.parse(kschVO.getKprq())); + invoice.setZzfpdm(kschVO.getZzfpdm()); + invoice.setZzfphm(kschVO.getZzfphm()); + //二维码=二维码下载地址 + invoice.setQrCode(kschVO.getEwmUrl()); + //发票 pdf 地址=PDF格式下载地址 + invoice.setInvoicePdfUrl(kschVO.getPdfUrl()); + //发票详情地址=OFD格式下载地址 + invoice.setInvoiceJpgUrl(kschVO.getOfdUrl()); + //ofdUrl=XML格式下载地址 + invoice.setcOfdUrl(kschVO.getXmlUrl()); + invoice.setState(2); + invoiceMapper.insertInvoice(invoice); + } + billInfoR.setBillInputTime(kschVO.getKprq()); + redinfoMapper.updateById(billInfoR); + } + response.put("data", JSONUtil.parse(data)); } else if (WebServiceConstant.CXHZFPXXQRD.equals(finalServiceId)) { // 查询红字信息表 - RedInvoiceQueryAllTWOVO redInvoiceQueryAllTWOVO = BeanUtil.copyProperties(data, RedInvoiceQueryAllTWOVO.class); + RedInvoiceQueryAllTWOVO redInvoiceQueryAllTWOVO = BeanUtil.copyProperties(JSONUtil.parse(data), RedInvoiceQueryAllTWOVO.class); // 返回报文转换 List resultDownload = parseRedINFO(redInvoiceQueryAllTWOVO); // TODO: 2023/4/6 数据存储 @@ -1579,7 +1649,7 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { RedisCache redisCache = SpringUtils.getBean(RedisCache.class); JSONObject yhdjObj = redisCache.getCacheObject(WebServiceConstant.TOKEN_KEY + sellertax + "_"+ identity); - // TODO: 2023/5/17 急急急 + // TODO: 2023/5/17 // JSONObject obj = JSONObject.parseObject(info); // Long exprieTime = System.currentTimeMillis(); // exprieTime = exprieTime + (int) obj.get("expires_in") * 1000L; // 过期时间