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 b35f438..391ae86 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,5 +1,6 @@ package com.jianshui.api.controller.http.invoice.v1; +import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSONObject; import com.jianshui.common.core.domain.AjaxResult; import com.jianshui.common.core.domain.entity.Companyservice; @@ -1045,7 +1046,8 @@ public class InvoiceController { serviceManageService.companyConsume("invoice", companyservice.getCompanyid()); IInvoiceApiService invoiceService = invoiceServiceFactory.getService(serviceKey); - HXResponse result = invoiceService.query(decryptResult, companyservice); + InvoiceAllFileQueryTWODTO invoiceAllFileQueryTWODTO = BeanUtil.copyProperties(decryptResult,InvoiceAllFileQueryTWODTO.class); + HXResponse result = invoiceService.query(invoiceAllFileQueryTWODTO, companyservice); String responseAdapterKey = serviceManageService.getResponseAdapterKey("invoice", companyservice.getCompanyid()); IInvoiceResponseService invoiceResponseService = invoiceResponseFactory.getService(responseAdapterKey); @@ -1060,7 +1062,6 @@ public class InvoiceController { @ApiImplicitParam(name = "order", value = "请求体", required = true)}) @PostMapping({"/api/invoice_all/v2/print_xml/{identity}", "/api/invoice_all/v2/print_xml"}) public Object printXmlml(HttpServletRequest request, String identity) throws Exception { -// getPrintXML if (StringUtils.isEmpty(identity)) { return AjaxResult.error(ErrorCode.EMPTY_IDENTITY); @@ -1081,6 +1082,7 @@ public class InvoiceController { serviceManageService.companyConsume("invoice", companyservice.getCompanyid()); IInvoiceApiService invoiceService = invoiceServiceFactory.getService(serviceKey); + HXResponse result = invoiceService.getPrintXML(decryptResult, companyservice); String responseAdapterKey = serviceManageService.getResponseAdapterKey("invoice", companyservice.getCompanyid()); diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/InvoiceAllFileAcquisitionOnDetailTWODTO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/InvoiceAllFileAcquisitionOnDetailTWODTO.java deleted file mode 100644 index 443cfac..0000000 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/InvoiceAllFileAcquisitionOnDetailTWODTO.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.jianshui.invoice.domain.dto.api; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotEmpty; - -/** - * 全电发票文件获取 - * @author kk - * @date 2022年12月09日 17:16 - */ -@Data -public class InvoiceAllFileAcquisitionOnDetailTWODTO { - - - @NotEmpty - @ApiModelProperty(value = "发票号码") - private String fphm; - - @NotEmpty - @ApiModelProperty(value = "开票日期") - private String kprq; - - @NotEmpty - @ApiModelProperty(value = "文件格式") - private String wjgs; - - - -} diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/InvoiceAllFileAcquisitionOnTWODTO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/InvoiceAllFileAcquisitionOnTWODTO.java index f4b1901..3d5a2bd 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/InvoiceAllFileAcquisitionOnTWODTO.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/InvoiceAllFileAcquisitionOnTWODTO.java @@ -16,22 +16,16 @@ public class InvoiceAllFileAcquisitionOnTWODTO { @NotEmpty - @ApiModelProperty(value = "true") - private String async; + @ApiModelProperty(value = "发票号码") + private String fphm; @NotEmpty - @ApiModelProperty(value = "办税人身份证号") - private String bsrysfzjhm; + @ApiModelProperty(value = "开票日期") + private String kprq; @NotEmpty - @ApiModelProperty(value = "*地区编码(参考码表)") - private String dqbm; + @ApiModelProperty(value = "文件格式") + private String wjgs; - @NotEmpty - @ApiModelProperty(value = "*纳税人识别号") - private String nsrsbh; - - - private InvoiceAllFileAcquisitionOnDetailTWODTO jsonData; } diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/InvoiceAllFileQueryTWODTO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/InvoiceAllFileQueryTWODTO.java new file mode 100644 index 0000000..7495cc3 --- /dev/null +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/InvoiceAllFileQueryTWODTO.java @@ -0,0 +1,31 @@ +package com.jianshui.invoice.domain.dto.api; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + +/** + * 单张发票查询 + */ +@Data +public class InvoiceAllFileQueryTWODTO { + + + @ApiModelProperty(value = "发票请求流水号") + private String fpqqlsh; + + @ApiModelProperty(value = "全电发票号码") + private String fphm; + + @ApiModelProperty(value = "开票日期") + private String kprq; + + @ApiModelProperty(value = "纸质发票代码") + private String zzfpdm; + + @ApiModelProperty(value = "纸质发票号码") + private String zzfphm; + + +} diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/FileQueryJsonDataTWODTO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/FileQueryJsonDataTWODTO.java new file mode 100644 index 0000000..40730ba --- /dev/null +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/FileQueryJsonDataTWODTO.java @@ -0,0 +1,29 @@ +package com.jianshui.invoice.domain.dto.api.jcsk; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 单张发票查询 + */ +@Data +public class FileQueryJsonDataTWODTO { + + + @ApiModelProperty(value = "发票请求流水号") + private String fpqqlsh; + + @ApiModelProperty(value = "全电发票号码") + private String fphm; + + @ApiModelProperty(value = "开票日期") + private String kprq; + + @ApiModelProperty(value = "纸质发票代码") + private String zzfpdm; + + @ApiModelProperty(value = "纸质发票号码") + private String zzfphm; + + +} diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/FileQueryTWODTO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/FileQueryTWODTO.java new file mode 100644 index 0000000..5627cea --- /dev/null +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/FileQueryTWODTO.java @@ -0,0 +1,37 @@ +package com.jianshui.invoice.domain.dto.api.jcsk; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + +/** + * 单张发票查询 + */ +@Data +public class FileQueryTWODTO { + + + @NotEmpty + private String appkey; + + @NotEmpty + private String serviceId; + + @NotEmpty + private String bsrysfzjhm; + + @NotEmpty + private String dqbm; + + @NotEmpty + private String async; + + @NotEmpty + private String nsrsbh; + + + private FileQueryJsonDataTWODTO 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 8989823..6b50690 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 @@ -215,12 +215,10 @@ public interface IInvoiceApiService { HXResponse qrcode(JSONObject decryptResult, Companyservice companyservice); /** - *获取人脸二维码 - * @param decryptResult - * @param companyservice + *全电发票文件获取 * @return */ - HXResponse query(JSONObject decryptResult, Companyservice companyservice); + HXResponse query(InvoiceAllFileQueryTWODTO invoiceAllFileQueryTWODTO, Companyservice companyservice); /** *获取发票打印XML 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 d651649..3959656 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 @@ -968,7 +968,7 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService { } @Override - public HXResponse query(JSONObject decryptResult, Companyservice companyservice) { + public HXResponse query(InvoiceAllFileQueryTWODTO invoiceAllFileQueryTWODTO, 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 95d7bb0..9e94eea 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 @@ -1755,7 +1755,7 @@ public class ElephantInvoiceApiServiceImpl implements IInvoiceApiService { } @Override - public HXResponse query(JSONObject decryptResult, Companyservice companyservice) { + public HXResponse query(InvoiceAllFileQueryTWODTO invoiceAllFileQueryTWODTO, 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 c9b4c9e..3401ea2 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 @@ -5,6 +5,7 @@ import java.util.Date; import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.map.MapUtil; +import cn.hutool.json.JSONNull; import com.baomidou.mybatisplus.core.conditions.query.Query; import com.jianshui.common.utils.BeanToMapUtils; import com.jianshui.invoice.domain.dto.api.*; @@ -236,7 +237,7 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { addRedInvoiceDTO.setNsrsbh(queryDTO.getNsrsbh()); QueryWrapper redinfoQueryWrapper = new QueryWrapper<>(); - redinfoQueryWrapper.eq("red_info_no",addRedInvoiceDTO.getHzfpxxqrdid()); + redinfoQueryWrapper.eq("red_info_no", addRedInvoiceDTO.getHzfpxxqrdid()); Redinfo redinfo = redinfoMapper.selectOne(redinfoQueryWrapper); cn.hutool.json.JSONObject result = null; @@ -723,7 +724,7 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { // 查询用户信息组装 InvoiceAllYhdj yhdj = getUserInfo(companyservice); - if(BeanUtil.isEmpty(yhdj)){ + if (BeanUtil.isEmpty(yhdj)) { return new HXResponse("未查询到登记信息!"); } @@ -732,9 +733,9 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { fileAcquisitionDTO.setBsrysfzjhm(yhdj.getBsrysfzjhm()); fileAcquisitionDTO.setDqbm(yhdj.getDqbm()); - Map map = new JSONObject(); - map.put("fphm",fileAcquisitionDTO.getFphm()); - map.put("kprq",fileAcquisitionDTO.getKprq()); + Map map = new JSONObject(); + map.put("fphm", fileAcquisitionDTO.getFphm()); + map.put("kprq", fileAcquisitionDTO.getKprq()); fileAcquisitionDTO.setJsonData(map); ValidateUtils.validate(fileAcquisitionDTO); @@ -781,9 +782,21 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { @Override public HXResponse getFileAcquisitionOn(InvoiceAllFileAcquisitionOnTWODTO invoiceAllFileAcquisitionOnTWODTO, Companyservice companyservice) { - FileAcquisitionOnTwoDTO fileAcquisitionOnDTO = BeanUtil.copyProperties(invoiceAllFileAcquisitionOnTWODTO, FileAcquisitionOnTwoDTO.class); - FileAcquisitionOnDetailTwoDTO fileAcquisitionOnDetailDTO = BeanUtil.copyProperties(invoiceAllFileAcquisitionOnTWODTO.getJsonData(), FileAcquisitionOnDetailTwoDTO.class); + + FileAcquisitionOnTwoDTO fileAcquisitionOnDTO = new FileAcquisitionOnTwoDTO(); + FileAcquisitionOnDetailTwoDTO fileAcquisitionOnDetailDTO = BeanUtil.copyProperties(invoiceAllFileAcquisitionOnTWODTO, FileAcquisitionOnDetailTwoDTO.class); fileAcquisitionOnDTO.setJsonData(fileAcquisitionOnDetailDTO); + + // 查询用户信息组装 + InvoiceAllYhdj yhdj = getUserInfo(companyservice); + if (BeanUtil.isEmpty(yhdj)) { + return new HXResponse("未查询到登记信息!"); + } + fileAcquisitionOnDTO.setAsync("true"); + fileAcquisitionOnDTO.setNsrsbh(yhdj.getNsrsbh()); + fileAcquisitionOnDTO.setDqbm(yhdj.getDqbm()); + fileAcquisitionOnDTO.setBsrysfzjhm(yhdj.getBsrysfzjhm()); + ValidateUtils.validate(fileAcquisitionOnDTO); ValidateUtils.validate(fileAcquisitionOnDetailDTO); @@ -811,6 +824,8 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { allApiLog.setCreateTime(new Date()); allApiLogMapper.insertInvoiceAllApiLog(allApiLog); + HXResponse response = new HXResponse("0000", "同步成功", JSONUtil.parse(data)); + return response; } else { return new HXResponse(msg); } @@ -820,9 +835,6 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { return new HXResponse("全电发票文件获取错误!"); } - - HXResponse response = new HXResponse("0000", "同步成功", result); - return response; } /** @@ -876,26 +888,65 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { } @Override - public HXResponse query(JSONObject decryptResult, Companyservice companyservice) { + public HXResponse query(InvoiceAllFileQueryTWODTO invoiceAllFileQueryTWODTO, Companyservice companyservice) { + + FileQueryTWODTO fileQueryTWODTO = new FileQueryTWODTO(); + FileQueryJsonDataTWODTO fileQueryJsonDataTWODTO = BeanUtil.copyProperties(invoiceAllFileQueryTWODTO, FileQueryJsonDataTWODTO.class); + fileQueryTWODTO.setJsondata(fileQueryJsonDataTWODTO); + + // 查询用户信息组装 + InvoiceAllYhdj yhdj = getUserInfo(companyservice); + if (BeanUtil.isEmpty(yhdj)) { + return new HXResponse("未查询到登记信息!"); + } + + fileQueryTWODTO.setDqbm(yhdj.getDqbm()); + fileQueryTWODTO.setBsrysfzjhm(yhdj.getBsrysfzjhm()); + fileQueryTWODTO.setNsrsbh(yhdj.getNsrsbh()); + fileQueryTWODTO.setAsync("true"); + cn.hutool.json.JSONObject result = null; try { - result = ApiHttp.request(WebServiceConstant.QUERY, WebServiceConstant.URL, decryptResult, companyservice); - // TODO: 2022/12/11 返回处理 VO整理,数据存储。 + result = ApiHttp.request(WebServiceConstant.QUERY, WebServiceConstant.URL, fileQueryTWODTO, 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.QUERY); + allApiLog.setSendMsg(fileQueryTWODTO.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()); + log.error("【金四服务类】【金财数科】【单张发票查询】API请求异常,外部报文返回code非0000。错误信息:{}", e.getMessage()); return new HXResponse("发票查询错误"); - } - // TODO 处理日志 - - HXResponse response = new HXResponse("0000", "同步成功", result); - return response; } @Override public HXResponse getPrintXML(JSONObject decryptResult, Companyservice companyservice) { + + cn.hutool.json.JSONObject result = null; try { result = ApiHttp.request(WebServiceConstant.GET_PRINT_XML, WebServiceConstant.URL, decryptResult, companyservice); @@ -1248,8 +1299,7 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { } } - } - else if (WebServiceConstant.FPEWMXZ.equals(finalServiceId)) { + } else if (WebServiceConstant.FPEWMXZ.equals(finalServiceId)) { // 获取发票下载地址 cn.hutool.json.JSONObject json = JSONUtil.parseObj(data); String ewmUrl = json.getOrDefault("ewmUrl", "").toString(); @@ -1268,8 +1318,7 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { } // TODO: 2023/3/29 返回数据处理 response.put("data", JSONUtil.parse(data)); - } - else if (WebServiceConstant.ADD_RED_INVOICE.equals(finalServiceId)) { + } else if (WebServiceConstant.ADD_RED_INVOICE.equals(finalServiceId)) { // 查找原发票信息 AddRedInvoiceTWOVO addRedInvoiceVO = BeanUtil.copyProperties(data, AddRedInvoiceTWOVO.class); QueryWrapper billInfoQueryWrapper = new QueryWrapper<>(); @@ -1307,8 +1356,7 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { response.put("data", invoice); } - } - else if (WebServiceConstant.KSHC.equals(finalServiceId)) { + } else if (WebServiceConstant.KSHC.equals(finalServiceId)) { // 快速冲红 // TODO: 后期存库 // KschVO kschVO = BeanUtil.copyProperties(data,KschVO.class); @@ -1347,7 +1395,7 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { Invoice invoice = invoiceMapper.selectOne(invoiceQueryWrapper); AddRedInfoInvoiceJsonDataTWOVO addRedInfoInvoiceJsonDataTWOVO = addRedInfoInvoiceTWOVO.getHzfpxx(); - if(BeanUtil.isNotEmpty(addRedInfoInvoiceJsonDataTWOVO)){ + if (BeanUtil.isNotEmpty(addRedInfoInvoiceJsonDataTWOVO)) { //更新蓝字发票状态为冲红 99 invoice.setState(99); @@ -1381,8 +1429,8 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { response.put("data", addRedInfoInvoiceTWOVO); } - }else{ - response.put("data",JSONUtil.parse(data)); + } else { + response.put("data", JSONUtil.parse(data)); } return response; } else { @@ -1460,7 +1508,7 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { /** * 用户信息处理 */ - public InvoiceAllYhdj getUserInfo(Companyservice companyservice){ + public InvoiceAllYhdj getUserInfo(Companyservice companyservice) { // 查询用户登记参数 QueryWrapper yhdjQueryWrapper = new QueryWrapper<>();