红字信息查询

beta-enc
kane 2 years ago
parent 03b89d57d2
commit 2303b4486b
  1. 39
      jianshui-admin/src/main/java/com/jianshui/api/controller/http/invoice/v1/InvoiceController.java
  2. 3
      jianshui-framework/src/main/java/com/jianshui/framework/config/SecurityConfig.java
  3. 2
      jianshui-invoice/src/main/java/com/jianshui/invoice/constant/elephant/ElephantConstants.java
  4. 15
      jianshui-invoice/src/main/java/com/jianshui/invoice/domain/FindRedInfo.java
  5. 11
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/IInvoiceApiService.java
  6. 5
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/request/AisinoInvoiceRequestAdapterImpl.java
  7. 3
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/response/AisinoInvoiceResponseAdapterImpl.java
  8. 4
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiServiceImpl.java
  9. 42
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/ElephantInvoiceApiServiceImpl.java
  10. 4
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/JcskInvoiceApiServiceImpl.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回调接口

@ -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(

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

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

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

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

@ -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)) {

@ -1018,5 +1018,9 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
return null;
}
@Override
public HXResponse findRedInfo(FindRedInfo findRedInfo, Companyservice companyservice) {
return null;
}
}

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

@ -1567,6 +1567,10 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService {
}
}
@Override
public HXResponse findRedInfo(FindRedInfo findRedInfo, Companyservice companyservice) {
return null;
}
/**
* 简税和金财数科 发票类型互换

Loading…
Cancel
Save