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 391ae86..da72cb7 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 @@ -24,6 +24,7 @@ import com.jianshui.system.service.IServiceManageService; import io.swagger.annotations.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -1083,7 +1084,8 @@ public class InvoiceController { IInvoiceApiService invoiceService = invoiceServiceFactory.getService(serviceKey); - HXResponse result = invoiceService.getPrintXML(decryptResult, companyservice); + InvoiceAllPrintXMLTWODTO invoiceAllPrintXMLTWODTO = BeanUtil.copyProperties(decryptResult,InvoiceAllPrintXMLTWODTO.class); + HXResponse result = invoiceService.getPrintXML(invoiceAllPrintXMLTWODTO, companyservice); String responseAdapterKey = serviceManageService.getResponseAdapterKey("invoice", companyservice.getCompanyid()); IInvoiceResponseService invoiceResponseService = invoiceResponseFactory.getService(responseAdapterKey); diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/InvoiceAllPrintXMLTWODTO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/InvoiceAllPrintXMLTWODTO.java new file mode 100644 index 0000000..bfc91a5 --- /dev/null +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/InvoiceAllPrintXMLTWODTO.java @@ -0,0 +1,32 @@ +package com.jianshui.invoice.domain.dto.api; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +/** + * 获取发票打印xml + */ +@Data +public class InvoiceAllPrintXMLTWODTO { + + @NotEmpty + @ApiModelProperty(value = "打印类型") + private String dylx; + + @NotEmpty + @ApiModelProperty(value = "发票号码") + private String fphm; + + @ApiModelProperty(value = "红字确认单编号") + @NotEmpty + private String hzqrdbh; + + @NotEmpty + @ApiModelProperty(value = "纳税人识别号") + private String nsrsbh; + + +} diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/PrintXMLJsonDataTWODTO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/PrintXMLJsonDataTWODTO.java new file mode 100644 index 0000000..48b98da --- /dev/null +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/PrintXMLJsonDataTWODTO.java @@ -0,0 +1,33 @@ +package com.jianshui.invoice.domain.dto.api.jcsk; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + +/** + * 获取发票打印xml + */ +@Data +public class PrintXMLJsonDataTWODTO { + + @NotEmpty + @ApiModelProperty(value = "打印类型") + private String dylx; + + @NotEmpty + @ApiModelProperty(value = "发票号码") + private String fphm; + + @ApiModelProperty(value = "红字确认单编号") + @NotEmpty + private String hzqrdbh; + + @NotEmpty + @ApiModelProperty(value = "纳税人识别号") + private String nsrsbh; + + + + +} diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/PrintXMLTWODTO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/PrintXMLTWODTO.java new file mode 100644 index 0000000..a2cc46f --- /dev/null +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/PrintXMLTWODTO.java @@ -0,0 +1,33 @@ +package com.jianshui.invoice.domain.dto.api.jcsk; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + +/** + * 获取发票打印xml + */ +@Data +public class PrintXMLTWODTO { + + @NotEmpty + @ApiModelProperty(value = "true") + private String async; + + @NotEmpty + @ApiModelProperty(value = "办税人身份证号") + private String bsrysfzjhm; + + @ApiModelProperty(value = "*地区编码(参考码表)") + @NotEmpty + private String dqbm; + + @NotEmpty + @ApiModelProperty(value = "纳税人识别号") + private String nsrsbh; + + private PrintXMLJsonDataTWODTO jsonData; + + +} 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 6b50690..5134e0d 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 @@ -226,7 +226,7 @@ public interface IInvoiceApiService { * @param companyservice * @return */ - HXResponse getPrintXML(JSONObject decryptResult, Companyservice companyservice); + HXResponse getPrintXML(InvoiceAllPrintXMLTWODTO invoiceAllPrintXMLTWODTO, Companyservice companyservice); /** *快速红冲 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 3959656..2984c16 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 @@ -973,7 +973,7 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService { } @Override - public HXResponse getPrintXML(JSONObject decryptResult, Companyservice companyservice) { + public HXResponse getPrintXML(InvoiceAllPrintXMLTWODTO invoiceAllPrintXMLTWODTO, 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 9e94eea..e5f46d5 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 @@ -1760,7 +1760,7 @@ public class ElephantInvoiceApiServiceImpl implements IInvoiceApiService { } @Override - public HXResponse getPrintXML(JSONObject decryptResult, Companyservice companyservice) { + public HXResponse getPrintXML(InvoiceAllPrintXMLTWODTO invoiceAllPrintXMLTWODTO, Companyservice companyservice) { 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 3401ea2..e4a7a29 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 @@ -944,24 +944,62 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { } @Override - public HXResponse getPrintXML(JSONObject decryptResult, Companyservice companyservice) { + public HXResponse getPrintXML(InvoiceAllPrintXMLTWODTO invoiceAllPrintXMLTWODTO, Companyservice companyservice) { + // 查询用户信息组装 + InvoiceAllYhdj yhdj = getUserInfo(companyservice); + if (BeanUtil.isEmpty(yhdj)) { + return new HXResponse("未查询到登记信息!"); + } + + PrintXMLTWODTO printXMLTWODTO = new PrintXMLTWODTO(); + PrintXMLJsonDataTWODTO jsonDataTWODTO = BeanUtil.copyProperties(invoiceAllPrintXMLTWODTO,PrintXMLJsonDataTWODTO.class); + jsonDataTWODTO.setNsrsbh(yhdj.getNsrsbh()); + printXMLTWODTO.setBsrysfzjhm(yhdj.getBsrysfzjhm()); + printXMLTWODTO.setNsrsbh(yhdj.getNsrsbh()); + printXMLTWODTO.setAsync("true"); + printXMLTWODTO.setDqbm(yhdj.getDqbm()); + printXMLTWODTO.setJsonData(jsonDataTWODTO); + + ValidateUtils.validate(printXMLTWODTO); + ValidateUtils.validate(jsonDataTWODTO); cn.hutool.json.JSONObject result = null; try { - result = ApiHttp.request(WebServiceConstant.GET_PRINT_XML, WebServiceConstant.URL, decryptResult, companyservice); - // TODO: 2022/12/11 返回处理 VO整理,数据存储。 + result = ApiHttp.request(WebServiceConstant.GET_PRINT_XML, WebServiceConstant.URL, printXMLTWODTO, companyservice); + + String code = result.get("code") != null ? result.get("code").toString() : ""; + String msg = result.get("msg") != null ? result.get("msg").toString() : ""; + String data = result.get("data") != null ? result.get("data").toString() : ""; + + if ("0000".equals(code) && StrUtil.isNotEmpty(data)) { + cn.hutool.json.JSONObject json = JSONUtil.parseObj(data); + String requestId = json.getOrDefault("requestId", "").toString(); + if (StrUtil.isEmpty(requestId)) { + return new HXResponse(msg); + } + InvoiceAllApiLog allApiLog = new InvoiceAllApiLog(); + allApiLog.setUrl(WebServiceConstant.GET_PRINT_XML); + allApiLog.setSendMsg(printXMLTWODTO.toString()); + allApiLog.setResultMsg(JSONUtil.toJsonStr(result)); + allApiLog.setCompany(companyservice.getSellertax()); + allApiLog.setIdentityId(companyservice.getIdentity()); + allApiLog.setRequestId(requestId); + allApiLog.setCreateTime(new Date()); + allApiLogMapper.insertInvoiceAllApiLog(allApiLog); + + HXResponse response = new HXResponse("0000", "同步成功", JSONUtil.parse(data)); + return response; + } else { + return new HXResponse(msg); + } } catch (Exception e) { e.printStackTrace(); - log.error("【金四服务类】【金财数科】【获取二维码】API请求异常,外部报文返回code非0000。错误信息:{}", e.getMessage()); - return new HXResponse("获取二维码错误!"); + log.error("【金四服务类】【金财数科】【获取发票打印XML】API请求异常,外部报文返回code非0000。错误信息:{}", e.getMessage()); + return new HXResponse("获取发票打印XML错误!"); } - // TODO 处理日志 - - HXResponse response = new HXResponse("0000", "同步成功", result); - return response; } @Override diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/IncomeTest.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/IncomeTest.java index 6d4619b..dada513 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/IncomeTest.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/IncomeTest.java @@ -181,6 +181,7 @@ public class IncomeTest { " \"ZTBZ\": \"1\",\n" + // 当给 1 时继续请求,0 时结束请求 " \"taxNo\": \"9111122223333CKFPT\"\n" + // 测试税号 "}"; + m = AisinoInvoiceDecryptUtil.encrypt(order, key); System.out.println("json : \n" + order); System.out.println(m);