From d721551adc2b15d950ccb566f9fb8cac05a16405 Mon Sep 17 00:00:00 2001 From: dongxiaoke <1910333201@qq.com> Date: Thu, 11 Jul 2024 16:10:12 +0800 Subject: [PATCH] =?UTF-8?q?Revert=20"feature:=20=E6=9A=82=E6=8F=90"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 458a681d --- .../encrypt/JianshuiInvoiceEncryptUtil.java | 4 +- .../domain/dto/api/elephant/DDFPXX.java | 30 +- .../invoice/task/InvoiceBackTask.java | 462 +++++------------- .../utils/BillDetailFormatInspurUtil.java | 4 +- .../invoice/utils/BillDetailFormatUtil.java | 3 +- 5 files changed, 154 insertions(+), 349 deletions(-) diff --git a/jianshui-common/src/main/java/com/jianshui/common/utils/encrypt/JianshuiInvoiceEncryptUtil.java b/jianshui-common/src/main/java/com/jianshui/common/utils/encrypt/JianshuiInvoiceEncryptUtil.java index 4e0d197..33eb8f2 100644 --- a/jianshui-common/src/main/java/com/jianshui/common/utils/encrypt/JianshuiInvoiceEncryptUtil.java +++ b/jianshui-common/src/main/java/com/jianshui/common/utils/encrypt/JianshuiInvoiceEncryptUtil.java @@ -202,8 +202,8 @@ public class JianshuiInvoiceEncryptUtil { System.out.println("AES密钥:"); System.out.println(keyHex); - String str = "{\"FHHS\":1,\"FPZHXX\":[{\"FPDM\":\"243170000003\",\"FPHM\":\"90763134\",\"FPLXDM\":\"31\",\"GMFSBH\":\"9137132733425975X9\",\"SQRZLX\":\"1\",\"SQSKSSQ\":\"202406\",\"YXSE\":\"1998.00\",\"invoiceId\":\"037e550cafdf9fe36f5236e52efd0000\"}],\"GMFSBH\":\"9137132733425975X9\",\"PCH\":\"0386183bd54f9b5287705c36895b0000\",\"taxNo\":\"9137132733425975X9\"}"; - String key = "10OOM+SR3PT3WFRMTlzU9g=="; + String str = "{\"terminalNumber\":\"\",\"orderno\":\"fcd3a67d-6a6e-f714-0790-c705db41403d\",\"sellerBank\":null,\"checker\":\"\",\"saleaddress\":null,\"payee\":\"\",\"hsbz\":\"2\",\"kjlx\":\"\",\"saleaccount\":null,\"qdbz\":\"0\",\"ext\":{\"sfhqsyed\":false},\"xsfnsrsbh\":\"92370214MACAAEK16E\",\"xsflxdh\":null,\"cpybz\":\"0\",\"fjh\":\"\",\"tax\":\"0.3\",\"dkbz\":\"0\",\"phone\":\"\",\"dqbm\":\"\",\"xsfyhzh\":null,\"jshj\":\"10.3\",\"tsfs\":\"2\",\"detail\":[{\"fphxz\":\"0\",\"lslbs\":\"\",\"unit\":\"\",\"hsbz\":\"0\",\"taxrate\":\"0.03\",\"yhzcbs\":\"0\",\"zzstsgl\":\"\",\"price\":\"\",\"num\":\"\",\"goodsname\":\"维修费\",\"spbm\":\"202\",\"spec\":\"\",\"taxfreeamt\":\"10.00\",\"tax\":\"0.30\",\"taxamt\":\"10.30\"}],\"taxamt\":\"10\",\"saletaxnum\":\"92370214MACAAEK16E\",\"sellerName\":\"城阳区兴顺通制冷设备维修服务部\",\"billInfono\":\"\",\"xsfkhh\":null,\"fpqqlsh\":\"fcd3a67d-6a6e-f714-0790-c705db41403d\",\"qdxmmc\":\"\",\"gfxxconfirm\":\"\",\"invoiceLine\":\"82\",\"serviceId\":\"lzfpkj\",\"email\":\"\",\"salephone\":null,\"address\":\"北京市-西城区-市岱岳区山口镇油坊村 80965631\",\"fpdm\":\"\",\"bsrysfzjhm\":\"370882198408212815\",\"kptype\":\"1\",\"message\":\"\",\"clerk\":\"鹿旭\",\"async\":\"true\",\"xsfmc\":\"城阳区兴顺通制冷设备维修服务部\",\"xsfdz\":null,\"taxnum\":\"91370112MA3C5P3322\",\"jqbh\":\"370882198408212815\",\"account\":\"中国建设银行济南市泉城支行 376010100101019236\",\"invoicedate\":\"2024-01-30\",\"buyername\":\"高速公路有限公司\",\"fphm\":\"\"}"; + String key = "S1jIlJRLXBNtIFihvQ0VPw=="; System.out.println(encryptAES(str,key)); diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/elephant/DDFPXX.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/elephant/DDFPXX.java index 23c9963..07c6d4c 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/elephant/DDFPXX.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/elephant/DDFPXX.java @@ -67,11 +67,11 @@ public class DDFPXX { private String DDZTXX; private String TQM; private String DTM; - private String BYZD1; - private String BYZD2; - private String BYZD3; - private String BYZD4; - private String BYZD5; + private Date BYZD1; + private Date BYZD2; + private Date BYZD3; + private Date BYZD4; + private Date BYZD5; public void setDDQQLSH(String DDQQLSH) { this.DDQQLSH = DDQQLSH; } @@ -457,38 +457,38 @@ public class DDFPXX { return DTM; } - public void setBYZD1(String BYZD1) { + public void setBYZD1(Date BYZD1) { this.BYZD1 = BYZD1; } - public String getBYZD1() { + public Date getBYZD1() { return BYZD1; } - public void setBYZD2(String BYZD2) { + public void setBYZD2(Date BYZD2) { this.BYZD2 = BYZD2; } - public String getBYZD2() { + public Date getBYZD2() { return BYZD2; } - public void setBYZD3(String BYZD3) { + public void setBYZD3(Date BYZD3) { this.BYZD3 = BYZD3; } - public String getBYZD3() { + public Date getBYZD3() { return BYZD3; } - public void setBYZD4(String BYZD4) { + public void setBYZD4(Date BYZD4) { this.BYZD4 = BYZD4; } - public String getBYZD4() { + public Date getBYZD4() { return BYZD4; } - public void setBYZD5(String BYZD5) { + public void setBYZD5(Date BYZD5) { this.BYZD5 = BYZD5; } - public String getBYZD5() { + public Date getBYZD5() { return BYZD5; } diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/task/InvoiceBackTask.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/task/InvoiceBackTask.java index b52e27e..fd4c1dd 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/task/InvoiceBackTask.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/task/InvoiceBackTask.java @@ -1,6 +1,5 @@ package com.jianshui.invoice.task; -import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; @@ -9,15 +8,15 @@ import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.jianshui.common.core.domain.entity.Companyservice; +import com.jianshui.common.utils.StringUtils; import com.jianshui.common.utils.spring.SpringUtils; import com.jianshui.invoice.constant.aisino.console.AisinoConsoleConstants; import com.jianshui.invoice.domain.*; import com.jianshui.invoice.domain.dto.ExportVehicleDTO; import com.jianshui.invoice.domain.dto.HXResponse; -import com.jianshui.invoice.enums.InvoiceBackStatusEnum; import com.jianshui.invoice.factory.IInvoiceServiceFactory; -import com.jianshui.invoice.mapper.BillInfoMapper; import com.jianshui.invoice.mapper.InvoiceBackMapper; import com.jianshui.invoice.mapper.InvoiceMapper; import com.jianshui.invoice.service.IInvoiceApiService; @@ -55,21 +54,17 @@ public class InvoiceBackTask { @Autowired private IInvoiceServiceFactory invoiceServiceFactory; - @Autowired - private BillInfoMapper billInfoMapper; - private final String ZQ_BACK_DXHY = "【重汽回调(开票中单据)】"; - private final String ZQ_BACK = "【重汽回调】"; - /* *//** + /** * @author kk * @date 9:03 * @param: [params] * @return: 开票回调 - *//* + */ public void bkParams(String params) { // TODO: 2023/11/9 回调次数处理 // 默认1次 定时任务控制,补偿机制 @@ -172,7 +167,7 @@ public class InvoiceBackTask { } log.info("[重汽回调定时任务执行结束]---"); } -*/ + /** * @author kk @@ -221,133 +216,113 @@ public class InvoiceBackTask { public void sdBackInvoice() { // 发票回调补偿机制。 - log.info("================================[重汽回调定时任务开始执行]============================="); - log.info("{}:查询回调表信息,查询条件为:status=0,2,3", ZQ_BACK); + log.info("[重汽回调定时任务开始执行]"); + QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("status", "0").or().eq("status", "2").or().eq("status", "3"); List invoiceBackList = invoiceBackMapper.selectList(queryWrapper); - log.info("{}:查询到{}条带回调订单", ZQ_BACK, invoiceBackList.size()); + log.info("【重汽回调】查询到{}条带回调订单", invoiceBackList.size()); for (InvoiceBack invoiceBack : invoiceBackList) { String id = invoiceBack.getSystemOrderno(); String identity = invoiceBack.getIdentity(); - log.info("{}:开始处理回调订单,identity={},id={},", ZQ_BACK, identity, id); if (StrUtil.isEmpty(id)) { - log.info("{}:发票回调,回调id为空", ZQ_BACK); - invoiceBack.setStatus(InvoiceBackStatusEnum.MULTIPLE_FAILURES.getCode()); - invoiceBack.setBackMsg("运维排查:传入id为空"); + log.info("【控制台】发票回调,id为空"); + invoiceBack.setStatus("3"); + invoiceBack.setBackMsg("id为空"); invoiceBack.setUpdateTime(new Date()); invoiceBackMapper.updateInvoiceBack(invoiceBack); continue; } - log.info("{}:订单号{},开始回调", ZQ_BACK, id); + + log.info("【重汽回调】订单号{},开始回调", id); ICompanyservicePropService companyserviceProp = SpringUtils.getBean(ICompanyservicePropService.class); CompanyserviceProp secretIdProp = companyserviceProp.selectPropByKey(Long.valueOf(identity), "aisino_callback_url"); if (secretIdProp == null || secretIdProp.getValue() == null || "".equals(secretIdProp.getValue())) { - log.info("{}发票回调,未配置回调地址{}", ZQ_BACK, identity); - invoiceBack.setStatus(InvoiceBackStatusEnum.MULTIPLE_FAILURES.getCode()); - invoiceBack.setBackMsg("运维排查:未配置回调地址"); + log.info("【重汽回调】发票回调,未配置回调地址{}",identity); + invoiceBack.setStatus("3"); + invoiceBack.setBackMsg("未配置回调地址"); invoiceBack.setUpdateTime(new Date()); invoiceBackMapper.updateInvoiceBack(invoiceBack); continue; } String callBackUrl = secretIdProp.getValue(); - log.info("{}:发票回调,订单号{},回调地址{}", ZQ_BACK, id, callBackUrl); - - Invoice invoice = invoiceMapper.selectBySystemOrderNo(Long.valueOf(identity), id); + log.info("【重汽回调】发票回调,订单号{},回调地址{}",id, callBackUrl); + Invoice invoice = invoiceMapper.selectByOutTradeOrderno(Long.valueOf(identity), id, "0"); if (invoice == null) { - log.info("{}:当前发票未查询到Invoice信息,开始请求大象接口获取", ZQ_BACK); - log.info("通过billInfo组装,id为:{}", id); - BillInfo billInfo = billInfoMapper.selectBySystemOrderNo(Long.valueOf(identity), id); - if (BeanUtil.isEmpty(billInfo)) { - log.info("{}:billInfo中不存咋,id为:{}", ZQ_BACK, id); - } - - // 发票查询 - String messageQhery = getInvoiceQuery(invoiceBack, billInfo); + log.info("【重汽回调】发票信息未查询到,id={}", id); + invoice = new Invoice(); + invoice.setOutTradeOrderno(invoiceBack.getSystemOrderno()); + invoice.setState(22); + invoice.setMessage( (invoiceBack.getResultMsg() != null && invoiceBack.getResultMsg().length() > 200) ? invoiceBack.getResultMsg().substring(0, 200) : invoiceBack.getResultMsg() ); + } - invoice = invoiceMapper.selectBySystemOrderNo(Long.valueOf(identity), id); - log.info("{}:调用回调接口拉取后,Invoice存在状态为{},回调查询发票结果为:{}", ZQ_BACK, invoice != null, messageQhery); - if (invoice == null) { - log.info("{}:查询到Invoice信息,回调后还是未查询到Invoice", ZQ_BACK); - invoiceBack.setStatus(InvoiceBackStatusEnum.MULTIPLE_FAILURES.getCode()); - invoiceBack.setBackMsg("k:回调后还是未查询到Invoice"); - invoiceBack.setUpdateTime(new Date()); - invoiceBackMapper.updateInvoiceBack(invoiceBack); - continue; + if(invoice != null){ + // 明细重插 + List invoiceDetailList = invoiceMapper.selectInvoiceIdForInvoiceDetailList(invoice.getId()); + if(!invoiceDetailList.isEmpty()){ + invoice.setInvoiceDetailList(invoiceDetailList); } - } - Integer stateInvoice = invoice.getState(); - String fpqqlsh = invoice.getFpqqlsh(); - String ddh = invoice.getOutTradeOrderno(); - log.info("{}:查询到Invoice信息,发票状态为:{}", ZQ_BACK, stateInvoice); - if (stateInvoice == 20) { - // 开票中 - log.info("{}:开具中,调用查询,fpqqlsh={},ddh={}", ZQ_BACK, fpqqlsh, ddh); - BillInfo billInfo = new BillInfo(); - billInfo.setFpqqlsh(invoice.getFpqqlsh()); - billInfo.setOutTradeOrderno(invoice.getOutTradeOrderno()); - // 发票查询 - String messageQhery = getInvoiceQuery(invoiceBack, billInfo); - - invoice = invoiceMapper.selectBySystemOrderNo(Long.valueOf(identity), id); - log.info("{}:调用回调接口拉取后,Invoice存在状态为{},回调查询发票结果为:{}", ZQ_BACK, invoice != null, messageQhery); - if (invoice == null) { - log.info("{}:查询到Invoice信息,回调后还是未查询到Invoice", ZQ_BACK); - invoiceBack.setStatus(InvoiceBackStatusEnum.MULTIPLE_FAILURES.getCode()); - invoiceBack.setBackMsg("k:回调后还是未查询到Invoice"); - invoiceBack.setUpdateTime(new Date()); - invoiceBackMapper.updateInvoiceBack(invoiceBack); + try { + + log.info("【重汽回调】发票回调接口,发送数据开始,id={},orderno={},callBackUrl={},param={}", id, invoice.getOutTradeOrderno(), callBackUrl, JSONUtil.toJsonStr(invoice)); + String result = HttpUtil.post(callBackUrl, JSONUtil.toJsonStr(invoice)); + log.info("【重汽回调】发票回调接口,发送数据结束,id={},接口返回信息={}", id, result); + JSONObject jsonObject = JSONUtil.parseObj(result); + if (jsonObject != null) { + String status = jsonObject.get("status") != null ? jsonObject.get("status").toString() : ""; + String message = jsonObject.get("message") != null ? jsonObject.get("message").toString() : ""; + + if ("0000".equals(status)) { + invoiceBack.setStatus("1"); + invoiceBack.setBackMsg(message != null ? message.substring(0, Math.min(message.length(), 200)) : ""); + invoiceBack.setUpdateTime(new Date()); + invoiceBackMapper.updateInvoiceBack(invoiceBack); + } else if ("9999".equals(status)) { + invoiceBack.setStatus("3"); + invoiceBack.setBackMsg(message != null ? message.substring(0, Math.min(message.length(), 200)) : ""); + invoiceBack.setUpdateTime(new Date()); + invoiceBackMapper.updateInvoiceBack(invoiceBack); + } else { + invoiceBack.setStatus("3"); + invoiceBack.setBackMsg(status + message != null ? message.substring(0, Math.min(message.length(), 200)) : ""); + invoiceBack.setUpdateTime(new Date()); + invoiceBackMapper.updateInvoiceBack(invoiceBack); + } continue; } - - } else if (stateInvoice == 22) { - // 开票失败 - log.info("{}:开具失败,递交回调,fpqqlsh={},ddh={}", ZQ_BACK, fpqqlsh, ddh); - } else if (stateInvoice == 2) { - // 开票成功 - log.info("{}:开具成功,递交回调,fpqqlsh={},ddh={}", ZQ_BACK, fpqqlsh, ddh); - } else { - // 未解析状态 - log.info("{}:查询到Invoice信息,发票状态为:{},未解析状态", ZQ_BACK, stateInvoice); - invoiceBack.setStatus(InvoiceBackStatusEnum.CALLBACK_FAILED.getCode()); - invoiceBack.setBackMsg("发票状态为" + stateInvoice + ",未解析状态"); + } catch (Exception e) { + log.info("【重汽回调】发票回调接口,发送数据异常,id={},e={}", id,e.toString()); + invoiceBack.setStatus("2"); + invoiceBack.setBackMsg("发送数据异常"); invoiceBack.setUpdateTime(new Date()); invoiceBackMapper.updateInvoiceBack(invoiceBack); - continue; } - - // 明细重插 - List invoiceDetailList = invoiceMapper.selectInvoiceIdForInvoiceDetailList(invoice.getId()); - if (!invoiceDetailList.isEmpty()) { - invoice.setInvoiceDetailList(invoiceDetailList); - } - - // 回调重汽 - backZq(id, invoice, callBackUrl, invoiceBack); } - log.info("=======================[重汽回调定时任务执行结束]================================="); + log.info("[重汽回调定时任务执行结束]---"); } + + /** - * @author kk - * @date 16:12 - * @param: [] - * @return: 开票中发票 查询发票状态并回推 -重汽 - */ + * @author kk + * @date 16:12 + * @param: [] + * @return: 开票中发票 查询发票状态并回推 -重汽 + */ public void sdBackInvoiceQueryDxhy() { // 发票回调补偿机制。 - log.info("============================{}:开始执行,查询条件-5===================================", ZQ_BACK_DXHY); + log.info(ZQ_BACK_DXHY + "开始执行]"); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("status", "5"); @@ -367,8 +342,8 @@ public class InvoiceBackTask { long minutesBetween = DateUtil.between(now, halfAnHourAgo, DateUnit.MINUTE); // 如果差值大于或等于30分钟,则认为当前时间在半个小时之前 boolean isHalfAnHourAgo = minutesBetween >= 30; - if (!isHalfAnHourAgo) { - log.info("{}只查询半个小时之前的单据,之前的交给系统队列,当前单据号:{}暂不回调", ZQ_BACK_DXHY, invoiceBack.getSystemOrderno()); + if(!isHalfAnHourAgo){ + log.info(ZQ_BACK_DXHY + "只查询半个小时之前的单据"); continue; } @@ -376,7 +351,7 @@ public class InvoiceBackTask { String identity = invoiceBack.getIdentity(); if (StrUtil.isEmpty(id)) { - log.info("{}:发票回调,id为空", ZQ_BACK_DXHY); + log.info(ZQ_BACK_DXHY + "发票回调,id为空"); invoiceBack.setStatus("3"); invoiceBack.setBackMsg("id为空"); invoiceBack.setUpdateTime(new Date()); @@ -384,13 +359,13 @@ public class InvoiceBackTask { continue; } - log.info("{}:订单号{}", ZQ_BACK_DXHY, id); + log.info(ZQ_BACK_DXHY + "订单号{}", id); ICompanyservicePropService companyserviceProp = SpringUtils.getBean(ICompanyservicePropService.class); CompanyserviceProp secretIdProp = companyserviceProp.selectPropByKey(Long.valueOf(identity), "aisino_callback_url"); if (secretIdProp == null || secretIdProp.getValue() == null || "".equals(secretIdProp.getValue())) { - log.info("{}:发票回调,未配置回调地址{}", ZQ_BACK_DXHY, identity); + log.info(ZQ_BACK_DXHY + "发票回调,未配置回调地址{}",identity); invoiceBack.setStatus("3"); invoiceBack.setBackMsg("未配置回调地址"); invoiceBack.setUpdateTime(new Date()); @@ -399,261 +374,94 @@ public class InvoiceBackTask { } String callBackUrl = secretIdProp.getValue(); - log.info(ZQ_BACK_DXHY + "发票回调,订单号{},回调地址{}", id, callBackUrl); + log.info(ZQ_BACK_DXHY + "发票回调,订单号{},回调地址{}",id, callBackUrl); - Invoice invoice = invoiceMapper.selectBySystemOrderNo(Long.valueOf(identity), id); - if (invoice != null) { - log.info("通过Invoice组装,id为:{}", id); - // 明细重插 - List invoiceDetailList = invoiceMapper.selectInvoiceIdForInvoiceDetailList(invoice.getId()); - if (!invoiceDetailList.isEmpty()) { - invoice.setInvoiceDetailList(invoiceDetailList); - } - - } else { - log.info("通过billInfo组装,id为:{}", id); - BillInfo billInfo = billInfoMapper.selectBySystemOrderNo(Long.valueOf(identity), id); - if (BeanUtil.isEmpty(billInfo)) { - log.info("billInfo中不存咋,id为:{}", id); - } + Invoice invoice = invoiceMapper.selectByOutTradeOrdernoNoUpdateBy(Long.valueOf(identity), id); + if (invoice == null) { + log.info(ZQ_BACK_DXHY + "发票信息未查询到,id={}", id); invoice = new Invoice(); - invoice.setFpqqlsh(billInfo.getFpqqlsh()); - invoice.setSellerTaxnum(billInfo.getSellerTaxnum()); - invoice.setOutTradeOrderno(billInfo.getOutTradeOrderno()); + invoice.setOutTradeOrderno(invoiceBack.getSystemOrderno()); + invoice.setState(22); + invoice.setMessage( (invoiceBack.getResultMsg() != null && invoiceBack.getResultMsg().length() > 200) ? invoiceBack.getResultMsg().substring(0, 200) : invoiceBack.getResultMsg() ); + continue; + } + // 明细重插 + List invoiceDetailList = invoiceMapper.selectInvoiceIdForInvoiceDetailList(invoice.getId()); + if(!invoiceDetailList.isEmpty()){ + invoice.setInvoiceDetailList(invoiceDetailList); } - Integer state = invoice.getState() != null ? invoice.getState() : 1; - log.info(ZQ_BACK_DXHY + "id={},state={}", id, state); - log.info(ZQ_BACK_DXHY + "请求大象接口更新发票状态,id={},state={}", id, state); + Integer state = invoice.getState(); + log.info(ZQ_BACK_DXHY + "id={},state={}",id,state); + log.info(ZQ_BACK_DXHY + "请求大象接口更新发票状态,id={},state={}",id,state); - try { - IInvoiceApiService invoiceService = invoiceServiceFactory.getService("elephantV6_invoice"); - Companyservice companyservice = new Companyservice(); - companyservice.setCompanyid(Long.valueOf(invoiceBack.getIdentity())); - companyservice.setSellertax(invoice.getSellerTaxnum()); - BillInfo billInfo = new BillInfo(); - billInfo.setFpqqlsh("[\"" + invoice.getFpqqlsh() + "\"]"); - billInfo.setOutTradeOrderno(invoice.getOutTradeOrderno()); - log.info("发票回调invoice.id={},getOutTradeOrderno()={},invoice.getFpqqlsh()={}", id, invoice.getOutTradeOrderno(), invoice.getFpqqlsh()); - HXResponse resultDxhy = invoiceService.batchQueryInvoices(billInfo, "fpqqlsh", companyservice); - } catch (NumberFormatException e) { - log.info("发票回调,拉取异常,拉取大象异常了,id={},异常原因={}", id,e.toString()); - } + IInvoiceApiService invoiceService = invoiceServiceFactory.getService("elephantV6_invoice"); + Companyservice companyservice = new Companyservice(); + companyservice.setCompanyid(Long.valueOf(invoiceBack.getIdentity())); + companyservice.setSellertax(invoice.getSellerTaxnum()); + BillInfo billInfo = new BillInfo(); + billInfo.setFpqqlsh("[\"" + invoice.getFpqqlsh() + "\"]"); + billInfo.setOutTradeOrderno(invoice.getOutTradeOrderno()); + log.info("发票回调invoice.getOutTradeOrderno()={},invoice.getFpqqlsh()={}",id,invoice.getOutTradeOrderno(),invoice.getFpqqlsh()); + HXResponse resultDxhy = invoiceService.batchQueryInvoices(billInfo, "fpqqlsh", companyservice); - log.info("发票回调id={}", id); - invoice = invoiceMapper.selectBySystemOrderNo(Long.valueOf(identity), id); + log.info("发票回调id={}",id); + invoice = invoiceMapper.selectByOutTradeOrdernoNoUpdateBy(Long.valueOf(identity), id); if (invoice == null) { log.info(ZQ_BACK_DXHY + "重新拉取结果后,发票信息未查询到,id={}", id); invoice = new Invoice(); - invoice.setSystemOrderno(invoiceBack.getSystemOrderno()); + invoice.setOutTradeOrderno(invoiceBack.getSystemOrderno()); invoice.setState(22); - invoice.setMessage((invoiceBack.getResultMsg() != null && invoiceBack.getResultMsg().length() > 200) ? invoiceBack.getResultMsg().substring(0, 200) : invoiceBack.getResultMsg()); + invoice.setMessage( (invoiceBack.getResultMsg() != null && invoiceBack.getResultMsg().length() > 200) ? invoiceBack.getResultMsg().substring(0, 200) : invoiceBack.getResultMsg() ); continue; } state = invoice.getState(); - log.info(ZQ_BACK_DXHY + "拉取后查询状态为,id={},state={}", id, state); - - if (state == 20) { - log.info(ZQ_BACK_DXHY + "20为开票中,不回调,id={},state={}", id, state); - continue; - } - - // 回调重汽 - backZq(id, invoice, callBackUrl, invoiceBack); - - } - log.info(ZQ_BACK_DXHY + "定时任务执行结束---"); - } - - - - /** 回调重汽 */ - public void backZq(String id, Invoice invoice, String callBackUrl, InvoiceBack invoiceBack) { - try { - log.info("【重汽回调】发票回调接口,发送数据开始,id={},orderno={},callBackUrl={},param={}", id, invoice.getOutTradeOrderno(), callBackUrl, JSONUtil.toJsonStr(invoice)); - String result = HttpUtil.post(callBackUrl, JSONUtil.toJsonStr(invoice)); - log.info("【重汽回调】发票回调接口,发送数据结束,id={},接口返回信息={}", id, result); - JSONObject jsonObject = JSONUtil.parseObj(result); - String status = jsonObject.get("status") != null ? jsonObject.get("status").toString() : ""; - String message = jsonObject.get("message") != null ? jsonObject.get("message").toString() : ""; - - if (message.length() > 200) { - message = message.substring(0, Math.min(message.length(), 200)); - } - invoiceBack.setResultCode("zq:" + status); - invoiceBack.setResultMsg("zq:" + message); + log.info(ZQ_BACK_DXHY + "拉去后查询状态为,id={},state={}",id,state); - if ("0000".equals(status)) { - invoiceBack.setStatus("1"); - } else if ("9999".equals(status)) { - invoiceBack.setStatus("3"); - } else { - invoiceBack.setStatus("3"); - invoiceBack.setBackMsg("k:客户系统回调异常,status=" + status); - } - invoiceBack.setUpdateTime(new Date()); - invoiceBackMapper.updateInvoiceBack(invoiceBack); - - } catch (Exception e) { - log.info("{}:发票回调接口,发送数据异常,id={},e={}", ZQ_BACK, id, e.toString()); - invoiceBack.setStatus(InvoiceBackStatusEnum.MULTIPLE_FAILURES.getCode()); - invoiceBack.setBackMsg("运维:发送数据异常"); - invoiceBack.setUpdateTime(new Date()); - invoiceBackMapper.updateInvoiceBack(invoiceBack); - } - } - - - - /** - * 查询发票查询 - */ - private String getInvoiceQuery(InvoiceBack invoiceBack, BillInfo billInfo) { - IInvoiceApiService invoiceService = invoiceServiceFactory.getService("elephantV6_invoice"); - Companyservice companyservice = new Companyservice(); - companyservice.setCompanyid(Long.valueOf(invoiceBack.getIdentity())); - companyservice.setSellertax(billInfo.getSellerTaxnum()); - - BillInfo billInfoQuery = new BillInfo(); - billInfoQuery.setFpqqlsh("[\"" + billInfo.getFpqqlsh() + "\"]"); - billInfoQuery.setOutTradeOrderno(billInfo.getOutTradeOrderno()); - billInfoQuery.setSellerTaxnum(billInfo.getSellerTaxnum()); - - log.info("发票回调getOutTradeOrderno()={},invoice.getFpqqlsh()={}", billInfoQuery.getOutTradeOrderno(), billInfoQuery.getFpqqlsh()); - HXResponse resultDxhy = invoiceService.batchQueryInvoices(billInfoQuery, "fpqqlsh", companyservice); - return resultDxhy.getMessage(); - } - - - - /** - * @author kk - * @date 2024/4/10 20:32 - * @param: [] - * @return: 重汽数电回推补偿机制。 - */ - public void sdBackInvoiceJiuBan() { - - // 发票回调补偿机制。 - log.info("================================[重汽回调定时任务开始执行]============================="); - log.info("{}:查询回调表信息,查询条件为:status=7", ZQ_BACK); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("status", "7"); - List invoiceBackList = invoiceBackMapper.selectList(queryWrapper); - - log.info("{}:查询到{}条带回调订单", ZQ_BACK, invoiceBackList.size()); - for (InvoiceBack invoiceBack : invoiceBackList) { - - String id = invoiceBack.getSystemOrderno(); - String identity = invoiceBack.getIdentity(); - - log.info("{}:开始处理回调订单,identity={},id={},", ZQ_BACK, identity, id); - if (StrUtil.isEmpty(id)) { - log.info("{}:发票回调,回调id为空", ZQ_BACK); - invoiceBack.setStatus(InvoiceBackStatusEnum.MULTIPLE_FAILURES.getCode()); - invoiceBack.setBackMsg("运维排查:传入id为空"); - invoiceBack.setUpdateTime(new Date()); - invoiceBackMapper.updateInvoiceBack(invoiceBack); + if( state == 20 ){ + log.info(ZQ_BACK_DXHY + "20为开票中,不回调,id={},state={}",id,state); continue; } - log.info("{}:订单号{},开始回调", ZQ_BACK, id); - ICompanyservicePropService companyserviceProp = SpringUtils.getBean(ICompanyservicePropService.class); - CompanyserviceProp secretIdProp = companyserviceProp.selectPropByKey(Long.valueOf(identity), "aisino_callback_url"); - - if (secretIdProp == null || secretIdProp.getValue() == null || "".equals(secretIdProp.getValue())) { - log.info("{}发票回调,未配置回调地址{}", ZQ_BACK, identity); - invoiceBack.setStatus(InvoiceBackStatusEnum.MULTIPLE_FAILURES.getCode()); - invoiceBack.setBackMsg("运维排查:未配置回调地址"); - invoiceBack.setUpdateTime(new Date()); - invoiceBackMapper.updateInvoiceBack(invoiceBack); - continue; - } - - String callBackUrl = secretIdProp.getValue(); - log.info("{}:发票回调,订单号{},回调地址{}", ZQ_BACK, id, callBackUrl); - - Invoice invoice = invoiceMapper.selectByOutTradeOrdernoNoUpdateBy(Long.valueOf(identity), id); - - if (invoice == null) { - log.info("{}:当前发票未查询到Invoice信息,开始请求大象接口获取", ZQ_BACK); - log.info("通过billInfo组装,id为:{}", id); - BillInfo billInfo = billInfoMapper.selectByOutTradeOrderno(Long.valueOf(identity), id); - if (BeanUtil.isEmpty(billInfo)) { - log.info("{}:billInfo中不存咋,id为:{}", ZQ_BACK, id); - } - - // 发票查询 - String messageQhery = getInvoiceQuery(invoiceBack, billInfo); - - invoice = invoiceMapper.selectByOutTradeOrdernoNoUpdateBy(Long.valueOf(identity), id); - log.info("{}:调用回调接口拉取后,Invoice存在状态为{},回调查询发票结果为:{}", ZQ_BACK, invoice != null, messageQhery); - if (invoice == null) { - log.info("{}:查询到Invoice信息,回调后还是未查询到Invoice", ZQ_BACK); - invoiceBack.setStatus(InvoiceBackStatusEnum.MULTIPLE_FAILURES.getCode()); - invoiceBack.setBackMsg("k:回调后还是未查询到Invoice"); - invoiceBack.setUpdateTime(new Date()); - invoiceBackMapper.updateInvoiceBack(invoiceBack); - continue; - } - - } + try { - Integer stateInvoice = invoice.getState(); - String fpqqlsh = invoice.getFpqqlsh(); - String ddh = invoice.getOutTradeOrderno(); - log.info("{}:查询到Invoice信息,发票状态为:{}", ZQ_BACK, stateInvoice); - if (stateInvoice == 20) { - // 开票中 - log.info("{}:开具中,调用查询,fpqqlsh={},ddh={}", ZQ_BACK, fpqqlsh, ddh); - BillInfo billInfo = new BillInfo(); - billInfo.setFpqqlsh(invoice.getFpqqlsh()); - billInfo.setOutTradeOrderno(invoice.getOutTradeOrderno()); - // 发票查询 - String messageQhery = getInvoiceQuery(invoiceBack, billInfo); - - invoice = invoiceMapper.selectByOutTradeOrdernoNoUpdateBy(Long.valueOf(identity), id); - log.info("{}:调用回调接口拉取后,Invoice存在状态为{},回调查询发票结果为:{}", ZQ_BACK, invoice != null, messageQhery); - if (invoice == null) { - log.info("{}:查询到Invoice信息,回调后还是未查询到Invoice", ZQ_BACK); - invoiceBack.setStatus(InvoiceBackStatusEnum.MULTIPLE_FAILURES.getCode()); - invoiceBack.setBackMsg("k:回调后还是未查询到Invoice"); - invoiceBack.setUpdateTime(new Date()); - invoiceBackMapper.updateInvoiceBack(invoiceBack); + log.info(ZQ_BACK_DXHY + "发票回调接口,发送数据开始,id={},orderno={},callBackUrl={},param={}", id, invoice.getOutTradeOrderno(), callBackUrl, JSONUtil.toJsonStr(invoice)); + String result = HttpUtil.post(callBackUrl, JSONUtil.toJsonStr(invoice)); + log.info(ZQ_BACK_DXHY + "发票回调接口,发送数据结束,id={},接口返回信息={}", id, result); + JSONObject jsonObject = JSONUtil.parseObj(result); + if (jsonObject != null) { + String status = jsonObject.get("status") != null ? jsonObject.get("status").toString() : ""; + String message = jsonObject.get("message") != null ? jsonObject.get("message").toString() : ""; + + if ("0000".equals(status)) { + invoiceBack.setStatus("1"); + invoiceBack.setBackMsg(message != null ? message.substring(0, Math.min(message.length(), 200)) : ""); + invoiceBack.setUpdateTime(new Date()); + invoiceBackMapper.updateInvoiceBack(invoiceBack); + } else if ("9999".equals(status)) { + invoiceBack.setStatus("3"); + invoiceBack.setBackMsg(message != null ? message.substring(0, Math.min(message.length(), 200)) : ""); + invoiceBack.setUpdateTime(new Date()); + invoiceBackMapper.updateInvoiceBack(invoiceBack); + } else { + invoiceBack.setStatus("3"); + invoiceBack.setBackMsg(status + message != null ? message.substring(0, Math.min(message.length(), 200)) : ""); + invoiceBack.setUpdateTime(new Date()); + invoiceBackMapper.updateInvoiceBack(invoiceBack); + } continue; } - - } else if (stateInvoice == 22) { - // 开票失败 - log.info("{}:开具失败,递交回调,fpqqlsh={},ddh={}", ZQ_BACK, fpqqlsh, ddh); - } else if (stateInvoice == 2) { - // 开票成功 - log.info("{}:开具成功,递交回调,fpqqlsh={},ddh={}", ZQ_BACK, fpqqlsh, ddh); - } else { - // 未解析状态 - log.info("{}:查询到Invoice信息,发票状态为:{},未解析状态", ZQ_BACK, stateInvoice); - invoiceBack.setStatus(InvoiceBackStatusEnum.CALLBACK_FAILED.getCode()); - invoiceBack.setBackMsg("发票状态为" + stateInvoice + ",未解析状态"); + } catch (Exception e) { + log.info(ZQ_BACK_DXHY + "发票回调接口,发送数据异常,id={},e={}", id,e.toString()); + invoiceBack.setStatus("2"); + invoiceBack.setBackMsg("发送数据异常"); invoiceBack.setUpdateTime(new Date()); invoiceBackMapper.updateInvoiceBack(invoiceBack); - continue; - } - - // 明细重插 - List invoiceDetailList = invoiceMapper.selectInvoiceIdForInvoiceDetailList(invoice.getId()); - if (!invoiceDetailList.isEmpty()) { - invoice.setInvoiceDetailList(invoiceDetailList); } - - // 回调重汽 - backZq(id, invoice, callBackUrl, invoiceBack); } - log.info("=======================[重汽回调定时任务执行结束]================================="); + log.info(ZQ_BACK_DXHY + "定时任务执行结束---"); } } - - - diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/BillDetailFormatInspurUtil.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/BillDetailFormatInspurUtil.java index aad2bbb..9a4e579 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/BillDetailFormatInspurUtil.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/BillDetailFormatInspurUtil.java @@ -499,9 +499,7 @@ public class BillDetailFormatInspurUtil { taxAmt = billDetail.getTaxfreeamt().add(billDetail.getTax()); billDetail.setTaxamt(taxAmt); } else { - System.out.println("没有匹配的计算规则,跳过" + billDetail); -// return AjaxResult.error("没有匹配的计算规则", billDetail); - return AjaxResult.success(billDetail); + return AjaxResult.error("没有匹配的计算规则", billDetail); } return AjaxResult.success(billDetail); } diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/BillDetailFormatUtil.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/BillDetailFormatUtil.java index ea9152a..f873fc1 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/BillDetailFormatUtil.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/BillDetailFormatUtil.java @@ -499,8 +499,7 @@ public class BillDetailFormatUtil { taxAmt = billDetail.getTaxfreeamt().add(billDetail.getTax()); billDetail.setTaxamt(taxAmt); } else { -// return AjaxResult.error("没有匹配的计算规则", billDetail); - return AjaxResult.success(billDetail); + return AjaxResult.error("没有匹配的计算规则", billDetail); } return AjaxResult.success(billDetail); }