Merge branch 'beta-prop-all' into xingze

jianshui-ui
xingze 1 year ago
commit 2e6a5c6cc9
  1. 4
      jianshui-common/src/main/java/com/jianshui/common/utils/encrypt/JianshuiInvoiceEncryptUtil.java
  2. 30
      jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/elephant/DDFPXX.java
  3. 26
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/ElephantInvoiceApiServiceImpl.java
  4. 30
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/ElephantInvoiceApiV6ByInspurServiceImpl.java
  5. 29
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/ElephantInvoiceApiV6ServiceImpl.java
  6. 442
      jianshui-invoice/src/main/java/com/jianshui/invoice/task/InvoiceBackTask.java
  7. 4
      jianshui-invoice/src/main/java/com/jianshui/invoice/utils/BillDetailFormatInspurUtil.java
  8. 3
      jianshui-invoice/src/main/java/com/jianshui/invoice/utils/BillDetailFormatUtil.java
  9. 3
      jianshui-invoice/src/main/java/com/jianshui/invoice/utils/elephant/ElephantUtils.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));

@ -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;
}

@ -47,7 +47,9 @@ import com.jianshui.queue.utils.RedisQueueUtil;
import com.jianshui.storage.domain.StorageUrlDTO;
import com.jianshui.storage.factory.StorageFactory;
import com.jianshui.storage.service.IStorageService;
import com.jianshui.system.domain.CompanyserviceProp;
import com.jianshui.system.mapper.CompanyserviceMapper;
import com.jianshui.system.mapper.CompanyservicePropMapper;
import com.jianshui.system.service.ISysConfigService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
@ -94,6 +96,9 @@ public class ElephantInvoiceApiServiceImpl implements IInvoiceApiService {
@Autowired
private IBillInfoService billInfoService;
@Autowired
private CompanyservicePropMapper companyservicePropMapper;
/**
* 发票开具
*
@ -207,7 +212,8 @@ public class ElephantInvoiceApiServiceImpl implements IInvoiceApiService {
e.printStackTrace();
throw new JianshuiServiceException("系统异常!");
}
log.info("【销项发票】【大象发票】发票开具请求结果{}", queryResult.toString());
// log.info("【销项发票】【大象发票】发票开具请求结果{}", queryResult.toString());
log.info("【销项发票】【大象发票】发票开具请求结果");
// 判断外层报文是否成功
if (queryResult.isError()) {
@ -234,7 +240,14 @@ public class ElephantInvoiceApiServiceImpl implements IInvoiceApiService {
queryBody.put("DDQQPCH", billInfo.getSystemOrderno());
queryBody.put("FPLXDM", fplxdm);
queryBody.put("SFFHSBSJ", "0");
queryBody.put("BSWJ", "1");
CompanyserviceProp companyservicePropBSWJ = companyservicePropMapper.selectPropByKey(companyservice.getCompanyid(), "BSWJ");
if (companyservicePropBSWJ != null && StrUtil.isNotEmpty(companyservicePropBSWJ.getValue())) {
queryBody.put("BSWJ", companyservicePropBSWJ.getValue() );
} else {
queryBody.put("BSWJ", "1");
}
// queryResult = ElephantUtils.sendRequest(ElephantConstants.ADD_INVOICE_RESULT, JSONUtil.parse(queryBody));
try {
queryResult = ElephantUtils.sendRequestWithoutToken(ElephantConstants.ADD_INVOICE_RESULT_LOCALHOST, ElephantConstants.ADD_INVOICE_RESULT_METHOD, JSONUtil.parse(queryBody), companyservice);
@ -360,7 +373,14 @@ public class ElephantInvoiceApiServiceImpl implements IInvoiceApiService {
JSONObject queryBody = new JSONObject();
queryBody.put("NSRSBH", companyservice.getSellertax());
queryBody.put("DDQQLSH", originBillInfo.getSystemOrderno());
queryBody.put("BSWJ", "1");
CompanyserviceProp companyservicePropBSWJ = companyservicePropMapper.selectPropByKey(companyservice.getCompanyid(), "BSWJ");
if (companyservicePropBSWJ != null && StrUtil.isNotEmpty(companyservicePropBSWJ.getValue())) {
queryBody.put("BSWJ", companyservicePropBSWJ.getValue() );
} else {
queryBody.put("BSWJ", "1");
}
debugLog("断点4", uuid, timestamp);
// AjaxResult queryResult = ElephantUtils.sendRequest(ElephantConstants.QUERY_INVOICE, JSONUtil.parse(queryBody));

@ -296,7 +296,8 @@ public class ElephantInvoiceApiV6ByInspurServiceImpl implements IInvoiceApiServi
e.printStackTrace();
throw new JianshuiServiceException("系统异常!");
}
log.info("【销项发票】【大象发票】发票开具请求结果{}", queryResult.toString());
// log.info("【销项发票】【大象发票】发票开具请求结果-暂不打印", queryResult.toString());
log.info("【销项发票】【大象发票】发票开具请求结果-暂不打印");
// 判断外层报文是否成功
if (queryResult.isError()) {
@ -327,7 +328,12 @@ public class ElephantInvoiceApiV6ByInspurServiceImpl implements IInvoiceApiServi
// TODO: 2023/10/8 数电
// TODO kk:2024/7/8 寿仙谷定制 去掉文件流
queryBody.put("BSWJ", "1");
CompanyserviceProp companyservicePropBSWJ = companyservicePropMapper.selectPropByKey(companyservice.getCompanyid(), "BSWJ");
if (companyservicePropBSWJ != null && StrUtil.isNotEmpty(companyservicePropBSWJ.getValue())) {
queryBody.put("BSWJ", companyservicePropBSWJ.getValue() );
} else {
queryBody.put("BSWJ", "1");
}
// 订单请求流水号
@ -474,7 +480,15 @@ public class ElephantInvoiceApiV6ByInspurServiceImpl implements IInvoiceApiServi
JSONObject queryBody = new JSONObject();
queryBody.put("NSRSBH", companyservice.getSellertax());
queryBody.put("DDQQLSH", originBillInfo.getSystemOrderno());
queryBody.put("BSWJ", "1");
CompanyserviceProp companyservicePropBSWJ = companyservicePropMapper.selectPropByKey(companyservice.getCompanyid(), "BSWJ");
if (companyservicePropBSWJ != null && StrUtil.isNotEmpty(companyservicePropBSWJ.getValue())) {
queryBody.put("BSWJ", companyservicePropBSWJ.getValue() );
} else {
queryBody.put("BSWJ", "1");
}
// TODO kk:2024/7/8 寿仙谷定制 不需要文件流
// queryBody.put("BSWJ", "1");
debugLog("断点4", uuid, timestamp);
@ -3292,7 +3306,8 @@ public class ElephantInvoiceApiV6ByInspurServiceImpl implements IInvoiceApiServi
log.error("【销项发票】【大象接口】【发票开具】发票请求异常,请求报文{},销方信息{}", JSONUtil.parse(elephantInvoiceAddDTO).toString(), JSONObject.toJSONString(companyservice));
return new HXResponse("系统异常!");
}
log.info("【销项发票】【大象发票】发票开具请求结果{}", queryResult.toString());
log.info("【销项发票】【大象发票】发票开具请求结果");
// log.info("【销项发票】【大象发票】发票开具请求结果{}", queryResult.toString());
// 判断外层报文是否成功
if (queryResult.isError()) {
@ -3324,8 +3339,13 @@ public class ElephantInvoiceApiV6ByInspurServiceImpl implements IInvoiceApiServi
// 订单请求流水号
queryBody.put("DDQQLSH", billInfo.getSystemOrderno());
CompanyserviceProp companyservicePropBSWJ = companyservicePropMapper.selectPropByKey(companyservice.getCompanyid(), "BSWJ");
if (companyservicePropBSWJ != null && StrUtil.isNotEmpty(companyservicePropBSWJ.getValue())) {
queryBody.put("BSWJ", companyservicePropBSWJ.getValue() );
} else {
queryBody.put("BSWJ", "1");
}
queryBody.put("BSWJ", "1");
/*// 提取码
queryBody.put("TQM", "0");
// 订单号

@ -343,7 +343,8 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService {
e.printStackTrace();
throw new JianshuiServiceException("系统异常!");
}
log.info("【销项发票】【大象发票】发票开具请求结果{}", queryResult.toString());
// log.info("【销项发票】【大象发票】发票开具请求结果{}", queryResult.toString());
log.info("【销项发票】【大象发票】发票开具请求结果");
// 判断外层报文是否成功
if (queryResult.isError()) {
@ -386,7 +387,12 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService {
queryBody.put("DDRQQ", "0");
// 订单日期止
queryBody.put("DDRQZ", "0");*/
queryBody.put("BSWJ", "1");
CompanyserviceProp companyservicePropBSWJ = companyservicePropMapper.selectPropByKey(companyservice.getCompanyid(), "BSWJ");
if (companyservicePropBSWJ != null && StrUtil.isNotEmpty(companyservicePropBSWJ.getValue())) {
queryBody.put("BSWJ", companyservicePropBSWJ.getValue() );
} else {
queryBody.put("BSWJ", "1");
}
// queryResult = ElephantUtils.sendRequest(ElephantConstantsV6.ADD_INVOICE_RESULT, JSONUtil.parse(queryBody));
try {
queryResult = ElephantUtils.sendRequestWithoutTokenV6New(ElephantConstantsV6.ADD_INVOICE_RESULT_LOCALHOST, ElephantConstantsV6.ADD_INVOICE_RESULT_METHOD, JSONUtil.parse(queryBody), companyservice);
@ -518,7 +524,14 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService {
JSONObject queryBody = new JSONObject();
queryBody.put("NSRSBH", companyservice.getSellertax());
queryBody.put("DDQQLSH", originBillInfo.getSystemOrderno());
queryBody.put("BSWJ", "1");
CompanyserviceProp companyservicePropBSWJ = companyservicePropMapper.selectPropByKey(companyservice.getCompanyid(), "BSWJ");
if (companyservicePropBSWJ != null && StrUtil.isNotEmpty(companyservicePropBSWJ.getValue())) {
queryBody.put("BSWJ", companyservicePropBSWJ.getValue() );
} else {
queryBody.put("BSWJ", "1");
}
debugLog("断点4", uuid, timestamp);
AjaxResult queryResult = null;
@ -3395,7 +3408,8 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService {
log.error("【销项发票】【大象接口】【发票开具】发票请求异常,请求报文{},销方信息{}", JSONUtil.parse(elephantInvoiceAddDTO).toString(), JSONObject.toJSONString(companyservice));
return new HXResponse("系统异常!");
}
log.info("【销项发票】【大象发票】发票开具请求结果{}", queryResult.toString());
// log.info("【销项发票】【大象发票】发票开具请求结果{}", queryResult.toString());
log.info("【销项发票】【大象发票】发票开具请求结果");
// 判断外层报文是否成功
if (queryResult.isError()) {
@ -3438,7 +3452,12 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService {
queryBody.put("DDRQQ", "0");
// 订单日期止
queryBody.put("DDRQZ", "0");*/
queryBody.put("BSWJ", "1");
CompanyserviceProp companyservicePropBSWJ = companyservicePropMapper.selectPropByKey(companyservice.getCompanyid(), "BSWJ");
if (companyservicePropBSWJ != null && StrUtil.isNotEmpty(companyservicePropBSWJ.getValue())) {
queryBody.put("BSWJ", companyservicePropBSWJ.getValue() );
} else {
queryBody.put("BSWJ", "1");
}
// queryResult = ElephantUtils.sendRequest(ElephantConstantsV6.ADD_INVOICE_RESULT, JSONUtil.parse(queryBody));
try {
queryResult = ElephantUtils.sendRequestWithoutTokenV6New(ElephantConstantsV6.ADD_INVOICE_RESULT_LOCALHOST, ElephantConstantsV6.ADD_INVOICE_RESULT_METHOD, JSONUtil.parse(queryBody), companyservice);

@ -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<InvoiceBack> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("status", "0").or().eq("status", "2").or().eq("status", "3");
List<InvoiceBack> 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<InvoiceDetail> 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<InvoiceDetail> 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<InvoiceBack> 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,32 +374,26 @@ 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<InvoiceDetail> 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 invoice1 = new Invoice();
invoice1.setFpqqlsh(billInfo.getFpqqlsh());
invoice1.setSellerTaxnum(billInfo.getSellerTaxnum());
invoice1.setOutTradeOrderno(billInfo.getOutTradeOrderno());
Invoice invoice = invoiceMapper.selectByOutTradeOrdernoNoUpdateBy(Long.valueOf(identity), id);
if (invoice == null) {
log.info(ZQ_BACK_DXHY + "发票信息未查询到,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() );
continue;
}
// 明细重插
List<InvoiceDetail> 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);
IInvoiceApiService invoiceService = invoiceServiceFactory.getService("elephantV6_invoice");
Companyservice companyservice = new Companyservice();
@ -433,221 +402,66 @@ public class InvoiceBackTask {
BillInfo billInfo = new BillInfo();
billInfo.setFpqqlsh("[\"" + invoice.getFpqqlsh() + "\"]");
billInfo.setOutTradeOrderno(invoice.getOutTradeOrderno());
log.info("发票回调invoice.id={},getOutTradeOrderno()={},invoice.getFpqqlsh()={}", id, invoice.getOutTradeOrderno(), invoice.getFpqqlsh());
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);
log.info(ZQ_BACK_DXHY + "拉去后查询状态为,id={},state={}",id,state);
if (state == 20) {
log.info(ZQ_BACK_DXHY + "20为开票中,不回调,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.setBackMsg("zq:" + message);
if ("0000".equals(status)) {
invoiceBack.setStatus("1");
} else if ("9999".equals(status)) {
invoiceBack.setStatus("3");
} else {
invoiceBack.setStatus("3");
invoiceBack.setResultMsg("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());
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<InvoiceBack> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("status", "7");
List<InvoiceBack> 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);
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<InvoiceDetail> invoiceDetailList = invoiceMapper.selectInvoiceIdForInvoiceDetailList(invoice.getId());
if (!invoiceDetailList.isEmpty()) {
invoice.setInvoiceDetailList(invoiceDetailList);
}
// 回调重汽
backZq(id, invoice, callBackUrl, invoiceBack);
}
log.info("=======================[重汽回调定时任务执行结束]=================================");
log.info(ZQ_BACK_DXHY + "定时任务执行结束---");
}
}

@ -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);
}

@ -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);
}

@ -735,7 +735,8 @@ public class ElephantUtils {
// 大象v6调用方法(获取结果处理)
log.info("【销项】【大象工具类】调用V6接口,入参{}", JSONUtil.toJsonStr(dxhyInterfaceRequest));
dxhyInterfaceResponse = InvokeDxhyApi.dxhyInterfaceInvoke(dxhyInterfaceRequest);
log.info("【销项】【大象工具类】请求成功,结果{}", JSONUtil.toJsonStr(dxhyInterfaceResponse));
// log.info("【销项】【大象工具类】请求成功,结果{}", JSONUtil.toJsonStr(dxhyInterfaceResponse));
log.info("【销项】【大象工具类】请求成功,结果");
// 返回报文处理为简税报文
String dataDxhy = dxhyInterfaceResponse.getData();

Loading…
Cancel
Save