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 3d107fe..b54a802 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 @@ -1,6 +1,7 @@ package com.jianshui.api.controller.http.invoice.v1; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; import com.jianshui.common.core.domain.AjaxResult; import com.jianshui.common.core.domain.entity.Companyservice; @@ -9,6 +10,7 @@ import com.jianshui.common.exception.jianshui.JianshuiParamErrorException; import com.jianshui.common.utils.StringUtils; import com.jianshui.common.utils.http.HttpHelper; import com.jianshui.invoice.domain.BillInfo; +import com.jianshui.invoice.domain.FindRedInfo; import com.jianshui.platform.dto.InvoiceAdd.BillInfoPDTO; import com.jianshui.invoice.domain.Redinfo; import com.jianshui.invoice.domain.dto.*; @@ -27,9 +29,7 @@ import io.swagger.annotations.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; @@ -62,6 +62,39 @@ public class InvoiceController { @Autowired private InvoiceAddPService addService; + /** + * 功能描述: 红字查询接口 + * @param identity + * @return : com.jianshui.invoice.domain.dto.HXResponse + */ + @PostMapping({"/api/invoice/v1/findRedInfo", "/api/invoice/v1/findRedInfo/{identity}", "/invoice/findRedInfo"}) + public Object findRedInfo(HttpServletRequest request,String identity) throws Exception { + log.info("开始执行"); + if (StringUtils.isEmpty(identity)) { + return AjaxResult.error(ErrorCode.EMPTY_IDENTITY); + } + Companyservice companyservice = iCompanyserviceService.selectCompanyserviceByIdentity(identity); + if (companyservice == null) { + return AjaxResult.error(ErrorCode.COMPANY_NOT_FOUND); + } + String requestAdapterKey = serviceManageService.getRequestAdapterKey("invoice", companyservice.getCompanyid()); + IInvoiceRequestService invoiceRequestService = invoiceRequestFactory.getService(requestAdapterKey); + JSONObject decryptResult = invoiceRequestService.decrypt(request, companyservice, "find_redinfo"); + // 获得请求实例,并且进行扣费 + log.info("解密数据{}",decryptResult); + FindRedInfo findRedInfo = decryptResult.toJavaObject(FindRedInfo.class); + log.info("转换数据{}", JSONUtil.toJsonStr(findRedInfo)); + String serviceKey = serviceManageService.getCompanyServiceSupplier("invoice", companyservice.getCompanyid()); + serviceManageService.companyConsume("invoice", companyservice.getCompanyid()); + IInvoiceApiService invoiceService = invoiceServiceFactory.getService(serviceKey); + HXResponse result = invoiceService.findRedInfo(findRedInfo, companyservice); + + String responseAdapterKey = serviceManageService.getResponseAdapterKey("invoice", companyservice.getCompanyid()); + IInvoiceResponseService invoiceResponseService = invoiceResponseFactory.getService(responseAdapterKey); + + return invoiceResponseService.response(result, companyservice, "find_redinfo"); + } + /** * API回调接口 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 ec987cf..a5a5800 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 @@ -117,7 +117,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { "/invoice/deleteInvoiceQuery", "/invoice/batch_print", "/invoice/printer_list", - "/invoice/deleteInvoice" + "/invoice/deleteInvoice", + "/invoice/findRedInfo" ) .permitAll() // 所有原有发票 .antMatchers( diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/constant/elephant/ElephantConstants.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/constant/elephant/ElephantConstants.java index db8779b..6f4bd6c 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/constant/elephant/ElephantConstants.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/constant/elephant/ElephantConstants.java @@ -54,6 +54,8 @@ public class ElephantConstants { public static String REDINFO_DOWNLOAD = "order-api/order-api/v4/DownloadRedInvoiceApplicationResult"; public static String REDINFO_DOWNLOAD_LOCALHOST = "/invoice/api/v4/DownloadRedInvoiceApplicationResult"; public static String REDINFO_DOWNLOAD_METHOD = "DownloadRedInvoiceApplicationResult"; + public static String REDINFO_FIND_LOCALHOST = "/invoice/api/v4/GetRedInvoiceApplication"; + public static String REDINFO_FIND_METHOD = "GetRedInvoiceApplication"; // 发票作废 public static String DEPRECATE_INVOICE = "order-api/order-api/v4/DeprecateInvoices"; diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/FindRedInfo.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/FindRedInfo.java new file mode 100644 index 0000000..f9cac50 --- /dev/null +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/FindRedInfo.java @@ -0,0 +1,15 @@ +package com.jianshui.invoice.domain; + +import lombok.Data; + +/** + * @author xingze + * @date 2023/9/11 + */ +@Data +public class FindRedInfo { + // 请求批次号 + private String SQBQQPCH; + // 申请方纳税人识别号 + private String NSRSBH; +} 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 85e2b6a..495b801 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 @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject; import com.jianshui.common.core.domain.AjaxResult; import com.jianshui.common.core.domain.entity.Companyservice; import com.jianshui.invoice.domain.BillInfo; +import com.jianshui.invoice.domain.FindRedInfo; import com.jianshui.invoice.domain.Invoice; import com.jianshui.invoice.domain.Redinfo; import com.jianshui.invoice.domain.dto.*; @@ -269,4 +270,12 @@ public interface IInvoiceApiService { * @return */ HXResponse queryResultInfo(InvoiceAllQueryTWODTO invoiceAllYhdjDTO, Companyservice companyservice); -} + + /** + * 功能描述: 红字信息查询 + * @param findRedInfo + * @param companyservice + * @return : java.lang.Object + */ + HXResponse findRedInfo(FindRedInfo findRedInfo, Companyservice companyservice); +} \ No newline at end of file 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 b83f434..c49ea86 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 @@ -136,7 +136,10 @@ public class AisinoInvoiceRequestAdapterImpl implements IInvoiceRequestService { // if (!json.getString("taxNo").equals(companyservice.getSellertax())) { // throw new JianshuiParamErrorException(ErrorCode.IDENTITY_NOT_MATCH,"invoice); // } - + // 红字查询 + if (StringUtils.equals(serviceKey,"find_redinfo")){ + return json; + } // 如果是开票或者查询 if (StringUtils.equals(serviceKey, "add") || StringUtils.equals(serviceKey, "query")) { // 开始把航信报文转成billInfo diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/response/AisinoInvoiceResponseAdapterImpl.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/response/AisinoInvoiceResponseAdapterImpl.java index 246dac4..eb6713f 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/response/AisinoInvoiceResponseAdapterImpl.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/response/AisinoInvoiceResponseAdapterImpl.java @@ -103,6 +103,9 @@ public class AisinoInvoiceResponseAdapterImpl implements IInvoiceResponseService if (StringUtils.equals("add_redinfo", query)) { return result; } + if (StringUtils.equals("find_redinfo", query)) { + return result; + } // 如果是下载红票 if (StringUtils.equals("download_redinfo", query)) { 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 fe8f383..e1f5f35 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 @@ -1018,5 +1018,9 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService { return null; } + @Override + public HXResponse findRedInfo(FindRedInfo findRedInfo, Companyservice companyservice) { + return null; + } } 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 bb420f9..f1ec81a 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 @@ -727,6 +727,41 @@ public class ElephantInvoiceApiServiceImpl implements IInvoiceApiService { return new HXResponse("0000", "查询成功", result); } + /** + * 功能描述: 红字信息查询 + * @param findRedInfo + * @param companyservice + * @return : java.lang.Object + */ + @Override + public HXResponse findRedInfo(FindRedInfo findRedInfo, Companyservice companyservice) { + log.info("传入信息======》",JSONUtil.toJsonStr(findRedInfo)); + if (StringUtils.isEmpty(findRedInfo.getSQBQQPCH()) || StringUtils.isEmpty(findRedInfo.getNSRSBH())){ + log.error("传入信息为空"); + return new HXResponse("9999","传入信息为空"); + } + AjaxResult queryResult = null; + try { + queryResult = ElephantUtils.sendRequestWithoutToken(ElephantConstants.REDINFO_FIND_LOCALHOST, ElephantConstants.REDINFO_FIND_METHOD, JSONUtil.parse(findRedInfo), companyservice); + } catch (UnsupportedEncodingException | InvalidKeyException | NoSuchAlgorithmException e) { + log.error("【销项发票】【大象接口】【红字信息表查询】发票请求异常,请求报文{},销方信息{}", JSONUtil.parse(findRedInfo).toString(), JSONObject.toJSONString(companyservice)); + e.printStackTrace(); + throw new JianshuiServiceException("系统异常!"); + } + log.info("【销项发票】【大象发票】红字信息表查询请求结果{}", queryResult.toString()); + JSONObject jsonData = queryResult.getJsonData(); + String ztdm = jsonData.getString("ZTDM"); + log.info("外层状态码{}",ztdm); + if ("000000".equals(ztdm)){ + return new HXResponse(jsonData.toJSONString()); + }else if ("009999".equals(ztdm)){ + return new HXResponse("9999","接口请求失败(展示具体错误信息)"); + }else { + return new HXResponse("9999","数据查询失败"); + } + } + + /** * 申请/上传 红字发票 @@ -861,6 +896,12 @@ public class ElephantInvoiceApiServiceImpl implements IInvoiceApiService { // 外部状态代码 String ztdm = contentJson.getString("ZTDM"); + if (StringUtils.equals("060111",ztdm) || StringUtils.equals("060001",ztdm)){ + redinfo.setRedInfoStatus("0"); + redinfo.setRedInfoMessage(contentJson.getString("ZTXX")); + redinfoMapper.updateRedinfo(redinfo); + return new HXResponse("8888","数据上传成功,请调用信息下载接口查询审核状态!"); + } if (!StringUtils.equals("0000", ztdm)) { redinfo.setRedInfoStatus("2"); redinfo.setRedInfoMessage(contentJson.getString("ZTXX")); @@ -1801,5 +1842,4 @@ public class ElephantInvoiceApiServiceImpl implements IInvoiceApiService { return null; } - } 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 3378f31..ca5f31a 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 @@ -1567,6 +1567,10 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { } } + @Override + public HXResponse findRedInfo(FindRedInfo findRedInfo, Companyservice companyservice) { + return null; + } /** * 简税和金财数科 发票类型互换