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 fb87595..acce741 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 @@ -3,41 +3,29 @@ package com.jianshui.api.controller.http.invoice.v1; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.codec.Base64Decoder; import cn.hutool.core.codec.Base64Encoder; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import cn.hutool.json.JSONArray; import cn.hutool.json.JSONUtil; -import com.alibaba.druid.support.json.JSONUtils; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.api.R; +import com.dxhy.order.protocol.invoke.DxhyInterfaceResponse; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonObject; -import com.jianshui.common.constant.HttpStatus; import com.jianshui.common.core.domain.AjaxResult; import com.jianshui.common.core.domain.entity.Companyservice; import com.jianshui.common.enums.ErrorCode; import com.jianshui.common.exception.jianshui.JianshuiParamErrorException; -import com.jianshui.common.exception.jianshui.JianshuiServiceException; import com.jianshui.common.utils.StringUtils; import com.jianshui.common.utils.http.HttpHelper; -import com.jianshui.common.utils.uuid.IdUtils; import com.jianshui.framework.manager.AsyncManager; -import com.jianshui.invoice.constant.elephant.ElephantConstants; import com.jianshui.invoice.domain.*; import com.jianshui.invoice.domain.ele.EleNewMessage; -import com.jianshui.invoice.domain.ele.EleOuterMessage; import com.jianshui.invoice.domain.ele.FindRedInfoDTO; -import com.jianshui.invoice.domain.ele.HZSQDMessage; import com.jianshui.invoice.mapper.InvoiceBackMapper; import com.jianshui.invoice.mapper.InvoiceFileMapper; import com.jianshui.invoice.service.impl.api.ElephantInvoiceApiV6ServiceImpl; import com.jianshui.invoice.task.AddInvoiceBatchTask; -import com.jianshui.invoice.task.InvoiceBackTask; -import com.jianshui.invoice.utils.elephant.ElephantUtils; import com.jianshui.platform.dto.InvoiceAdd.BillInfoPDTO; import com.jianshui.invoice.domain.dto.*; import com.jianshui.invoice.domain.dto.api.*; @@ -58,14 +46,8 @@ import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.rendering.PDFRenderer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; -import org.springframework.scheduling.annotation.Async; -import org.springframework.ui.Model; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; -import org.springframework.web.servlet.ModelAndView; import javax.imageio.ImageIO; import javax.servlet.http.HttpServletRequest; @@ -73,8 +55,6 @@ import javax.servlet.http.HttpServletResponse; import java.awt.image.BufferedImage; import java.io.*; import java.net.URLEncoder; -import java.security.InvalidKeyException; -import java.security.NoSuchAlgorithmException; import java.util.*; /** @@ -113,6 +93,42 @@ public class InvoiceController { private InvoiceFileMapper invoiceFileMapper; + /** + * 发票列表查询接口 + * @param request + * @param identity + * @return + * @throws Exception + */ + @PostMapping({"/api/invoice/v1/queryInvoiceList", "/api/invoice/v1/queryInvoiceList/{identity}", "/invoice/queryInvoiceList"}) + public Object queryInvoiceList(HttpServletRequest request, String identity) throws Exception { + log.info("发票列表查询接口,开始执行"); + if (StringUtils.isEmpty(identity)) { + DxhyInterfaceResponse dxhyInterfaceResponse = new DxhyInterfaceResponse(); + dxhyInterfaceResponse.setCode("9999"); + dxhyInterfaceResponse.setMessage("身份认证参数为空"); + return dxhyInterfaceResponse; + } + Companyservice companyservice = iCompanyserviceService.selectCompanyserviceByIdentity(identity); + if (companyservice == null) { + DxhyInterfaceResponse dxhyInterfaceResponse = new DxhyInterfaceResponse(); + dxhyInterfaceResponse.setCode("9999"); + dxhyInterfaceResponse.setMessage("企业信息不存在"); + return dxhyInterfaceResponse; + } + String requestAdapterKey = serviceManageService.getRequestAdapterKey("invoice", companyservice.getCompanyid()); + IInvoiceRequestService invoiceRequestService = invoiceRequestFactory.getService(requestAdapterKey); + JSONObject decryptResult = invoiceRequestService.decrypt(request, companyservice, "query_invoice_list"); + // 获得请求实例,并且进行扣费 + log.info("发票列表查询接口,解密数据{}", decryptResult); + QueryInvoiceListDTO queryInvoiceList = decryptResult.toJavaObject(QueryInvoiceListDTO.class); + log.info("发票列表查询接口,转换数据{}", JSONUtil.toJsonStr(queryInvoiceList)); + String serviceKey = serviceManageService.getCompanyServiceSupplier("invoice", companyservice.getCompanyid()); + serviceManageService.companyConsume("invoice", companyservice.getCompanyid()); + IInvoiceApiService invoiceService = invoiceServiceFactory.getService(serviceKey); + return invoiceService.queryInvoiceList(queryInvoiceList, companyservice); + } + /** * 功能描述: 红字查询接口 * diff --git a/jianshui-admin/src/main/java/com/jianshui/web/controller/sandbox/IndexController.java b/jianshui-admin/src/main/java/com/jianshui/web/controller/sandbox/IndexController.java index a63ea54..2566da0 100644 --- a/jianshui-admin/src/main/java/com/jianshui/web/controller/sandbox/IndexController.java +++ b/jianshui-admin/src/main/java/com/jianshui/web/controller/sandbox/IndexController.java @@ -3,7 +3,11 @@ package com.jianshui.web.controller.sandbox; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.annotation.JSONCreator; import com.jianshui.common.core.domain.AjaxResult; +import com.jianshui.common.core.domain.entity.Companyservice; import com.jianshui.common.utils.encrypt.InvoiceEncryptUtil; +import com.jianshui.system.mapper.CompanyserviceMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -16,15 +20,47 @@ import org.springframework.web.bind.annotation.RestController; **/ @RestController @RequestMapping("/sandbox") +@Slf4j public class IndexController { + @Autowired + private CompanyserviceMapper companyserviceMapper; + @PostMapping("/encrypt") public AjaxResult encrypt(@RequestBody JSONObject requestBody) { String key = requestBody.getString("key"); String order = requestBody.getString("order"); + // 查询企业信息 + Companyservice companyservice = companyserviceMapper.selectCompanyserviceByIdentity(key); + try { + if (companyservice != null){ + String encryptTest = InvoiceEncryptUtil.encrypt(order, companyservice.getSecret()); + return AjaxResult.success("success", encryptTest); + }else { + String encryptTest = InvoiceEncryptUtil.encrypt(order, key); + return AjaxResult.success("success", encryptTest); + } + }catch (Exception e){ + return AjaxResult.error(e.getMessage()); + } + + } + + + @PostMapping("/decrypt") + public AjaxResult decrypt(@RequestBody JSONObject requestBody) { + String key = requestBody.getString("key"); + String order = requestBody.getString("order"); + // 查询企业信息 + Companyservice companyservice = companyserviceMapper.selectCompanyserviceByIdentity(key); try { - String encryptTest = InvoiceEncryptUtil.encrypt(order, key); - return AjaxResult.success("success", encryptTest); + if (companyservice != null){ + String decryptTest = InvoiceEncryptUtil.decrypt(order, companyservice.getSecret()); + return AjaxResult.success("success", decryptTest); + }else { + String decryptTest = InvoiceEncryptUtil.decrypt(order, key); + return AjaxResult.success("success", decryptTest); + } }catch (Exception e){ return AjaxResult.error(e.getMessage()); } diff --git a/jianshui-common/src/main/java/com/jianshui/common/utils/encrypt/InvoiceEncryptUtil.java b/jianshui-common/src/main/java/com/jianshui/common/utils/encrypt/InvoiceEncryptUtil.java index 7cab596..038c6e2 100644 --- a/jianshui-common/src/main/java/com/jianshui/common/utils/encrypt/InvoiceEncryptUtil.java +++ b/jianshui-common/src/main/java/com/jianshui/common/utils/encrypt/InvoiceEncryptUtil.java @@ -3,12 +3,19 @@ package com.jianshui.common.utils.encrypt; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; +import javax.crypto.BadPaddingException; import javax.crypto.Cipher; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.io.IOException; import java.io.UnsupportedEncodingException; +import java.security.InvalidAlgorithmParameterException; +import java.security.InvalidKeyException; import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Arrays; /** * 功能描述 @@ -65,6 +72,77 @@ public class InvoiceEncryptUtil { } + public static String decrypt(String encryptedStr, String mkey) { + byte[] encryptedData = {}; + try { + // 解析Base64编码的字符串 + encryptedData = new BASE64Decoder().decodeBuffer(encryptedStr); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + + // 取密钥和偏转向量 + byte[] key = new byte[8]; + byte[] iv = new byte[8]; + getKeyIV(mkey, key, iv); + SecretKeySpec deskey = new SecretKeySpec(key, "DES"); + IvParameterSpec ivParam = new IvParameterSpec(iv); + + // 使用DES算法解密消息体 + byte[] decryptedData = null; + try { + Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); + cipher.init(Cipher.DECRYPT_MODE, deskey, ivParam); + decryptedData = cipher.doFinal(encryptedData); + } catch (NoSuchAlgorithmException | NoSuchPaddingException | + InvalidKeyException | InvalidAlgorithmParameterException | + IllegalBlockSizeException | BadPaddingException e) { + e.printStackTrace(); + return null; + } + + // 分离出MD5哈希和原始数据 + byte[] originalData = null; + byte[] calculatedMD5Hash = null; + // 假设MD5哈希占用16字节 + if (decryptedData.length >= 16) { + calculatedMD5Hash = new byte[16]; + originalData = new byte[decryptedData.length - 16]; + System.arraycopy(decryptedData, 0, calculatedMD5Hash, 0, 16); + System.arraycopy(decryptedData, 16, originalData, 0, originalData.length); + } else { + // 数据长度不符合预期,可能被篡改 + return null; + } + + // 验证MD5哈希 + byte[] recalculatedMD5Hash = null; + try { + recalculatedMD5Hash = MD5Hash(originalData, 0, originalData.length); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + + // MD5校验失败 + if (!Arrays.equals(calculatedMD5Hash, recalculatedMD5Hash)) { + return null; + } + + // 将原始数据转换回字符串 + String originalStr = null; + try { + originalStr = new String(originalData, "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + return null; + } + + return originalStr; + } + + /** *
  • * 方法名称:DES_CBC_Encrypt
  • 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 42e1ba9..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,11 +202,9 @@ 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 str = "{\"jym\":\"\",\"fpje\":\"174576.62\",\"fpdm\":\"\",\"kprq\":\"20240723\",\"fphm\":\"24372000000129562880\",\"fpzl\":\"22\",\"taxNo\":\"90370102MAC0CNQC0L\"}"; - String key = "H5/GxC9v//HUXTp4/fg0rg=="; - System.out.println("AES密钥:"); - System.out.println(encrypt(str,key)); + 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-framework/src/main/java/com/jianshui/framework/config/SecurityConfig.java b/jianshui-framework/src/main/java/com/jianshui/framework/config/SecurityConfig.java index b33a403..0a2890e 100644 --- a/jianshui-framework/src/main/java/com/jianshui/framework/config/SecurityConfig.java +++ b/jianshui-framework/src/main/java/com/jianshui/framework/config/SecurityConfig.java @@ -135,6 +135,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { "/invoice/QueryFastRedInvoiceResult", "/invoice/issueFastRedInvoice", "/invoice/fastRedInvoice", + "/invoice/queryInvoiceList", + "/invoice/fastRedInvoice", "/webservice/income/v1/checkNew/**", "/income/v1/checkNew/**" ) diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/constant/elephant/ElephantConstantsV6.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/constant/elephant/ElephantConstantsV6.java index 7c072ba..ad684df 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/constant/elephant/ElephantConstantsV6.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/constant/elephant/ElephantConstantsV6.java @@ -63,6 +63,8 @@ public class ElephantConstantsV6 { public static String REDINFO_DOWNLOAD_METHOD = "DownloadRedInvoiceApplicationResult"; public static String REDINFO_FIND_LOCALHOST = "/invoice/api/v6/GetRedInvoiceApplication"; public static String REDINFO_FIND_METHOD = "GetRedInvoiceApplication"; + public static String INVOICE_LIST_INFO_URL = "/invoice/api/v6/QueryInvoiceList"; + public static String INVOICE_LIST_METHOD = "QueryInvoiceList"; // 数电-生成动态二维码 diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/QueryInvoiceListDTO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/QueryInvoiceListDTO.java new file mode 100644 index 0000000..1329684 --- /dev/null +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/QueryInvoiceListDTO.java @@ -0,0 +1,48 @@ +package com.jianshui.invoice.domain.dto; + +import lombok.Data; + +import java.util.List; + +@Data +public class QueryInvoiceListDTO { + // 纳税人识别号 + private String NSRSBH; + // 归集标签(查询类型)需有值 + private String GJBQ; + // 发票状态代码 + private List FPZT_DM; + // 发票来源代码(必填) + private String FPLY_DM; + // 发票类型代码 + private List FPLX_DM; + // 开票日期起(必填) + private String KPRQQ; + // 开票日期止(必填) + private String KPRQZ; + // 发票号码 + private String QDFP_HM; + // 纸质发票代码 + private String ZZFPDM; + // 纸质发票号码 + private String ZZFPHM; + // 对方纳税人识别号 + private String DFNSRSBH; + // 对方纳税人名称 + private String DFNSRMC; + // 购买方纳税人识别号 + private String GHF_NSRSBH; + // 购买方名称 + private String GHF_MC; + // 查询页码 + private String CXYM; + // 查询标志 + private String CXBZ; + // 每页条数 + private String TS; + // 登录账号 + private String YHM; + + + +} 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/mapper/InvoiceMapper.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/mapper/InvoiceMapper.java index 804844c..3b083d6 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/mapper/InvoiceMapper.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/mapper/InvoiceMapper.java @@ -102,6 +102,7 @@ public interface InvoiceMapper extends BaseMapper { public Invoice selectByOutTradeOrderno(@Param(("companyId")) Long companyId, @Param("out_trade_orderno") String systemOrderNo,@Param("update_by") String updateBy); public Invoice selectByOutTradeOrdernoNoUpdateBy(@Param(("companyId")) Long companyId, @Param("out_trade_orderno") String systemOrderNo); public List selectByOutTradeOrdernoList(@Param(("companyId")) Long companyId, @Param("out_trade_orderno") String systemOrderNo,@Param("update_by") String updateBy); + public List selectByOutTradeOrdernoListNoUpdateBy(@Param(("companyId")) Long companyId, @Param("out_trade_orderno") String systemOrderNo); /** diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/IInvoiceApiService.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/IInvoiceApiService.java index b33e204..93d2528 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/IInvoiceApiService.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/IInvoiceApiService.java @@ -371,4 +371,7 @@ public interface IInvoiceApiService { HXResponse loginVerificated(JSONObject decryptResult, Companyservice companyservice); HXResponse saveInvoice(String identity, String billInfoId, JSONObject resultJSON); + + /** 查询发票列表 */ + HXResponse queryInvoiceList(QueryInvoiceListDTO queryInvoiceList, Companyservice companyservice); } \ No newline at end of file diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/ElephantInvoiceServiceImpl.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/ElephantInvoiceServiceImpl.java index 5f338e9..7ad58f8 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/ElephantInvoiceServiceImpl.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/ElephantInvoiceServiceImpl.java @@ -303,9 +303,9 @@ public class ElephantInvoiceServiceImpl implements ElephantInvoiceService { ICompanyservicePropService companyserviceProp = SpringUtils.getBean(ICompanyservicePropService.class); CompanyserviceProp secretIdProp = companyserviceProp.selectPropByKey(Long.valueOf(companyservice.getIdentity()), "aisino_callback_url"); String callBackUrl = secretIdProp.getValue(); - log.info("【控制台】发票回调接口,发送数据开始,callBackUrl={},param={}", callBackUrl, JSONUtil.toJsonStr(invoice)); + log.info("【控制台1】发票回调接口,发送数据开始,callBackUrl={},param={}", callBackUrl, JSONUtil.toJsonStr(invoice)); String result = HttpUtil.post(callBackUrl, JSONUtil.toJsonStr(invoice)); - log.info("【控制台】发票回调接口,发送数据结束,接口返回信息={}", result); + log.info("【控制台1】发票回调接口,发送数据结束,接口返回信息={}", result); JSONObject resultObject = JSONObject.parseObject(result); if (StringUtils.isNotBlank(resultObject.getString("status")) && "0000".equals(resultObject.getString("status"))){ @@ -502,7 +502,7 @@ public class ElephantInvoiceServiceImpl implements ElephantInvoiceService { invoiceBack.setIdentity(companyservice.getIdentity()); invoiceBack.setBackMsg(""); invoiceBack.setBackUrl(""); - invoiceBack.setSystemOrderno(invoice.getOutTradeOrderno()); + invoiceBack.setSystemOrderno(invoice.getFpqqlsh()); invoiceBack.setStatus("0"); invoiceBack.setCreateTime(new Date()); invoiceBackMapper.insertInvoiceBack(invoiceBack); @@ -759,9 +759,9 @@ public class ElephantInvoiceServiceImpl implements ElephantInvoiceService { try { - log.info("【控制台】发票回调接口,发送数据开始,id={},callBackUrl={},param={}", id, callBackUrl, JSONUtil.toJsonStr(invoice)); + log.info("【控制台1】发票回调接口,发送数据开始,id={},callBackUrl={},param={}", id, callBackUrl, JSONUtil.toJsonStr(invoice)); String result = HttpUtil.post(callBackUrl, JSONUtil.toJsonStr(invoice)); - log.info("【控制台】发票回调接口,发送数据结束,id={},接口返回信息={}", id, result); + log.info("【控制台1】发票回调接口,发送数据结束,id={},接口返回信息={}", id, result); cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(result); if (jsonObject != null) { @@ -786,7 +786,7 @@ public class ElephantInvoiceServiceImpl implements ElephantInvoiceService { } } } catch (Exception e) { - log.info("【控制台】发票回调接口,发送数据异常,id={},e={}", id,e); + log.info("【控制台1】发票回调接口,发送数据异常,id={},e={}", id,e); invoiceBack.setStatus("2"); invoiceBack.setBackMsg("发送数据异常!"); invoiceBackMapper.updateInvoiceBack(invoiceBack); diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/request/AisinoInvoiceRequestAdapterImpl.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/request/AisinoInvoiceRequestAdapterImpl.java index 20473b4..acdc77e 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/request/AisinoInvoiceRequestAdapterImpl.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/request/AisinoInvoiceRequestAdapterImpl.java @@ -143,7 +143,7 @@ public class AisinoInvoiceRequestAdapterImpl implements IInvoiceRequestService { // throw new JianshuiParamErrorException(ErrorCode.IDENTITY_NOT_MATCH,"invoice); // } // 红字查询 - if (StringUtils.equals(serviceKey, "find_redinfo")) { + if (StringUtils.equals(serviceKey, "find_redinfo") || StringUtils.equals(serviceKey, "query_invoice_list")) { return json; } // 如果是开票或者查询 diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiServiceImpl.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiServiceImpl.java index 3c77a21..3e9a5d6 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiServiceImpl.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiServiceImpl.java @@ -365,16 +365,16 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService { Invoice invoice = invoiceMapper.selectInvoiceById(id); if (invoice == null) { - log.info("【控制台】发票信息未查询到,id={}", id); + log.info("【控制台1】发票信息未查询到,id={}", id); return; } try { - log.info("【控制台】发票回调接口,发送数据开始,id={},参数={}", id,JSONUtil.toJsonStr(invoice)); + log.info("【控制台1】发票回调接口,发送数据开始,id={},参数={}", id,JSONUtil.toJsonStr(invoice)); String result = HttpUtil.post(callBackUrl, JSONUtil.toJsonStr(invoice)); - log.info("【控制台】发票回调接口,发送数据结束,id={},接口返回信息={}", id, result); + log.info("【控制台1】发票回调接口,发送数据结束,id={},接口返回信息={}", id, result); } catch (Exception e) { - log.info("【控制台】发票回调接口,发送数据异常,id={}", id); + log.info("【控制台1】发票回调接口,发送数据异常,id={}", id); throw new RuntimeException(e); } @@ -1087,6 +1087,11 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService { return null; } + @Override + public HXResponse queryInvoiceList(QueryInvoiceListDTO queryInvoiceList, Companyservice companyservice) { + return null; + } + @Override public AjaxResult syncStockInfo(Companyservice companyservice) { diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiZhongQiServiceImpl.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiZhongQiServiceImpl.java index aa493c9..31f8691 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiZhongQiServiceImpl.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiZhongQiServiceImpl.java @@ -20,7 +20,6 @@ import com.jianshui.common.exception.jianshui.JianshuiServiceException; import com.jianshui.common.utils.*; import com.jianshui.common.utils.spring.SpringUtils; import com.jianshui.common.utils.uuid.IdUtils; -import com.jianshui.framework.manager.AsyncManager; import com.jianshui.invoice.constant.aisino.console.AisinoConsoleConstants; import com.jianshui.invoice.domain.*; import com.jianshui.invoice.domain.dto.*; @@ -133,7 +132,7 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer invoiceBackVali.setBackUrl(""); invoiceBackVali.setStatus("0"); invoiceBackVali.setCreateTime(new Date()); - invoiceBackVali.setSystemOrderno(invoice.getOutTradeOrderno()); + invoiceBackVali.setSystemOrderno(invoice.getFpqqlsh()); invoiceBackVali.setBackMsg(""); invoiceBackVali.setResultCode("0000"); invoiceBackVali.setResultMsg("开票成功!"); @@ -426,7 +425,7 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer queryInvoiceBack.setBackUrl(callBackUrl); queryInvoiceBack.setStatus("0"); queryInvoiceBack.setCreateTime(new Date()); - queryInvoiceBack.setSystemOrderno(billInfo.getOutTradeOrderno()); + queryInvoiceBack.setSystemOrderno(billInfo.getFpqqlsh()); queryInvoiceBack.setBackMsg(""); queryInvoiceBack.setResultCode("0000"); queryInvoiceBack.setResultMsg("开票成功!"); @@ -541,7 +540,7 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer queryInvoiceBack.setBackUrl(callBackUrl); queryInvoiceBack.setStatus("0"); queryInvoiceBack.setCreateTime(new Date()); - queryInvoiceBack.setSystemOrderno(billInfo.getOutTradeOrderno()); + queryInvoiceBack.setSystemOrderno(billInfo.getFpqqlsh()); queryInvoiceBack.setBackMsg(""); queryInvoiceBack.setResultCode("0000"); queryInvoiceBack.setResultMsg("开票成功!"); @@ -571,6 +570,10 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer } } + @Override + public HXResponse queryInvoiceList(QueryInvoiceListDTO queryInvoiceList, Companyservice companyservice) { + return null; + } /** @@ -616,9 +619,9 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer jsonResult.set("message", invoiceBack.getResultMsg()); jsonResult.set("data", invoice);*/ - log.info("【控制台】发票回调接口,发送数据开始,id={},callBackUrl={},param={}", id, callBackUrl, JSONUtil.toJsonStr(invoice)); + log.info("【控制台1】发票回调接口,发送数据开始,id={},callBackUrl={},param={}", id, callBackUrl, JSONUtil.toJsonStr(invoice)); String result = HttpUtil.post(callBackUrl, JSONUtil.toJsonStr(invoice)); - log.info("【控制台】发票回调接口,发送数据结束,id={},接口返回信息={}", id, result); + log.info("【控制台1】发票回调接口,发送数据结束,id={},接口返回信息={}", id, result); cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(result); if (jsonObject != null) { @@ -643,7 +646,7 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer } } } catch (Exception e) { - log.info("【控制台】发票回调接口,发送数据异常,id={},e={}", id,e); + log.info("【控制台1】发票回调接口,发送数据异常,id={},e={}", id,e); invoiceBack.setStatus("2"); invoiceBack.setBackMsg("发送数据异常!"); invoiceBackMapper.updateInvoiceBack(invoiceBack); diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/ElephantInvoiceApiServiceImpl.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/ElephantInvoiceApiServiceImpl.java index f055167..f5ecdcb 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/ElephantInvoiceApiServiceImpl.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/ElephantInvoiceApiServiceImpl.java @@ -27,10 +27,6 @@ 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.addInvoice.Bdcxsxx; -import com.jianshui.invoice.domain.dto.api.elephant.addInvoice.Fjys; -import com.jianshui.invoice.domain.dto.api.elephant.addInvoice.Hwys; -import com.jianshui.invoice.domain.dto.api.elephant.addInvoice.Jzfwxx; import com.jianshui.invoice.domain.ele.EleNewMessage; import com.jianshui.invoice.domain.ele.EleOuterMessage; import com.jianshui.invoice.domain.ele.HZSQDMessage; @@ -47,7 +43,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 +92,9 @@ public class ElephantInvoiceApiServiceImpl implements IInvoiceApiService { @Autowired private IBillInfoService billInfoService; + @Autowired + private CompanyservicePropMapper companyservicePropMapper; + /** * 发票开具 * @@ -207,7 +208,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,6 +236,14 @@ public class ElephantInvoiceApiServiceImpl implements IInvoiceApiService { queryBody.put("DDQQPCH", billInfo.getSystemOrderno()); queryBody.put("FPLXDM", fplxdm); queryBody.put("SFFHSBSJ", "0"); + + 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); @@ -359,7 +369,14 @@ public class ElephantInvoiceApiServiceImpl implements IInvoiceApiService { JSONObject queryBody = new JSONObject(); queryBody.put("NSRSBH", companyservice.getSellertax()); queryBody.put("DDQQLSH", originBillInfo.getSystemOrderno()); - queryBody.put("BSWJ", "0"); + + 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)); @@ -908,6 +925,11 @@ public class ElephantInvoiceApiServiceImpl implements IInvoiceApiService { return null; } + @Override + public HXResponse queryInvoiceList(QueryInvoiceListDTO queryInvoiceList, Companyservice companyservice) { + return null; + } + /** * 申请/上传 红字发票 diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/ElephantInvoiceApiV6ByInspurServiceImpl.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/ElephantInvoiceApiV6ByInspurServiceImpl.java index 2b89a48..17ba2b4 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/ElephantInvoiceApiV6ByInspurServiceImpl.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/ElephantInvoiceApiV6ByInspurServiceImpl.java @@ -51,7 +51,6 @@ import com.jianshui.invoice.service.IBillInfoService; import com.jianshui.invoice.service.IInvoiceApiService; import com.jianshui.invoice.task.QueryInvoiceTask; import com.jianshui.invoice.utils.BillInfoInspurUtils; -import com.jianshui.invoice.utils.BillInfoUtils; import com.jianshui.invoice.utils.elephant.ElephantUtils; import com.jianshui.queue.utils.RedisQueueUtil; import com.jianshui.storage.domain.StorageUrlDTO; @@ -296,7 +295,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 +327,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 +479,15 @@ public class ElephantInvoiceApiV6ByInspurServiceImpl implements IInvoiceApiServi JSONObject queryBody = new JSONObject(); queryBody.put("NSRSBH", companyservice.getSellertax()); queryBody.put("DDQQLSH", originBillInfo.getSystemOrderno()); - queryBody.put("BSWJ", "0"); + + 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); @@ -1192,6 +1205,11 @@ public class ElephantInvoiceApiV6ByInspurServiceImpl implements IInvoiceApiServi return null; } + @Override + public HXResponse queryInvoiceList(QueryInvoiceListDTO queryInvoiceList, Companyservice companyservice) { + return null; + } + /** * 红字确认单列表查询(数电专用) @@ -3066,9 +3084,9 @@ public class ElephantInvoiceApiV6ByInspurServiceImpl implements IInvoiceApiServi invoice.setInvoiceResultMsg(""); } - log.info("【控制台】发票回调接口,发送数据开始,id={},callBackUrl={},param={}", id, callBackUrl, JSONUtil.toJsonStr(invoice)); + log.info("【控制台2】发票回调接口,发送数据开始,id={},callBackUrl={},param={}", id, callBackUrl, JSONUtil.toJsonStr(invoice)); String result = HttpUtil.post(callBackUrl, JSONUtil.toJsonStr(invoice)); - log.info("【控制台】发票回调接口,发送数据结束,id={},接口返回信息={}", id, result); + log.info("【控制台2】发票回调接口,发送数据结束,id={},接口返回信息={}", id, result); cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(result); if (jsonObject != null) { @@ -3093,7 +3111,7 @@ public class ElephantInvoiceApiV6ByInspurServiceImpl implements IInvoiceApiServi } } } catch (Exception e) { - log.info("【控制台】发票回调接口,发送数据异常,id={},e={}", id,e); + log.info("【控制台2】发票回调接口,发送数据异常,id={},e={}", id,e); invoiceBack.setStatus("2"); invoiceBack.setBackMsg("发送数据异常!"); invoiceBackMapper.updateInvoiceBack(invoiceBack); @@ -3137,7 +3155,7 @@ public class ElephantInvoiceApiV6ByInspurServiceImpl implements IInvoiceApiServi invoiceBackVali.setBackUrl(""); invoiceBackVali.setStatus("0"); invoiceBackVali.setCreateTime(new Date()); - invoiceBackVali.setSystemOrderno(invoice.getOutTradeOrderno()); + invoiceBackVali.setSystemOrderno(invoice.getFpqqlsh()); invoiceBackVali.setBackMsg(""); invoiceBackVali.setResultCode("0000"); invoiceBackVali.setResultMsg("开票成功!"); @@ -3292,7 +3310,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 +3343,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("TQM", "0"); // 订单号 @@ -3401,7 +3425,7 @@ public class ElephantInvoiceApiV6ByInspurServiceImpl implements IInvoiceApiServi queryInvoiceBack.setBackUrl(callBackUrl); queryInvoiceBack.setStatus(InvoiceBackStatusEnum.IN_PROCESS.getCode()); queryInvoiceBack.setCreateTime(new Date()); - queryInvoiceBack.setSystemOrderno(billInfo.getOutTradeOrderno()); + queryInvoiceBack.setSystemOrderno(billInfo.getFpqqlsh()); queryInvoiceBack.setBackMsg(""); queryInvoiceBack.setResultCode("0000"); queryInvoiceBack.setResultMsg("开票中,进入队列"); 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 869faea..9a2e8a1 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 @@ -1,15 +1,12 @@ package com.jianshui.invoice.service.impl.api; -import ch.qos.logback.core.joran.spi.ElementPath; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.codec.Base64; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; -import cn.hutool.json.JSONConfig; import cn.hutool.json.JSONUtil; -import com.alibaba.druid.support.json.JSONUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -55,7 +52,6 @@ import com.jianshui.invoice.service.IBillInfoService; import com.jianshui.invoice.service.IInvoiceApiService; import com.jianshui.invoice.task.QueryInvoiceTask; import com.jianshui.invoice.utils.BillInfoUtils; -import com.jianshui.invoice.utils.JsonCaseUtils; import com.jianshui.invoice.utils.elephant.ElephantUtils; import com.jianshui.queue.utils.RedisQueueUtil; import com.jianshui.storage.domain.StorageUrlDTO; @@ -71,28 +67,21 @@ import com.jianshui.system.service.ISysConfigService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; -import org.apache.ibatis.annotations.Lang; -import org.joda.time.format.DateTimeFormat; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.FileOutputStream; -import java.io.IOException; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.format.DateTimeFormatter; import java.util.*; -import java.util.stream.Collectors; /** * 销项实现 @@ -149,6 +138,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { /** * 发票开具 * v6 + * * @param billInfo * @return */ @@ -158,18 +148,18 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { /** 查找权限ID */ String entId = ""; CompanyserviceProp companyservicePropEntId = companyservicePropMapper.selectPropByKey(companyservice.getCompanyid(), "ent_id"); - if(companyservicePropEntId != null && StrUtil.isNotEmpty(companyservicePropEntId.getValue()) ){ + if (companyservicePropEntId != null && StrUtil.isNotEmpty(companyservicePropEntId.getValue())) { entId = companyservicePropEntId.getValue(); - }else{ + } else { log.info("权限id未配置,需配置key名 ent_id,实现权限管理"); } - String clerk = billInfo.getClerk() != null ? billInfo.getClerk():""; - if(StrUtil.isNotEmpty(clerk)) { + String clerk = billInfo.getClerk() != null ? billInfo.getClerk() : ""; + if (StrUtil.isNotEmpty(clerk)) { CompanyserviceProp companyservicePropClerk = companyservicePropMapper.selectPropByKey(companyservice.getCompanyid(), clerk); - if(companyservicePropClerk != null && StrUtil.isNotEmpty(companyservicePropClerk.getValue()) ){ + if (companyservicePropClerk != null && StrUtil.isNotEmpty(companyservicePropClerk.getValue())) { entId = companyservicePropClerk.getValue(); - }else{ + } else { log.info("权限id未配置,需配置key名 clerk,实现权限管理"); } } @@ -195,7 +185,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { log.error("【销项】【大象发票】开票接口校验异常", e); return new HXResponse("格式校验失败,请检查报文"); } - log.info("billInfo信息:{}",JSONObject.toJSONString(billInfo)); + log.info("billInfo信息:{}", JSONObject.toJSONString(billInfo)); // 订单头信息 DDTXX ddtxx = new DDTXX(billInfo); @@ -251,7 +241,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { // 权限id赋值 ddpcxx.setENTID(entId); - if ("001".equals(fplxdm)||"002".equals(fplxdm)){ + if ("001".equals(fplxdm) || "002".equals(fplxdm)) { CompanyserviceProp companyserviceProp = companyservicePropMapper.selectPropByKey(companyservice.getCompanyid(), "account_show"); if (companyserviceProp != null && "1".equals(companyserviceProp.getValue())) { @@ -270,18 +260,18 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { qdtxx.setFJYSLIST(billInfo.getFjyslist());// 附加要素列表 qdtxx.setHWYSLIST(billInfo.getHwysList()); // 货物运输 - if(billInfo.getBdcxsxxList() != null && !billInfo.getBdcxsxxList().isEmpty()){ + if (billInfo.getBdcxsxxList() != null && !billInfo.getBdcxsxxList().isEmpty()) { qdtxx.setBDCXSXX(billInfo.getBdcxsxxList().get(0)); // 不动产销售信息 } - if(billInfo.getJzfwList() != null && !billInfo.getJzfwList().isEmpty()){ + if (billInfo.getJzfwList() != null && !billInfo.getJzfwList().isEmpty()) { qdtxx.setJZFWXX(billInfo.getJzfwList().get(0));// 建筑服务信息 } - if(billInfo.getBdczlxxList() != null && !billInfo.getBdczlxxList().isEmpty()){ + if (billInfo.getBdczlxxList() != null && !billInfo.getBdczlxxList().isEmpty()) { qdtxx.setBDCZLXX(billInfo.getBdczlxxList().get(0));// 不动产租赁信息 } - if(billInfo.getJDCXX() != null ){ - qdtxx.setJDCXX(billInfo.getJDCXX() );// 机动车信息 + if (billInfo.getJDCXX() != null) { + qdtxx.setJDCXX(billInfo.getJDCXX());// 机动车信息 } // qdtxx.setBDCZLXX(billInfo.getBdczlxxList()); //不动产租赁信息 @@ -299,14 +289,14 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { } else if (BeanUtil.isNotEmpty(qdtxx.getBDCZLXX())) { // GenerateQdBdczlInvoice 不动产租赁信息 url = ElephantConstantsV6.GENERATE_QD_BDXZL_INVOICE; - }else if( BeanUtil.isNotEmpty(qdtxx.getJDCXX()) ){ + } else if (BeanUtil.isNotEmpty(qdtxx.getJDCXX())) { // GenerateQdjdcxsInvoice 数电机动车销售统一发票 url = ElephantConstantsV6.GENERATE_QD_JDCXS_INVOICE; } // 机动车专票适配 - String jdcbz = billInfo.getJdcbz() != null ? billInfo.getJdcbz():""; - if("1".equals(jdcbz)){ + String jdcbz = billInfo.getJdcbz() != null ? billInfo.getJdcbz() : ""; + if ("1".equals(jdcbz)) { billInfo.setTdys("14"); // (数电机动车专票)发票开具/冲红接口 url = ElephantConstantsV6.GENERATE_QD_JDCZP_INVOICE; @@ -342,7 +332,8 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { e.printStackTrace(); throw new JianshuiServiceException("系统异常!"); } - log.info("【销项发票】【大象发票】发票开具请求结果{}", queryResult.toString()); +// log.info("【销项发票】【大象发票】发票开具请求结果{}", queryResult.toString()); + log.info("【销项发票】【大象发票】发票开具请求结果"); // 判断外层报文是否成功 if (queryResult.isError()) { @@ -385,6 +376,12 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { queryBody.put("DDRQQ", "0"); // 订单日期止 queryBody.put("DDRQZ", "0");*/ + 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); @@ -405,7 +402,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { if (contentJson != null) { String ztdm = contentJson.getString("ZTDM"); // 021002 020111 - if (!StringUtils.equalsAny(ztdm, "020111", "020000", "010000","000000")) { + if (!StringUtils.equalsAny(ztdm, "020111", "020000", "010000", "000000")) { // 开票失败 if (StringUtils.equals("020002", ztdm)) { billInfo.setState(22); @@ -414,10 +411,10 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { // kk: 2023/12/5 判断人脸识别的状态 String DDFPZXX = contentJson.getString("DDFPZXX") != null ? contentJson.getString("DDFPZXX") : ""; - if(StrUtil.isNotEmpty(DDFPZXX)){ - DDFPZXX ddfpzxx = BeanUtil.copyProperties(DDFPZXX,DDFPZXX.class); - if(ddfpzxx != null && ddfpzxx.getDDFPXX() != null && "03200".equals(ddfpzxx.getDDFPXX().getDDZT())){ - return new HXResponse("E004",ddfpzxx.getDDFPXX().getDDZTXX() != null ? ddfpzxx.getDDFPXX().getDDZTXX():"发票开具失败,请确认是否人脸识别超期!"); + if (StrUtil.isNotEmpty(DDFPZXX)) { + DDFPZXX ddfpzxx = BeanUtil.copyProperties(DDFPZXX, DDFPZXX.class); + if (ddfpzxx != null && ddfpzxx.getDDFPXX() != null && "03200".equals(ddfpzxx.getDDFPXX().getDDZT())) { + return new HXResponse("E004", ddfpzxx.getDDFPXX().getDDZTXX() != null ? ddfpzxx.getDDFPXX().getDDZTXX() : "发票开具失败,请确认是否人脸识别超期!"); } } @@ -432,7 +429,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { } // 定时拉取保存发票, TODO 处理开票中的问题 - AsyncManager.me().execute(new QueryInvoiceTask(billInfo, companyservice, this,invoiceBackMapper)); + AsyncManager.me().execute(new QueryInvoiceTask(billInfo, companyservice, this, invoiceBackMapper)); // 数电的加入金财表 InvoiceAllApiLog allApiLog = new InvoiceAllApiLog(); @@ -471,6 +468,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { /** * 单个发票查询接口 * V6 + * * @param billInfo * @return */ @@ -515,7 +513,14 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { JSONObject queryBody = new JSONObject(); queryBody.put("NSRSBH", companyservice.getSellertax()); queryBody.put("DDQQLSH", originBillInfo.getSystemOrderno()); - queryBody.put("BSWJ", "0"); + + 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; @@ -669,27 +674,27 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { String fileId = IdUtils.randomUUID(); String fileName = invoice.getFphm(); - if(ddfpxx.getPDFZJL() != null && StrUtil.isNotEmpty(ddfpxx.getPDFZJL())){ + if (ddfpxx.getPDFZJL() != null && StrUtil.isNotEmpty(ddfpxx.getPDFZJL())) { String fphm = ddfpxx.getFPHM(); - if(StrUtil.isNotEmpty(fphm)){ + if (StrUtil.isNotEmpty(fphm)) { Environment environment = SpringUtils.getBean(Environment.class); String type = environment.getProperty(Constants.INVOICE_FILE_SAVE_TYPE); //配置文件存储类型0为数据库存储 - if (Constants.STRING_0.equals(type)){ - saveFileUseDb(invoice, fileId, fileName,companyservice, ddfpxx); - //配置文件存储类型1为oss存储 - }else if (Constants.STRING_1.equals(type)){ - saveFileUseOss(defaultStorage,invoice,ddfpxx); - //配置文件存储类型2为本地存储 - }else if (Constants.STRING_2.equals(type)){ - saveFileUseLocal(invoice,ddfpxx); + if (Constants.STRING_0.equals(type)) { + saveFileUseDb(invoice, fileId, fileName, companyservice, ddfpxx); + //配置文件存储类型1为oss存储 + } else if (Constants.STRING_1.equals(type)) { + saveFileUseOss(defaultStorage, invoice, ddfpxx); + //配置文件存储类型2为本地存储 + } else if (Constants.STRING_2.equals(type)) { + saveFileUseLocal(invoice, ddfpxx); } } } // end - + debugLog("断点13", uuid, timestamp); if (invoice.getId() != null) { @@ -782,12 +787,12 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { return response; } - private void saveFileUseLocal(Invoice invoice,DDFPXX ddfpxx) { + private void saveFileUseLocal(Invoice invoice, DDFPXX ddfpxx) { try { byte[] pdfBytes = Base64.decode(ddfpxx.getPDFZJL()); String key = IdUtils.fastSimpleUUID(); - String fileName = key + "."+ddfpxx.getZJLLX().toLowerCase(); + String fileName = key + "." + ddfpxx.getZJLLX().toLowerCase(); String fileDir = JianshuiConfig.getDownloadPath() + "/storage/"; // 判断fileDir是否存在,不存在则创建 File fileDirInst = new File(fileDir); @@ -833,13 +838,13 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { if (StringUtils.equals(ddfpxx.getZJLLX(), Constants.OFD_UPCASE)) { invoice.setcOfdUrl(realPath); } - }catch (Exception e){ - log.error("文件保存异常",e); + } catch (Exception e) { + log.error("文件保存异常", e); } } - private void saveFileUseOss(String defaultStorage,Invoice invoice,DDFPXX ddfpxx) { + private void saveFileUseOss(String defaultStorage, Invoice invoice, DDFPXX ddfpxx) { if (StringUtils.isNotEmpty(defaultStorage) && StringUtils.isEmpty(invoice.getInvoicePdfUrl())) { try { IStorageService service = storageFactory.getStorageInstance(defaultStorage); @@ -870,11 +875,11 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { } } - private void saveFileUseDb(Invoice invoice,String fileId,String fileName,Companyservice companyservice,DDFPXX ddfpxx) { + private void saveFileUseDb(Invoice invoice, String fileId, String fileName, Companyservice companyservice, DDFPXX ddfpxx) { InvoiceFile invoiceFile = new InvoiceFile(); invoiceFile.setFphm(ddfpxx.getFPHM()); List invoiceFileList = invoiceFileMapper.selectInvoiceFileList(invoiceFile); - if(invoiceFileList != null && invoiceFileList.size() > 0){ + if (invoiceFileList != null && invoiceFileList.size() > 0) { invoiceFile = invoiceFileList.get(0); invoiceFile.setFileContent(ddfpxx.getPDFZJL()); invoiceFile.setFileName(fileName); @@ -884,7 +889,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { fileId = invoiceFile.getFileId(); fileName = invoiceFile.getFileName(); invoiceFileMapper.updateInvoiceFile(invoiceFile); - }else{ + } else { invoiceFile.setId(fileId); invoiceFile.setFileContent(ddfpxx.getPDFZJL()); invoiceFile.setFileId(fileId); @@ -1105,12 +1110,14 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { return null; } - /** 获取人脸识别结果*/ + /** + * 获取人脸识别结果 + */ @Override public HXResponse qrcodeResult(JSONObject decryptResult, Companyservice companyservice) { - InvoiceAllQycodeResultDTO qycodeResultDTO = BeanUtil.copyProperties(decryptResult,InvoiceAllQycodeResultDTO.class); - if(BeanUtil.isEmpty(qycodeResultDTO)){ + InvoiceAllQycodeResultDTO qycodeResultDTO = BeanUtil.copyProperties(decryptResult, InvoiceAllQycodeResultDTO.class); + if (BeanUtil.isEmpty(qycodeResultDTO)) { return new HXResponse("参数为空!"); } @@ -1134,19 +1141,20 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { // 返回结果处理 HXResponse hxResponseT = parseResult(dxhyInterfaceResponse); - if("000000".equals(hxResponseT.get("code")) && hxResponseT.get("data") != null && !"".equals(hxResponseT.get("data"))){ - InvoiceAllQycodeResultElEVO qycodeResultVO = BeanUtil.copyProperties(JSONUtil.parse(hxResponseT.get("data")),InvoiceAllQycodeResultElEVO.class); + if ("000000".equals(hxResponseT.get("code")) && hxResponseT.get("data") != null && !"".equals(hxResponseT.get("data"))) { + InvoiceAllQycodeResultElEVO qycodeResultVO = BeanUtil.copyProperties(JSONUtil.parse(hxResponseT.get("data")), InvoiceAllQycodeResultElEVO.class); HXResponse response = new HXResponse("0000", "请求成功", qycodeResultVO); return response; } else { - return new HXResponse(hxResponseT.getMessage() != null ? hxResponseT.getMessage():""); + return new HXResponse(hxResponseT.getMessage() != null ? hxResponseT.getMessage() : ""); } } - - /** 邮箱交付 */ + /** + * 邮箱交付 + */ @Override public HXResponse mailDelivery(InvoiceMailDeliveryDTO mailDeliveryDTO, Companyservice companyservice) { @@ -1172,7 +1180,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { public HXResponse fastRedInvoice(JSONObject decryptResult, Companyservice companyservice) { decryptResult = JsonKeyCase.JsonKeyCase(decryptResult); - log.info("调用大象V6接口报文key转大写后的报文为{}",decryptResult); + log.info("调用大象V6接口报文key转大写后的报文为{}", decryptResult); DxhyInterfaceResponse dxhyInterfaceResponse = null; try { dxhyInterfaceResponse = ElephantUtils.sendRequestWithoutTokenV6(ElephantConstantsV6.ORDER_TO_FAST_RED_INVOICE_LOCALHOST, ElephantConstantsV6.ORDER_TO_FAST_RED_INVOICE_METHOD, JSONUtil.parse(decryptResult), companyservice); @@ -1189,7 +1197,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { @Override public HXResponse QueryFastRedInvoiceResult(JSONObject decryptResult, Companyservice companyservice) { decryptResult = JsonKeyCase.JsonKeyCase(decryptResult); - log.info("调用大象V6接口报文key转大写后的报文为{}",decryptResult); + log.info("调用大象V6接口报文key转大写后的报文为{}", decryptResult); DxhyInterfaceResponse dxhyInterfaceResponse = null; try { dxhyInterfaceResponse = ElephantUtils.sendRequestWithoutTokenV6(ElephantConstantsV6.QUERY_FAST_RED_INVOICE_RESULT_LOCALHOST, @@ -1207,7 +1215,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { @Override public HXResponse QuerySdInvoiceFile(JSONObject decryptResult, Companyservice companyservice) { decryptResult = JsonKeyCase.JsonKeyCase(decryptResult); - log.info("调用大象V6接口报文key转大写后的报文为{}",decryptResult); + log.info("调用大象V6接口报文key转大写后的报文为{}", decryptResult); DxhyInterfaceResponse dxhyInterfaceResponse = null; try { dxhyInterfaceResponse = ElephantUtils.sendRequestWithoutTokenV6(ElephantConstantsV6.QUERY_INVOICE_FILE_LOCALHOST, @@ -1231,6 +1239,21 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { return null; } + @Override + public HXResponse queryInvoiceList(QueryInvoiceListDTO queryInvoiceList, Companyservice companyservice) { + log.info("发票列表查询接口,传入信息", JSONUtil.toJsonStr(queryInvoiceList)); + DxhyInterfaceResponse dxhyInterfaceResponse = null; + try { + dxhyInterfaceResponse = ElephantUtils.sendRequestWithoutTokenV6(ElephantConstantsV6.INVOICE_LIST_INFO_URL, ElephantConstantsV6.INVOICE_LIST_METHOD, JSONUtil.parse(queryInvoiceList), companyservice); + } catch (UnsupportedEncodingException | InvalidKeyException | NoSuchAlgorithmException e) { + log.error("【销项发票】【大象接口】【发票列表查询】发票请求异常,请求报文{},销方信息{}", JSONUtil.parse(queryInvoiceList).toString(), JSONObject.toJSONString(companyservice)); + e.printStackTrace(); + throw new JianshuiServiceException("系统异常!"); + } + + return parseResult(dxhyInterfaceResponse); + } + /** * 红字确认单列表查询(数电专用) @@ -1239,7 +1262,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { public HXResponse queryRedConfirmationList(JSONObject decryptResult, Companyservice companyservice) { decryptResult = JsonKeyCase.JsonKeyCase(decryptResult); - log.info("调用大象V6接口报文key转大写后的报文为{}",decryptResult); + log.info("调用大象V6接口报文key转大写后的报文为{}", decryptResult); DxhyInterfaceResponse dxhyInterfaceResponse = null; try { dxhyInterfaceResponse = ElephantUtils.sendRequestWithoutTokenV6(ElephantConstantsV6.QUERY_RED_CONFIRMATION_LIST_LOCALHOST, ElephantConstantsV6.QUERY_RED_CONFIRMATION_LIST_METHOD, JSONUtil.parse(decryptResult), companyservice); @@ -1264,7 +1287,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { public HXResponse queryRedConfirmationItemList(JSONObject decryptResult, Companyservice companyservice) { decryptResult = JsonKeyCase.JsonKeyCase(decryptResult); - log.info("调用大象V6接口报文key转大写后的报文为{}",decryptResult); + log.info("调用大象V6接口报文key转大写后的报文为{}", decryptResult); DxhyInterfaceResponse dxhyInterfaceResponse = null; try { dxhyInterfaceResponse = ElephantUtils.sendRequestWithoutTokenV6(ElephantConstantsV6.QUERY_RED_CONFIRMATION_ITEM_LIST_LOCALHOST, ElephantConstantsV6.QUERY_RED_CONFIRMATION_ITEM_LIST_METHOD, JSONUtil.parse(decryptResult), companyservice); @@ -1290,16 +1313,16 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { String fpdm = decryptResult.getString("lzfppzdm"); decryptResult.put("lzfppzdm", InvoiceType.getEleCode(fpdm)); // TODO kk:2024/1/8 红字申请表申请用的是01 02 - String lzfpdm = decryptResult.get("lzfppzdm") != null ? decryptResult.get("lzfppzdm").toString():""; - if("001".equals(lzfpdm)){ + String lzfpdm = decryptResult.get("lzfppzdm") != null ? decryptResult.get("lzfppzdm").toString() : ""; + if ("001".equals(lzfpdm)) { lzfpdm = "01"; - }else if("002".equals(lzfpdm)){ + } else if ("002".equals(lzfpdm)) { lzfpdm = "02"; } decryptResult.put("lzfppzdm", lzfpdm); decryptResult = JsonKeyCase.JsonKeyCase(decryptResult); - log.info("调用大象V6接口报文key转大写后的报文为{}",decryptResult); + log.info("调用大象V6接口报文key转大写后的报文为{}", decryptResult); DxhyInterfaceResponse dxhyInterfaceResponse = null; try { dxhyInterfaceResponse = ElephantUtils.sendRequestWithoutTokenV6(ElephantConstantsV6.RED_CONFIRMATION_LOCALHOST, ElephantConstantsV6.RED_CONFIRMATION_METHOD, JSONUtil.parse(decryptResult), companyservice); @@ -1310,10 +1333,10 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { } HXResponse hxResponse = parseResult(dxhyInterfaceResponse); - if("000000".equals(hxResponse.get("code"))){ + if ("000000".equals(hxResponse.get("code"))) { cn.hutool.json.JSONObject data = JSONUtil.parseObj(hxResponse.getData()); - String bh = data.get("hzfpxxqrdbh") != null ? data.get("hzfpxxqrdbh").toString() : ""; - if(StrUtil.isNotEmpty(bh)){ + String bh = data.get("hzfpxxqrdbh") != null ? data.get("hzfpxxqrdbh").toString() : ""; + if (StrUtil.isNotEmpty(bh)) { InvoiceAllApiLog allApiLog = new InvoiceAllApiLog(); allApiLog.setUrl(WebServiceConstant.ADD_RED_INVOICE_QRD); allApiLog.setSendMsg(JSONUtil.toJsonStr(decryptResult)); @@ -1342,7 +1365,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { public HXResponse redConfirmationConfirm(JSONObject decryptResult, Companyservice companyservice) { decryptResult = JsonKeyCase.JsonKeyCase(decryptResult); - log.info("调用大象V6接口报文key转大写后的报文为{}",decryptResult); + log.info("调用大象V6接口报文key转大写后的报文为{}", decryptResult); DxhyInterfaceResponse dxhyInterfaceResponse = null; try { dxhyInterfaceResponse = ElephantUtils.sendRequestWithoutTokenV6(ElephantConstantsV6.RED_CONFIRMATION_CONFIRM_LOCALHOST, ElephantConstantsV6.RED_CONFIRMATION_CONFIRM_METHOD, JSONUtil.parse(decryptResult), companyservice); @@ -1366,7 +1389,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { public HXResponse rpaLogin(JSONObject decryptResult, Companyservice companyservice) { decryptResult = JsonKeyCase.JsonKeyCase(decryptResult); - log.info("调用大象V6接口报文key转大写后的报文为{}",decryptResult); + log.info("调用大象V6接口报文key转大写后的报文为{}", decryptResult); DxhyInterfaceResponse dxhyInterfaceResponse = null; try { dxhyInterfaceResponse = ElephantUtils.sendRequestWithoutTokenV6(ElephantConstantsV6.RPA_LOGIN_LOCALHOST, ElephantConstantsV6.RPA_LOGIN_METHOD, JSONUtil.parse(decryptResult), companyservice); @@ -1472,7 +1495,6 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { } - /** * 申请/上传 红字发票 * @@ -1647,7 +1669,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { } // 存入金四关联日志表 - if("0000".equals(ztxx) && StrUtil.isNotEmpty(queryId)){ + if ("0000".equals(ztxx) && StrUtil.isNotEmpty(queryId)) { InvoiceAllApiLog allApiLog = new InvoiceAllApiLog(); allApiLog.setUrl(WebServiceConstant.SQHZFPXXQRD); allApiLog.setSendMsg(""); @@ -1663,7 +1685,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { HXResponse response = new HXResponse("0000", "申请成功"); response.put("queryid", queryId); return response; - }else{ + } else { return new HXResponse(ztxx); } @@ -2090,7 +2112,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { e.printStackTrace(); throw new JianshuiServiceException("系统异常!"); } - log.info("【销项发票】【大象发票】发票专用章图片生成请求结果{}", StrUtil.sub(queryResult.toString(),0,50)); + log.info("【销项发票】【大象发票】发票专用章图片生成请求结果{}", StrUtil.sub(queryResult.toString(), 0, 50)); // 判断外层报文是否成功 @@ -2316,7 +2338,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { decryptResult = JsonKeyCase.JsonKeyCase(decryptResult); - log.info("调用大象V6接口报文key转大写后的报文为{}",decryptResult); + log.info("调用大象V6接口报文key转大写后的报文为{}", decryptResult); DxhyInterfaceResponse dxhyInterfaceResponse = null; try { dxhyInterfaceResponse = ElephantUtils.sendRequestWithoutTokenV6(ElephantConstantsV6.GET_RPA_QY_CODE_LOCALHOST, ElephantConstantsV6.GET_RPA_QY_CODE_METHOD, JSONUtil.parse(decryptResult), companyservice); @@ -2361,15 +2383,15 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { } /** - * @author kk + * @author kk * 通用查询接口 - */ + */ @Override public HXResponse queryResultInfo(InvoiceAllQueryTWODTO invoiceAllYhdjDTO, Companyservice companyservice) { //存入金财的调用接口表里去 String requestId = invoiceAllYhdjDTO.getRequestId() != null ? invoiceAllYhdjDTO.getRequestId() : ""; - if(StrUtil.isEmpty(requestId)){ + if (StrUtil.isEmpty(requestId)) { return new HXResponse("requestId不能为空!"); } @@ -2403,22 +2425,22 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { response.put("data", invoice); return response; - }else if (WebServiceConstant.QRCODE.equals(finalServiceId)) { + } else if (WebServiceConstant.QRCODE.equals(finalServiceId)) { // 获取人脸二维码 //获取税局用户名称 JSONObject param = new JSONObject(); - param.put(ElephantConstants.NSRSBH,companyservice.getSellertax()); + param.put(ElephantConstants.NSRSBH, companyservice.getSellertax()); HXResponse hxResponse = queryRpaTaxAccount(param, companyservice); - if (!StringUtils.equals("000000",hxResponse.getCode())){ + if (!StringUtils.equals("000000", hxResponse.getCode())) { return hxResponse; } JSONObject resp = JSONObject.parseObject(JSON.toJSONString(hxResponse.getData())); - param.put(ElephantConstants.YHM,resp.getString(ElephantConstants.YHM)); + param.put(ElephantConstants.YHM, resp.getString(ElephantConstants.YHM)); HXResponse rpaAuthStatus = qrcode(param, companyservice); - log.info("获取人脸二维码大象返回报文封装后:{}",JSONUtil.toJsonStr(hxResponse)); + log.info("获取人脸二维码大象返回报文封装后:{}", JSONUtil.toJsonStr(hxResponse)); // if (StringUtils.equals("000000",rpaAuthStatus.getCode())){ // rpaAuthStatus.setCode("200"); @@ -2429,18 +2451,18 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { // } return rpaAuthStatus; - }else if (WebServiceConstant.SQHZFPXXQRD.equals(finalServiceId)) { + } else if (WebServiceConstant.SQHZFPXXQRD.equals(finalServiceId)) { // 申请红字信息表 //查询红字信息表入库信息 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Redinfo::getFpqqlsh,requestId); + queryWrapper.eq(Redinfo::getFpqqlsh, requestId); Redinfo redinfo = redinfoMapper.selectOne(queryWrapper); - HXResponse hxResponse = queryRedInfoByElepant(redinfo,companyservice,allApiLog); + HXResponse hxResponse = queryRedInfoByElepant(redinfo, companyservice, allApiLog); return hxResponse; - }else if (WebServiceConstant.ADD_RED_INVOICE.equals(finalServiceId)) { + } else if (WebServiceConstant.ADD_RED_INVOICE.equals(finalServiceId)) { // 红字发票开具 //调用大象接口获取数据入库 @@ -2448,26 +2470,26 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { queryBillInfoDTO.setFpqqlsh(requestId); HXResponse hxResponse = queryInvoice(queryBillInfoDTO, companyservice); - if(StringUtils.equals("0000",hxResponse.getCode())){ + if (StringUtils.equals("0000", hxResponse.getCode())) { return hxResponse; } //查询数据库信息并返回 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Invoice::getFpqqlsh,requestId); + queryWrapper.eq(Invoice::getFpqqlsh, requestId); queryWrapper.orderByDesc(Invoice::getId).last("limit 1"); Invoice invoice = invoiceMapper.selectOne(queryWrapper); - response.put("data",invoice); + response.put("data", invoice); return response; - }else if (WebServiceConstant.ADD_RED_INVOICE_QRD.equals(finalServiceId)) { + } else if (WebServiceConstant.ADD_RED_INVOICE_QRD.equals(finalServiceId)) { // 红字发票开具-确认单编号方式 // TODO kk:2024/2/26 调用订单查询接口-不入库 JSONObject jsonObject = new JSONObject(); - jsonObject.put("HZQRDBH",requestId); - jsonObject.put("NSRSBH",allApiLog.getCompany()); + jsonObject.put("HZQRDBH", requestId); + jsonObject.put("NSRSBH", allApiLog.getCompany()); DxhyInterfaceResponse dxhyInterfaceResponse = null; try { @@ -2480,32 +2502,32 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { } HXResponse hxResponse = parseResult(dxhyInterfaceResponse); - hxResponse = parseDxhyRes(hxResponse,companyservice); + hxResponse = parseDxhyRes(hxResponse, companyservice); return hxResponse; - }else if (WebServiceConstant.CXHZFPXXQRD.equals(finalServiceId)) { + } else if (WebServiceConstant.CXHZFPXXQRD.equals(finalServiceId)) { // 查询红字信息表 CxhzJsonDataTwoDTO cxhzJsonDataTwoDTO = null; try { String sendMsg = allApiLog.getSendMsg(); - cxhzJsonDataTwoDTO= JSONObject.parseObject(sendMsg, CxhzTwoDTO.class).getJsonData(); + cxhzJsonDataTwoDTO = JSONObject.parseObject(sendMsg, CxhzTwoDTO.class).getJsonData(); - }catch (Exception e){ - log.error("反序列化失败异常",e); + } catch (Exception e) { + log.error("反序列化失败异常", e); throw new JianshuiServiceException("起始日期反序列化失败"); } JSONObject param = new JSONObject(); - param.put(ElephantConstants.YHJSLX,ElephantConstants.STRING_0); - param.put(ElephantConstants.XSFNSRSBH,companyservice.getSellertax()); - param.put(ElephantConstants.XSFMC,companyservice.getSellername()); - param.put(ElephantConstants.LRFSF,ElephantConstants.STRING_0); - param.put(ElephantConstants.LRRQQ,cxhzJsonDataTwoDTO.getKprqq()); - param.put(ElephantConstants.LRRQZ,cxhzJsonDataTwoDTO.getKprqz()); + param.put(ElephantConstants.YHJSLX, ElephantConstants.STRING_0); + param.put(ElephantConstants.XSFNSRSBH, companyservice.getSellertax()); + param.put(ElephantConstants.XSFMC, companyservice.getSellername()); + param.put(ElephantConstants.LRFSF, ElephantConstants.STRING_0); + param.put(ElephantConstants.LRRQQ, cxhzJsonDataTwoDTO.getKprqq()); + param.put(ElephantConstants.LRRQZ, cxhzJsonDataTwoDTO.getKprqz()); HXResponse hxResponse = queryRedConfirmationList(param, companyservice); - log.info(" 查询红字信息表大象返回报文封装后:{}",JSONUtil.toJsonStr(hxResponse)); + log.info(" 查询红字信息表大象返回报文封装后:{}", JSONUtil.toJsonStr(hxResponse)); HZXXLIST hzxxlist = JSONObject.parseObject(JSONObject.toJSONString(hxResponse.getData()), HZXXLIST.class); @@ -2514,24 +2536,24 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { } else if (WebServiceConstant.SHHZFPXXQRD.equals(finalServiceId)) { // 审核红字信息表 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Redinfo::getFpqqlsh,requestId); + queryWrapper.eq(Redinfo::getFpqqlsh, requestId); queryWrapper.orderByDesc(Redinfo::getId).last("limit 1"); Redinfo redinfo = redinfoMapper.selectOne(queryWrapper); - return auditRedInfoResult(allApiLog.getResultMsg(),redinfo,companyservice); + return auditRedInfoResult(allApiLog.getResultMsg(), redinfo, companyservice); } else if (WebServiceConstant.FPEWMXZ.equals(finalServiceId)) { // 获取发票下载地址 - } else if (WebServiceConstant.KSHC.equals(finalServiceId)) { + } else if (WebServiceConstant.KSHC.equals(finalServiceId)) { // 快速红冲 } else if (WebServiceConstant.QDFPWJHQ.equals(finalServiceId)) { // 全电发票文件获取 - } else{ + } else { return new HXResponse("功能升级中~请稍等~"); } @@ -2540,8 +2562,10 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { } - /** 转换大象返回报文为简税报文 */ - private HXResponse parseDxhyRes(HXResponse hxResponse,Companyservice companyservice) { + /** + * 转换大象返回报文为简税报文 + */ + private HXResponse parseDxhyRes(HXResponse hxResponse, Companyservice companyservice) { // 判断外层报文是否成功 if (!hxResponse.getCode().equals("000000")) { @@ -2653,13 +2677,13 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { String fileId = IdUtils.randomUUID(); String fileName = invoice.getFphm(); - if(ddfpxx.getPDFZJL() != null && StrUtil.isNotEmpty(ddfpxx.getPDFZJL())){ + if (ddfpxx.getPDFZJL() != null && StrUtil.isNotEmpty(ddfpxx.getPDFZJL())) { String fphm = ddfpxx.getFPHM(); - if(StrUtil.isNotEmpty(fphm)){ + if (StrUtil.isNotEmpty(fphm)) { InvoiceFile invoiceFile = new InvoiceFile(); invoiceFile.setFphm(ddfpxx.getFPHM()); List invoiceFileList = invoiceFileMapper.selectInvoiceFileList(invoiceFile); - if(invoiceFileList != null && invoiceFileList.size() > 0){ + if (invoiceFileList != null && invoiceFileList.size() > 0) { invoiceFile = invoiceFileList.get(0); invoiceFile.setFileContent(ddfpxx.getPDFZJL()); invoiceFile.setFileName(fileName); @@ -2669,7 +2693,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { fileId = invoiceFile.getFileId(); fileName = invoiceFile.getFileName(); invoiceFileMapper.updateInvoiceFile(invoiceFile); - }else{ + } else { invoiceFile.setId(fileId); invoiceFile.setFileContent(ddfpxx.getPDFZJL()); invoiceFile.setFileId(fileId); @@ -2745,12 +2769,12 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { for (HZXXDATA hzxxdata : list) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Redinfo::getRedInfoNo,hzxxdata.getHZFPXXQRDBH()); + queryWrapper.eq(Redinfo::getRedInfoNo, hzxxdata.getHZFPXXQRDBH()); queryWrapper.orderByDesc(Redinfo::getId).last("limit 1"); //根据红字信息表编号查询红字信息 Redinfo redinfo = redinfoMapper.selectOne(queryWrapper); //不存在就创建对象 - if (ObjectUtils.isEmpty(redinfo)){ + if (ObjectUtils.isEmpty(redinfo)) { redinfo = new Redinfo(); } redinfo.setRedInfoNo(hzxxdata.getHZFPXXQRDBH()); @@ -2764,7 +2788,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { redinfo.setReqnsrsbh(hzxxdata.getXSFNSRSBH()); redinfos.add(redinfo); //判断是否存在红字信息,存在执行更新 - if (ObjectUtils.isEmpty(redinfo.getId())){ + if (ObjectUtils.isEmpty(redinfo.getId())) { //处理发票表和红字信息表 redInfoAndInvoiceUpdate(hzxxdata, redinfo); } @@ -2799,7 +2823,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { } - return new HXResponse("200","查询成功",hzxxList,true); + return new HXResponse("200", "查询成功", hzxxList, true); } @Async @@ -2823,33 +2847,33 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { invoiceMapper.insertInvoice(invoice); } - private HXResponse auditRedInfoResult(String uuid,Redinfo redinfo, Companyservice companyservice) { - if (ObjectUtils.isEmpty(companyservice)){ + private HXResponse auditRedInfoResult(String uuid, Redinfo redinfo, Companyservice companyservice) { + if (ObjectUtils.isEmpty(companyservice)) { log.info("请求日志为空或者企业服务为空"); - return new HXResponse("9998","请求日志为空或者企业服务为空"); + return new HXResponse("9998", "请求日志为空或者企业服务为空"); } - if (ObjectUtils.isEmpty(redinfo)){ + if (ObjectUtils.isEmpty(redinfo)) { log.info("不存在该红字信息"); - return new HXResponse("9998","不存在该红字信息"); + return new HXResponse("9998", "不存在该红字信息"); } - if (StringUtils.isBlank(uuid)){ + if (StringUtils.isBlank(uuid)) { log.info("红字确认单UUID不能为空"); - return new HXResponse("9998","红字确认单UUID不能为空"); + return new HXResponse("9998", "红字确认单UUID不能为空"); } JSONObject param = new JSONObject(); - param.put(ElephantConstants.NSRSBH,companyservice.getSellertax()); - param.put(ElephantConstants.UUID,uuid); - param.put(ElephantConstants.HZQRDBH,redinfo.getRedInfoNo()); - param.put(ElephantConstants.QRLX,ElephantConstants.QRLX_Y); + param.put(ElephantConstants.NSRSBH, companyservice.getSellertax()); + param.put(ElephantConstants.UUID, uuid); + param.put(ElephantConstants.HZQRDBH, redinfo.getRedInfoNo()); + param.put(ElephantConstants.QRLX, ElephantConstants.QRLX_Y); //调用大象接口获取确认日期 AjaxResult queryResult = null; try { queryResult = ElephantUtils.sendRequestWithoutTokenV6New(ElephantConstantsV6.QUERY_INVOICE_LOCALHOST, ElephantConstantsV6.QUERY_INVOICE_METHOD, JSONUtil.parse(param), companyservice); - log.info("大象返回报文封装后:{}",JSONUtil.toJsonStr(queryResult)); + log.info("大象返回报文封装后:{}", JSONUtil.toJsonStr(queryResult)); } catch (UnsupportedEncodingException | InvalidKeyException | NoSuchAlgorithmException e) { log.error("【销项发票】【大象接口】【发票开具】发票请求异常,请求报文{},销方信息{}", param.toJSONString(), JSONObject.toJSONString(companyservice)); e.printStackTrace(); @@ -2859,17 +2883,17 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { JSONObject data = queryResult.getJsonData(); String qrrq = data.getString(ElephantConstants.QRRQ); data.clear(); - data.put(ElephantConstants.CASE_QRRQ,qrrq); + data.put(ElephantConstants.CASE_QRRQ, qrrq); - return new HXResponse(String.valueOf(queryResult.getCode()),queryResult.getMsg(),data,true); + return new HXResponse(String.valueOf(queryResult.getCode()), queryResult.getMsg(), data, true); } // @Transactional(rollbackFor = Exception.class) - public HXResponse queryRedInfoByElepant(Redinfo redinfo, Companyservice companyservice,InvoiceAllApiLog apiLog) { + public HXResponse queryRedInfoByElepant(Redinfo redinfo, Companyservice companyservice, InvoiceAllApiLog apiLog) { //返回信息 - if (ObjectUtils.isEmpty(redinfo)){ - return new HXResponse("9998","红字信息未查询到"); + if (ObjectUtils.isEmpty(redinfo)) { + return new HXResponse("9998", "红字信息未查询到"); } //日志uuid @@ -2877,16 +2901,16 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { //封装请求参数 JSONObject param = new JSONObject(); - param.put(ElephantConstants.NSRSBH,companyservice.getSellertax()); - param.put(ElephantConstants.UUID,apiLog.getResultMsg()); - param.put(ElephantConstants.XSFNSRSBH,companyservice.getSellertax()); + param.put(ElephantConstants.NSRSBH, companyservice.getSellertax()); + param.put(ElephantConstants.UUID, apiLog.getResultMsg()); + param.put(ElephantConstants.XSFNSRSBH, companyservice.getSellertax()); - debugLog("红字信息表申请查询断点1",uuid,System.currentTimeMillis()); + debugLog("红字信息表申请查询断点1", uuid, System.currentTimeMillis()); //调用大象接口查询红字信息表明细 AjaxResult queryResult = null; try { queryResult = ElephantUtils.sendRequestWithoutTokenV6New(ElephantConstantsV6.QUERY_RED_CONFIRMATION_ITEM_LIST_LOCALHOST, ElephantConstantsV6.QUERY_RED_CONFIRMATION_ITEM_LIST_METHOD, JSONUtil.parse(param), companyservice); - log.info(" 红字信息表申请大象返回报文封装后:{}",JSONUtil.toJsonStr(queryResult)); + log.info(" 红字信息表申请大象返回报文封装后:{}", JSONUtil.toJsonStr(queryResult)); } catch (UnsupportedEncodingException | InvalidKeyException | NoSuchAlgorithmException e) { log.error("【销项发票】【大象接口】【红字信息表申请】发票请求异常,请求报文{},销方信息{}", JSONUtil.parse(param).toString(), JSONObject.toJSONString(companyservice)); e.printStackTrace(); @@ -2945,8 +2969,8 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { int i = redinfoMapper.updateRedinfo(redinfo); debugLog("断点9", uuid, System.currentTimeMillis()); - if (i<1){ - debugLog("红字订单更新主表信息失败",uuid,System.currentTimeMillis()); + if (i < 1) { + debugLog("红字订单更新主表信息失败", uuid, System.currentTimeMillis()); throw new JianshuiServiceException("红字订单更新主表信息失败"); } @@ -2991,7 +3015,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { List detailList = new ArrayList<>(); for (ElephantRedInfoDetail elephantRedInfoDetail : elephantRedInfo.getHZQRXXMXLIST()) { - ElephantRedInfoDetailCase detail = new ElephantRedInfoDetailCase(); + ElephantRedInfoDetailCase detail = new ElephantRedInfoDetailCase(); detail.setDw(elephantRedInfoDetail.getDW()); detail.setJe(elephantRedInfoDetail.getJE()); detail.setSe(elephantRedInfoDetail.getSE()); @@ -3051,22 +3075,22 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { // } - return new HXResponse("0000","查询成功",addRedInfoInvoiceTWO,true); + return new HXResponse("0000", "查询成功", addRedInfoInvoiceTWO, true); } - - - /** 批量开票接口 */ + /** + * 批量开票接口 + */ @Override public HXResponse addInvoiceBeatch(BillInfo billInfo, Companyservice companyservice) throws IllegalAccessException, InstantiationException { - return submitAddInvoice(billInfo,companyservice); + return submitAddInvoice(billInfo, companyservice); } @Override - public void callBackAisino(InvoiceBack invoiceBack, String callBackUrl, String identity,Long id) { + public void callBackAisino(InvoiceBack invoiceBack, String callBackUrl, String identity, Long id) { if (id == null) { log.info("【控制台】发票回调,id为空"); @@ -3096,14 +3120,14 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { try { /** 开票成功处理 */ - if("0000".equals(invoiceBack.getResultCode())){ + if ("0000".equals(invoiceBack.getResultCode())) { invoice.setUpdateBy("0"); invoiceMapper.updateInvoice(invoice); } // 重汽国际不判断null值,给特殊处理下 - if(StrUtil.isEmpty(invoice.getInvoiceResultMsg())){ - invoice.setInvoiceResultMsg(""); + if (StrUtil.isEmpty(invoice.getInvoiceResultMsg())) { + invoice.setInvoiceResultMsg(""); } log.info("【控制台】发票回调接口,发送数据开始,id={},callBackUrl={},param={}", id, callBackUrl, JSONUtil.toJsonStr(invoice)); @@ -3133,7 +3157,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { } } } catch (Exception e) { - log.info("【控制台】发票回调接口,发送数据异常,id={},e={}", id,e); + log.info("【控制台】发票回调接口,发送数据异常,id={},e={}", id, e); invoiceBack.setStatus("2"); invoiceBack.setBackMsg("发送数据异常!"); invoiceBackMapper.updateInvoiceBack(invoiceBack); @@ -3141,18 +3165,18 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { } - - /** - * @author kk - * @date 2024/4/8 14:55 - * @param: [billInfo, companyservice] - * @return: 提交开票 - */ + /** + * @author kk + * @date 2024/4/8 14:55 + * @param: [billInfo, companyservice] + * @return: 提交开票 + */ public HXResponse submitAddInvoice(BillInfo billInfo, Companyservice companyservice) throws IllegalAccessException, InstantiationException { // 1.订单唯一校验。新增历史订单部分(删除)。 // 订单号唯一校验 start String outNO = billInfo.getOutTradeOrderno() != null ? billInfo.getOutTradeOrderno() : ""; + String fpqqlsh = billInfo.getFpqqlsh() != null ? billInfo.getFpqqlsh() : ""; if (StrUtil.isEmpty(outNO)) { return new HXResponse("批量开票:订单号为空,请检查报文!"); } @@ -3161,65 +3185,90 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { /** 查找权限ID */ String entId = ""; CompanyserviceProp companyservicePropEntId = companyservicePropMapper.selectPropByKey(companyservice.getCompanyid(), "ent_id"); - if(companyservicePropEntId != null && StrUtil.isNotEmpty(companyservicePropEntId.getValue()) ){ + if (companyservicePropEntId != null && StrUtil.isNotEmpty(companyservicePropEntId.getValue())) { entId = companyservicePropEntId.getValue(); - }else{ + } else { log.info("权限id未配置,需配置key名 ent_id,实现权限管理"); } - String clerk = billInfo.getClerk() != null ? billInfo.getClerk():""; - if(StrUtil.isNotEmpty(clerk)) { + String clerk = billInfo.getClerk() != null ? billInfo.getClerk() : ""; + if (StrUtil.isNotEmpty(clerk)) { CompanyserviceProp companyservicePropClerk = companyservicePropMapper.selectPropByKey(companyservice.getCompanyid(), clerk); - if(companyservicePropClerk != null && StrUtil.isNotEmpty(companyservicePropClerk.getValue()) ){ + if (companyservicePropClerk != null && StrUtil.isNotEmpty(companyservicePropClerk.getValue())) { entId = companyservicePropClerk.getValue(); - }else{ + } else { log.info("权限id未配置,需配置key名 clerk,实现权限管理"); } } - Invoice invoiceValidateTemp = new Invoice(); - List invoicesValidate = invoiceMapper.selectByOutTradeOrdernoList(companyservice.getCompanyid(), outNO, "0"); + Invoice invoice = invoiceMapper.selectBySystemOrderNo(companyservice.getCompanyid(), fpqqlsh); // 开票回调失败防重复处理 start - if (!org.springframework.util.CollectionUtils.isEmpty(invoicesValidate)) { - for (Invoice invoice : invoicesValidate) { - QueryWrapper invoiceBackQueryWrapper = new QueryWrapper<>(); - invoiceBackQueryWrapper.eq("system_orderno", invoice.getOutTradeOrderno()); - InvoiceBack invoiceBackVali = invoiceBackMapper.selectOne(invoiceBackQueryWrapper); - - if (BeanUtil.isEmpty(invoiceBackVali)) { - invoiceBackVali = new InvoiceBack(); - invoiceBackVali.setSystemOrderno(invoice.getOutTradeOrderno()); - invoiceBackVali.setCreateTime(new Date()); - - invoiceBackVali.setId(IdUtils.randomUUID()); - invoiceBackVali.setIdentity(companyservice.getIdentity()); - invoiceBackVali.setBackUrl(""); - invoiceBackVali.setStatus("0"); - invoiceBackVali.setCreateTime(new Date()); - invoiceBackVali.setSystemOrderno(invoice.getOutTradeOrderno()); - invoiceBackVali.setBackMsg(""); - invoiceBackVali.setResultCode("0000"); - invoiceBackVali.setResultMsg("开票成功!"); - invoiceBackVali.setUpdateTime(new Date()); - invoiceBackMapper.insertInvoiceBack(invoiceBackVali); + if(invoice != null){ + boolean con = true; + QueryWrapper invoiceBackQueryWrapper = new QueryWrapper<>(); + invoiceBackQueryWrapper.eq("system_orderno", invoice.getOutTradeOrderno()); + InvoiceBack invoiceBackVali = invoiceBackMapper.selectOne(invoiceBackQueryWrapper); + if (BeanUtil.isEmpty(invoiceBackVali)) { + invoiceBackVali = new InvoiceBack(); + invoiceBackVali.setSystemOrderno(invoice.getFpqqlsh()); + invoiceBackVali.setCreateTime(new Date()); + invoiceBackVali.setId(IdUtils.randomUUID()); + invoiceBackVali.setIdentity(companyservice.getIdentity()); + invoiceBackVali.setBackUrl(""); + invoiceBackVali.setStatus("3"); + invoiceBackVali.setBackMsg("k:数据为空,初始化数据"); + invoiceBackVali.setUpdateTime(new Date()); + invoiceBackMapper.insertInvoiceBack(invoiceBackVali); + } - } else { - invoiceBackVali.setResultCode("0000"); - invoiceBackVali.setResultMsg("开票成功!"); - invoiceBackVali.setStatus("0"); + Integer state = invoice.getState(); + if (state == 20) { + // 开票中 + BillInfo billInfoQuery = new BillInfo(); + billInfoQuery.setFpqqlsh("[\"" + billInfo.getFpqqlsh() + "\"]"); + billInfoQuery.setOutTradeOrderno(billInfo.getOutTradeOrderno()); + log.info("发票回调getOutTradeOrderno()={},invoice.getFpqqlsh()={}", billInfoQuery.getOutTradeOrderno(), billInfoQuery.getFpqqlsh()); + HXResponse resultDxhy = batchQueryInvoices(billInfoQuery, "fpqqlsh", companyservice); + + invoice = invoiceMapper.selectBySystemOrderNo(companyservice.getCompanyid(), fpqqlsh); + if (invoice == null) { + log.info("查询到Invoice信息,回调后还是未查询到Invoice"); + invoiceBackVali.setStatus(InvoiceBackStatusEnum.MULTIPLE_FAILURES.getCode()); + invoiceBackVali.setBackMsg("k:回调后还是未查询到Invoice"); invoiceBackVali.setUpdateTime(new Date()); invoiceBackMapper.updateInvoiceBack(invoiceBackVali); + return new HXResponse("9999", "已开票,开具状态不存在!"); } + } else if (state == 22) { + // 开票失败 + invoiceBackVali.setResultCode("9999"); + invoiceBackVali.setResultMsg("开票失败!"); + invoiceBackVali.setStatus("0"); + invoiceBackVali.setUpdateTime(new Date()); + con = false; + } else if (state == 2) { + // 开票成功 + invoiceBackVali.setResultCode("0000"); + invoiceBackVali.setResultMsg("开票成功!"); + invoiceBackVali.setStatus("0"); + invoiceBackVali.setUpdateTime(new Date()); + } else { + log.info("未识别状态state={}", state); + return new HXResponse("9999", "开票:未识别状态!"); + } + invoiceBackMapper.updateInvoiceBack(invoiceBackVali); - // 再次推送 + // 再次推送 + if(con){ try { callBackAisino(invoiceBackVali, "", companyservice.getIdentity(), invoice.getId()); } catch (Exception e) { log.info("【批量开票】发票回调失败!invoiceId={}", invoice.getId()); } + return new HXResponse("0000", "开票:发票已开具!"); } - return new HXResponse("0000", "批量开票:重复订单已推送!"); + } // end @@ -3236,10 +3285,10 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { // 订单头信息 DDTXX ddtxx = new DDTXX(billInfo); CompanyserviceProp companyserviceProp = companyservicePropMapper.selectPropByKey(companyservice.getCompanyid(), "account_show"); - if (companyserviceProp != null && "1".equals(companyserviceProp.getValue())){ + if (companyserviceProp != null && "1".equals(companyserviceProp.getValue())) { StringBuilder bz = new StringBuilder(); - if (StringUtils.isNotBlank(ddtxx.getBZ())){ + if (StringUtils.isNotBlank(ddtxx.getBZ())) { bz.append(ddtxx.getBZ()).append("\n"); } @@ -3291,17 +3340,17 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { qdtxx.setFJYSLIST(billInfo.getFjyslist());// 附加要素列表 qdtxx.setHWYSLIST(billInfo.getHwysList()); // 货物运输 - if(billInfo.getBdcxsxxList() != null && !billInfo.getBdcxsxxList().isEmpty()){ + if (billInfo.getBdcxsxxList() != null && !billInfo.getBdcxsxxList().isEmpty()) { qdtxx.setBDCXSXX(billInfo.getBdcxsxxList().get(0)); // 不动产销售信息 } - if(billInfo.getJzfwList() != null && !billInfo.getJzfwList().isEmpty()){ + if (billInfo.getJzfwList() != null && !billInfo.getJzfwList().isEmpty()) { qdtxx.setJZFWXX(billInfo.getJzfwList().get(0));// 建筑服务信息 } - if(billInfo.getBdczlxxList() != null && !billInfo.getBdczlxxList().isEmpty()){ + if (billInfo.getBdczlxxList() != null && !billInfo.getBdczlxxList().isEmpty()) { qdtxx.setBDCZLXX(billInfo.getBdczlxxList().get(0));// 不动产租赁信息 } - if(billInfo.getJDCXX() != null ){ - qdtxx.setJDCXX(billInfo.getJDCXX() );// 机动车信息 + if (billInfo.getJDCXX() != null) { + qdtxx.setJDCXX(billInfo.getJDCXX());// 机动车信息 } // qdtxx.setBDCZLXX(billInfo.getBdczlxxList()); //不动产租赁信息 @@ -3319,14 +3368,14 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { } else if (BeanUtil.isNotEmpty(qdtxx.getBDCZLXX())) { // GenerateQdBdczlInvoice 不动产租赁信息 url = ElephantConstantsV6.GENERATE_QD_BDXZL_INVOICE; - }else if( BeanUtil.isNotEmpty(qdtxx.getJDCXX()) ){ + } else if (BeanUtil.isNotEmpty(qdtxx.getJDCXX())) { // GenerateQdjdcxsInvoice 数电机动车销售统一发票 url = ElephantConstantsV6.GENERATE_QD_JDCXS_INVOICE; } // 机动车专票适配 - String jdcbz = billInfo.getJdcbz() != null ? billInfo.getJdcbz():""; - if("1".equals(jdcbz)){ + String jdcbz = billInfo.getJdcbz() != null ? billInfo.getJdcbz() : ""; + if ("1".equals(jdcbz)) { billInfo.setTdys("14"); // (数电机动车专票)发票开具/冲红接口 url = ElephantConstantsV6.GENERATE_QD_JDCZP_INVOICE; @@ -3343,7 +3392,6 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { } - // 开始封装请求报文 ElephantInvoiceAddDTO elephantInvoiceAddDTO = new ElephantInvoiceAddDTO(); elephantInvoiceAddDTO.setDDPCXX(ddpcxx); @@ -3357,7 +3405,6 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { elephantInvoiceAddDTO.setDDZXX(ddzxxes); - AjaxResult queryResult = null; try { queryResult = ElephantUtils.sendRequestWithoutTokenV6New(url, "", JSONUtil.parse(elephantInvoiceAddDTO), companyservice); @@ -3365,7 +3412,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()) { @@ -3408,6 +3456,12 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { queryBody.put("DDRQQ", "0"); // 订单日期止 queryBody.put("DDRQZ", "0");*/ + 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); @@ -3427,7 +3481,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { if (contentJson != null) { String ztdm = contentJson.getString("ZTDM"); // 021002 020111 - if (!StringUtils.equalsAny(ztdm, "020111", "020000", "010000","000000")) { + if (!StringUtils.equalsAny(ztdm, "020111", "020000", "010000", "000000")) { // 开票失败 if (StringUtils.equals("020002", ztdm)) { billInfo.setState(22); @@ -3436,10 +3490,10 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { // kk: 2023/12/5 判断人脸识别的状态 String DDFPZXX = contentJson.getString("DDFPZXX") != null ? contentJson.getString("DDFPZXX") : ""; - if(StrUtil.isNotEmpty(DDFPZXX)){ - DDFPZXX ddfpzxx = BeanUtil.copyProperties(DDFPZXX,DDFPZXX.class); - if(ddfpzxx != null && ddfpzxx.getDDFPXX() != null && "03200".equals(ddfpzxx.getDDFPXX().getDDZT())){ - return new HXResponse("E004",ddfpzxx.getDDFPXX().getDDZTXX() != null ? ddfpzxx.getDDFPXX().getDDZTXX():"发票开具失败,请确认是否人脸识别超期!"); + if (StrUtil.isNotEmpty(DDFPZXX)) { + DDFPZXX ddfpzxx = BeanUtil.copyProperties(DDFPZXX, DDFPZXX.class); + if (ddfpzxx != null && ddfpzxx.getDDFPXX() != null && "03200".equals(ddfpzxx.getDDFPXX().getDDZT())) { + return new HXResponse("E004", ddfpzxx.getDDFPXX().getDDZTXX() != null ? ddfpzxx.getDDFPXX().getDDZTXX() : "发票开具失败,请确认是否人脸识别超期!"); } } @@ -3471,7 +3525,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { queryInvoiceBack.setBackUrl(callBackUrl); queryInvoiceBack.setStatus(InvoiceBackStatusEnum.IN_PROCESS.getCode()); queryInvoiceBack.setCreateTime(new Date()); - queryInvoiceBack.setSystemOrderno(billInfo.getOutTradeOrderno()); + queryInvoiceBack.setSystemOrderno(billInfo.getFpqqlsh()); queryInvoiceBack.setBackMsg(""); queryInvoiceBack.setResultCode("0000"); queryInvoiceBack.setResultMsg("开票中,进入队列"); @@ -3480,7 +3534,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { } } // 定时拉取保存发票 - AsyncManager.me().execute(new QueryInvoiceTask(billInfo, companyservice, this,invoiceBackMapper)); + AsyncManager.me().execute(new QueryInvoiceTask(billInfo, companyservice, this, invoiceBackMapper)); // 数电的加入金财表 InvoiceAllApiLog allApiLog = new InvoiceAllApiLog(); @@ -3502,18 +3556,4 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService { } - - - - - - - - - - - - - - } 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 8267032..4b3b9d0 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 @@ -32,7 +32,6 @@ import com.jianshui.invoice.domain.dto.api.jcsk.add.InvoiceAllAddTwoDTO; import com.jianshui.invoice.domain.dto.api.jcsk.add.InvoiceAllAddmxListTwoDTO; import com.jianshui.invoice.domain.dto.api.jcsk.red.AddRedInvoiceTwoDTO; import com.jianshui.invoice.domain.ele.EleNewMessage; -import com.jianshui.invoice.domain.vo.InvoiceAllQycodeResultElEVO; import com.jianshui.invoice.domain.vo.jcsk.*; import com.jianshui.invoice.mapper.*; import com.jianshui.invoice.service.IInvoiceApiService; @@ -42,7 +41,6 @@ import com.jianshui.system.mapper.InvoiceAllApiLogMapper; import com.jianshui.system.mapper.InvoiceAllYhdjMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; @@ -1724,6 +1722,11 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { return null; } + @Override + public HXResponse queryInvoiceList(QueryInvoiceListDTO queryInvoiceList, Companyservice companyservice) { + return null; + } + /** * 简税和金财数科 发票类型互换 * diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/task/AddInvoiceBatchTask.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/task/AddInvoiceBatchTask.java index 72aa9aa..78dd311 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/task/AddInvoiceBatchTask.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/task/AddInvoiceBatchTask.java @@ -189,7 +189,7 @@ public class AddInvoiceBatchTask extends TimerTask { } else { invoiceBack.setResultCode("9999"); invoiceBack.setResultMsg(resultHx.getMessage()); - invoiceBack.setSystemOrderno(billInfo.getOutTradeOrderno()); + invoiceBack.setSystemOrderno(billInfo.getFpqqlsh()); invoiceBack.setStatus("0"); invoiceBack.setCreateTime(new Date()); invoiceBackMapper.insertInvoiceBack(invoiceBack); @@ -216,7 +216,7 @@ public class AddInvoiceBatchTask extends TimerTask { } else { invoiceBack.setResultCode("9999"); invoiceBack.setResultMsg("开票失败!"); - invoiceBack.setSystemOrderno(billInfo.getOutTradeOrderno()); + invoiceBack.setSystemOrderno(billInfo.getFpqqlsh()); invoiceBack.setStatus("0"); invoiceBack.setCreateTime(new Date()); invoiceBackMapper.insertInvoiceBack(invoiceBack); 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 20ccc8c..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; @@ -18,7 +17,6 @@ import com.jianshui.invoice.domain.*; import com.jianshui.invoice.domain.dto.ExportVehicleDTO; import com.jianshui.invoice.domain.dto.HXResponse; 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; @@ -56,9 +54,6 @@ public class InvoiceBackTask { @Autowired private IInvoiceServiceFactory invoiceServiceFactory; - @Autowired - private BillInfoMapper billInfoMapper; - private final String ZQ_BACK_DXHY = "【重汽回调(开票中单据)】"; @@ -382,33 +377,21 @@ public class InvoiceBackTask { log.info(ZQ_BACK_DXHY + "发票回调,订单号{},回调地址{}",id, callBackUrl); Invoice invoice = invoiceMapper.selectByOutTradeOrdernoNoUpdateBy(Long.valueOf(identity), id); - if (invoice != null) { - log.info("通过Invoice组装,id为:{}",id); -// 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() ); - - // 明细重插 - List invoiceDetailList = invoiceMapper.selectInvoiceIdForInvoiceDetailList(invoice.getId()); - if(!invoiceDetailList.isEmpty()){ - invoice.setInvoiceDetailList(invoiceDetailList); - } - - }else { - log.info("通过billInfo组装,id为:{}",id); - BillInfo billInfo = billInfoMapper.selectByOutTradeOrderno(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()); + 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 invoiceDetailList = invoiceMapper.selectInvoiceIdForInvoiceDetailList(invoice.getId()); + if(!invoiceDetailList.isEmpty()){ + invoice.setInvoiceDetailList(invoiceDetailList); } - Integer state = invoice.getState() != null ? invoice.getState() :1; + Integer state = invoice.getState(); log.info(ZQ_BACK_DXHY + "id={},state={}",id,state); log.info(ZQ_BACK_DXHY + "请求大象接口更新发票状态,id={},state={}",id,state); @@ -419,7 +402,7 @@ 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); diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/task/QueryInvoiceTask.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/task/QueryInvoiceTask.java index 01ef10e..d711bc9 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/task/QueryInvoiceTask.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/task/QueryInvoiceTask.java @@ -112,7 +112,7 @@ public class QueryInvoiceTask extends TimerTask { invoiceBackVali.setBackUrl(""); invoiceBackVali.setStatus("0"); invoiceBackVali.setCreateTime(new Date()); - invoiceBackVali.setSystemOrderno(invoice.getOutTradeOrderno()); + invoiceBackVali.setSystemOrderno(invoice.getFpqqlsh()); invoiceBackVali.setBackMsg(""); invoiceBackVali.setResultCode(kpStatus); invoiceBackVali.setResultMsg(kpMsg); diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/task/RedInvoiceBackTask.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/task/RedInvoiceBackTask.java index 1136c7e..16b000c 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/task/RedInvoiceBackTask.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/task/RedInvoiceBackTask.java @@ -118,7 +118,7 @@ public class RedInvoiceBackTask { //处理返回结果 InvoiceBack invoiceBack = new InvoiceBack(); invoiceBack.setId(IdUtil.randomUUID()); - invoiceBack.setSystemOrderno(invoice.getOutTradeOrderno()); + invoiceBack.setSystemOrderno(invoice.getFpqqlsh()); invoiceBack.setBackUrl(secretIdProp.getValue()); invoiceBack.setIdentity(String.valueOf(companyserviceProp.getCompanyid())); invoiceBack.setCreateTime(new Date()); 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); } diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/elephant/ElephantUtils.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/elephant/ElephantUtils.java index 5538571..9eb4b44 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/elephant/ElephantUtils.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/elephant/ElephantUtils.java @@ -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(); diff --git a/jianshui-invoice/src/main/resources/mapper/invoice/InvoiceMapper.xml b/jianshui-invoice/src/main/resources/mapper/invoice/InvoiceMapper.xml index d67615c..6220631 100644 --- a/jianshui-invoice/src/main/resources/mapper/invoice/InvoiceMapper.xml +++ b/jianshui-invoice/src/main/resources/mapper/invoice/InvoiceMapper.xml @@ -260,6 +260,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where a.company_id = #{companyId} and a.out_trade_orderno = #{out_trade_orderno} and a.update_by = #{update_by} order by a.id desc + +