大象数电开具接口、开具结果查询接口

beta-enc
kk 2 years ago
parent 0ecb5b4d7a
commit 4d3fc705ed
  1. 30
      jianshui-admin/src/main/java/com/jianshui/api/controller/http/invoice/v1/InvoiceController.java
  2. 42
      jianshui-invoice/src/main/java/com/jianshui/invoice/constant/elephant/ElephantConstantsV6.java
  3. 128
      jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/aisino/console/vehicle/TaxEquipmentInfo.java
  4. 44
      jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/aisino/console/vehicle/VehicleInvoiceExpBo.java
  5. 14
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/IInvoiceApiService.java
  6. 2
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/request/AisinoInvoiceRequestAdapterImpl.java
  7. 345
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiServiceImpl.java
  8. 6
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/ElephantInvoiceApiServiceImpl.java
  9. 7
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/ElephantInvoiceApiV6ServiceImpl.java
  10. 14
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/JcskInvoiceApiServiceImpl.java
  11. 66
      jianshui-invoice/src/main/java/com/jianshui/invoice/utils/elephant/ElephantUtils.java

@ -1664,7 +1664,37 @@ public class InvoiceController {
/** 导出机动车加密数据(重汽) */
@ApiImplicitParams({
@ApiImplicitParam(name = "identity", value = "身份认证", dataType = "java.lang.Void", example = "1130", required = true),
@ApiImplicitParam(name = "order", value = "请求体", dataType = "java.lang.Void", required = true)})
@PostMapping({"/api/invoice/v1/exportVehicleInvoice/{identity}", "/api/invoice/v1/exportVehicleInvoice"})
public Object exportVehicleInvoice(HttpServletRequest request, String identity) throws Exception {
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, "");
// 获得请求实例,并且进行扣费
String serviceKey = serviceManageService.getCompanyServiceSupplier("invoice", companyservice.getCompanyid());
serviceManageService.companyConsume("invoice", companyservice.getCompanyid());
IInvoiceApiService invoiceService = invoiceServiceFactory.getService(serviceKey);
HXResponse result = invoiceService.exportVehicleInvoice(decryptResult, companyservice);
String responseAdapterKey = serviceManageService.getResponseAdapterKey("invoice", companyservice.getCompanyid());
IInvoiceResponseService invoiceResponseService = invoiceResponseFactory.getService(responseAdapterKey);
return invoiceResponseService.response(result, companyservice, "");
}

@ -14,7 +14,7 @@ public class ElephantConstantsV6 {
public static String DEV_HOST = "https://sandbox.zncspt.com/api/";
public static String DEV_ELECLOUD_HOST = "https://sandbox.ele-cloud.com/api/";
public static String DEV_HOST_LOCAL = "http://140.143.226.17:8087/order-api";
public static String DEV_HOST_LOCAL_V6_JingDongYun = "https://js.ele12.com/order-api";
public static String DEV_HOST_LOCAL_v6_JingDongYun = "https://js.ele12.com/order-api";
// 生产的域名
public static String PROD_HOST = "https://openapi.zncspt.com/api/";
@ -22,17 +22,17 @@ public class ElephantConstantsV6 {
public static String PROD_ELECLOUD_HOST = "https://openapi.ele-cloud.com/api/";
public static String PROD_HOST_LOCAL = "http://140.143.226.17:8087/order-api";
public static String PROD_HOST_LOCAL_V6_JingDongYun = "https://js.ele12.com/order-api";
public static String PROD_HOST_LOCAL_v6_JingDongYun = "https://js.ele12.com/order-api";
// 测试的获取token的域名
public static String DEV_TOKEN_HOST = "https://sandbox.zncspt.com/api/authen/token";
// 生产的获取token的域名
public static String PROD_TOKEN_HOST = "https://openapi.zncspt.com/api/authen/token";
// 发票开具冲红
public static String ADD_INVOICE = "order-api/order-api/V6/AllocateInvoices";
public static String ADD_INVOICE_LOCALHOST = "/invoice/api/V6/AllocateInvoices";
public static String ADD_INVOICE_METHOD = "AllocateInvoices";
// 发票开具冲红
public static String ADD_INVOICE = "order-api/v6/GenerateQdInvoice";
public static String ADD_INVOICE_LOCALHOST = "/invoice/api/v6/GenerateQdInvoice";
public static String ADD_INVOICE_METHOD = "GenerateQdInvoice";
public static String GENERATE_QD_HWYS_INVOICE = "GenerateQdHwysInvoice";
public static String GENERATE_QD_BDCXS_INVOICE = "GenerateQdBdcxsInvoice";
@ -40,23 +40,23 @@ public class ElephantConstantsV6 {
public static String GENERATE_QD_BDXZL_INVOICE = "GenerateQdBdczlInvoice";
// 发票开票结果拉取
public static String ADD_INVOICE_RESULT = "order-api/order-api/V6/GetAllocatedInvoices";
public static String ADD_INVOICE_RESULT_LOCALHOST = "/invoice/api/V6/GetAllocatedInvoices";
public static String ADD_INVOICE_RESULT_METHOD = "GetAllocatedInvoices";
public static String ADD_INVOICE_RESULT = "order-api/order-api/v6/GetOrderInfoAndInvoiceInfo";
public static String ADD_INVOICE_RESULT_LOCALHOST = "/invoice/api/v6/GetOrderInfoAndInvoiceInfo";
public static String ADD_INVOICE_RESULT_METHOD = "GetOrderInfoAndInvoiceInfo";
// 发票详情拉取
public static String QUERY_INVOICE = "order-api/order-api/V6/GetOrderInfoAndInvoiceInfo";
public static String QUERY_INVOICE_LOCALHOST = "/invoice/api/V6/GetOrderInfoAndInvoiceInfo";
public static String QUERY_INVOICE = "order-api/order-api/v6/GetOrderInfoAndInvoiceInfo";
public static String QUERY_INVOICE_LOCALHOST = "/invoice/api/v6/GetOrderInfoAndInvoiceInfo";
public static String QUERY_INVOICE_METHOD = "GetOrderInfoAndInvoiceInfo";
// 红字信息表上传
public static String REDINFO_UPLOAD = "order-api/order-api/V6/AllocateRedInvoiceApplication";
public static String REDINFO_UPLOAD_LOCALHOST = "/invoice/api/V6/AllocateRedInvoiceApplication";
public static String REDINFO_UPLOAD = "order-api/order-api/v6/AllocateRedInvoiceApplication";
public static String REDINFO_UPLOAD_LOCALHOST = "/invoice/api/v6/AllocateRedInvoiceApplication";
public static String REDINFO_UPLOAD_METHOD = "AllocateRedInvoiceApplication";
public static String REDINFO_DOWNLOAD = "order-api/order-api/V6/DownloadRedInvoiceApplicationResult";
public static String REDINFO_DOWNLOAD_LOCALHOST = "/invoice/api/V6/DownloadRedInvoiceApplicationResult";
public static String REDINFO_DOWNLOAD = "order-api/order-api/v6/DownloadRedInvoiceApplicationResult";
public static String REDINFO_DOWNLOAD_LOCALHOST = "/invoice/api/v6/DownloadRedInvoiceApplicationResult";
public static String REDINFO_DOWNLOAD_METHOD = "DownloadRedInvoiceApplicationResult";
public static String REDINFO_FIND_LOCALHOST = "/invoice/api/v6/GetRedInvoiceApplication";
public static String REDINFO_FIND_METHOD = "GetRedInvoiceApplication";
@ -108,23 +108,23 @@ public class ElephantConstantsV6 {
public static String DEPRECATE_INVOICE_METHOD = "DeprecateInvoices";
// 发票作废结果查询
public static String DEPRECATE_INVOICE_RESULT = "order-api/order-api/V6//QueryInvalidInvoice";
public static String DEPRECATE_INVOICE_RESULT_LOCALHOST = "/invoice/api/V6//QueryInvalidInvoice";
public static String DEPRECATE_INVOICE_RESULT_METHOD = "order-api/order-api/V6//QueryInvalidInvoice";
public static String DEPRECATE_INVOICE_RESULT = "order-api/order-api/v6//QueryInvalidInvoice";
public static String DEPRECATE_INVOICE_RESULT_LOCALHOST = "/invoice/api/v6//QueryInvalidInvoice";
public static String DEPRECATE_INVOICE_RESULT_METHOD = "order-api/order-api/v6//QueryInvalidInvoice";
// 打印机查询
public static String QUERY_PRINTER = "";
public static String QUERY_PRINTER_LOCALHOST = "/invoice/api/V6/QueryPrinter";
public static String QUERY_PRINTER_LOCALHOST = "/invoice/api/v6/QueryPrinter";
public static String QUERY_PRINTER_METHOD = "QueryPrinter";
// 批量打印
public static String BATCH_PRINT = "";
public static String BATCH_PRINT_LOCALHOST = "/invoice/api/V6/PrintInvoice";
public static String BATCH_PRINT_LOCALHOST = "/invoice/api/v6/PrintInvoice";
public static String BATCH_PRINT_METHOD = "PrintInvoice";
// 发票余量查询接口
public static String QUERY_INVOICE_STORE = "order-api/order-api/V6/QueryInvoiceStore";
public static String QUERY_INVOICE_STORE = "order-api/order-api/v6/QueryInvoiceStore";
/**

@ -0,0 +1,128 @@
package com.jianshui.invoice.domain.dto.api.aisino.console.vehicle;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 税控设备类型
*/
@Getter
@Setter
public class TaxEquipmentInfo implements Serializable {
private String id;
private String xhfNsrsbh;
private String xhfMc;
/**
* 组织Id,6.1.4版本从enterpriseNumber改为该值
*/
private String qyId;
private String sksbCode;
private String sksbName;
private String sksbType;
private Date linkTime;
/**
* 渠道id
*/
private String distributorId;
/**
* 渠道名称
*/
private String distributorName;
/**
* 省份代码
*/
private String sfdm;
/**
* 省份名称
*/
private String sfmc;
private String bz;
/**
* 删除标志(0:未删除;1:已删除)
*/
private String deleted;
private Date createTime;
private Date updateTime;
private String pageSize;
private String currentPage;
/**
* 渠道ID
*/
private String qdId;
/**
* 渠道名称
*/
private String qdMc;
/**
* 类型不为空返回全部
*/
private String type;
/**
* 税号数组
*/
private List<String> shList;
/**
* 缓存时间,
*/
private Date cacheDate;
/**
* 开票开关 0开票 1不开票
*/
private String flag;
/**
* 开票控制后失败code
*/
private String flagCode;
/**
* 开票控制后失败msg
*/
private String flagBz;
/**
* 数电服务类型(1:乐企开票,2:RPA开票,:未设置)
*/
private String qdfwlx;
/**
* 数电授权码
*/
private String qdsqm;
/**
* 企业唯一标识,
*/
private String enterpriseNumbers;
}

@ -0,0 +1,44 @@
package com.jianshui.invoice.domain.dto.api.aisino.console.vehicle;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
/**
* 机动车专票加密数据导出
*/
@Data
public class VehicleInvoiceExpBo implements Serializable {
/**
* 纳税人识别号
*/
private String nsrsbh;
/**
* 数据权限Id
*/
private String entId;
/**
* 分机号
*/
private String fjh;
/**
* 起始时间 yyyy-MM-dd
*/
private String qqsj;
/**
* 终止时间 yyyy-MM-dd
*/
private String zzsj;
/**
* 每页显示条数
*/
private Integer pageSize;
/**
* 当前页数
*/
private Integer currPage;
}

@ -342,4 +342,18 @@ public interface IInvoiceApiService {
/** 生成动态二维码接口*/
HXResponse generateDynamicCode(JSONObject decryptResult, Companyservice companyservice);
/** 机动车加密接口 */
HXResponse exportVehicleInvoice(JSONObject decryptResult, Companyservice companyservice);
}

@ -103,7 +103,7 @@ public class AisinoInvoiceRequestAdapterImpl implements IInvoiceRequestService {
// 平台解密
try {
// TODO: 2023/9/20
order = AisinoInvoiceDecryptUtil.decrypt(order, JKey);
// order = AisinoInvoiceDecryptUtil.decrypt(order, JKey);
} catch (Exception e) {
e.printStackTrace();
throw new JianshuiParamErrorException(ErrorCode.DECRYPT_ERROR, companyservice, "invoice");

@ -1,6 +1,7 @@
package com.jianshui.invoice.service.impl.api;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.bean.BeanUtil;
@ -22,6 +23,8 @@ import com.jianshui.invoice.domain.*;
import com.jianshui.invoice.domain.dto.*;
import com.jianshui.invoice.domain.dto.api.*;
import com.jianshui.invoice.domain.dto.api.aisino.console.*;
import com.jianshui.invoice.domain.dto.api.aisino.console.vehicle.TaxEquipmentInfo;
import com.jianshui.invoice.domain.dto.api.aisino.console.vehicle.VehicleInvoiceExpBo;
import com.jianshui.invoice.domain.ele.EleNewMessage;
import com.jianshui.invoice.domain.vo.api.aisino.console.AisinoConsoleInvoiceAddVO;
import com.jianshui.invoice.mapper.BillInfoMapper;
@ -77,12 +80,12 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
public HXResponse addInvoice(BillInfo billInfo, Companyservice companyservice) throws IllegalAccessException, InstantiationException {
// 订单号唯一校验 start
String outNO = billInfo.getOutTradeOrderno() != null ? billInfo.getOutTradeOrderno():"";
if(StrUtil.isEmpty(outNO)){
String outNO = billInfo.getOutTradeOrderno() != null ? billInfo.getOutTradeOrderno() : "";
if (StrUtil.isEmpty(outNO)) {
return new HXResponse("订单号为空,请检查报文!");
}
BillInfo billInfoValidate = billInfoMapper.selectByOutTradeOrderno(companyservice.getCompanyid(),outNO);
if(BeanUtil.isNotEmpty(billInfoValidate)){
BillInfo billInfoValidate = billInfoMapper.selectByOutTradeOrderno(companyservice.getCompanyid(), outNO);
if (BeanUtil.isNotEmpty(billInfoValidate)) {
return new HXResponse("订单号不允许重复!!!");
}
// end
@ -116,13 +119,13 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
aisinoConsoleInvoiceAddDTO.setInvoiceType(invoceTypeTemp);
//购方地址电话
String buyerAddress = billInfo.getBuyerAddress() != null ? billInfo.getBuyerAddress(): "";
String buyerTelPhone = billInfo.getBuyerTelephone() !=null ? billInfo.getBuyerTelephone(): "";
String buyerAddress = billInfo.getBuyerAddress() != null ? billInfo.getBuyerAddress() : "";
String buyerTelPhone = billInfo.getBuyerTelephone() != null ? billInfo.getBuyerTelephone() : "";
aisinoConsoleInvoiceAddDTO.setCustomerAddressTel(buyerAddress + buyerTelPhone);
//购方银行账户
String buyerBank = billInfo.getBuyerBank() != null ? billInfo.getBuyerBank():"";
String buyerAccount = billInfo.getBuyerAccount() !=null ? billInfo.getBuyerAccount():"";
String buyerBank = billInfo.getBuyerBank() != null ? billInfo.getBuyerBank() : "";
String buyerAccount = billInfo.getBuyerAccount() != null ? billInfo.getBuyerAccount() : "";
aisinoConsoleInvoiceAddDTO.setCustomerBankAccountNr(buyerBank + buyerAccount);
//销方银行账户
@ -181,14 +184,14 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
}
//处理备注
String kpType = billInfo.getKptype() == null ? "":billInfo.getKptype() ;
String redInvoiceCode = billInfo.getRedInvoiceInfoCode() == null ? "":billInfo.getRedInvoiceInfoCode();
if("2".equals(kpType) && invoceTypeTemp == 0){
String kpType = billInfo.getKptype() == null ? "" : billInfo.getKptype();
String redInvoiceCode = billInfo.getRedInvoiceInfoCode() == null ? "" : billInfo.getRedInvoiceInfoCode();
if ("2".equals(kpType) && invoceTypeTemp == 0) {
//专票:红字信息表编号 开具红字发票:备注中注明“开具红字增值税专用发票信息表编号 XXXXXXXXXXXXXXXX”
aisinoConsoleInvoiceAddDTO.setMemo("开具红字增值税专用发票信息表编号"+redInvoiceCode);
}else if("2".equals(kpType) && invoceTypeTemp == 2){
aisinoConsoleInvoiceAddDTO.setMemo("开具红字增值税专用发票信息表编号" + redInvoiceCode);
} else if ("2".equals(kpType) && invoceTypeTemp == 2) {
//普票:开具负数发票(普通发票负数发票):备注中注明“对应正数发票代码 XXXXXXXXXX 号 码 YYYYYYYY”字样,其中“X”为发票左上角 10 或是 12 位代码数字,“Y”为发票右上角 8位号码数字
aisinoConsoleInvoiceAddDTO.setMemo("对应正数发票代码"+billInfo.getOriginFpdm()+"号码"+billInfo.getOriginFphm());
aisinoConsoleInvoiceAddDTO.setMemo("对应正数发票代码" + billInfo.getOriginFpdm() + "号码" + billInfo.getOriginFphm());
}
//明细处理前条件校验
@ -196,7 +199,7 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
//发票明细处理
List<AisinoConsoleInvoiceAddDetailDTO> invoiceItems = new ArrayList<>();
List<Map<String,Object>> listMap = new ArrayList<>();
List<Map<String, Object>> listMap = new ArrayList<>();
for (BillDetail billDetail : billDetailList) {
AisinoConsoleInvoiceAddDetailDTO addDetailDTO = BeanUtil.copyProperties(billDetail, AisinoConsoleInvoiceAddDetailDTO.class);
@ -225,10 +228,10 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
Integer yhzcbs = billDetail.getYhzcbs();
if (yhzcbs == null) {
return new HXResponse("优惠政策标识不存在!");
}else if(yhzcbs == 1){
} else if (yhzcbs == 1) {
//享受优惠政策内容
String zzstsgl = billDetail.getZzstsgl();
if(StrUtil.isEmpty(zzstsgl)){
if (StrUtil.isEmpty(zzstsgl)) {
return new HXResponse("优惠政策内容未填写!");
}
addDetailDTO.setTaxPreCon(billDetail.getZzstsgl());
@ -239,7 +242,7 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
ValidateUtils.validate(addDetailDTO, companyservice, null);
invoiceItems.add(addDetailDTO);
Map<String,Object> mapDetail = BeanToMapUtils.fastJsonBean2Map(addDetailDTO);
Map<String, Object> mapDetail = BeanToMapUtils.fastJsonBean2Map(addDetailDTO);
listMap.add(mapDetail);
}
aisinoConsoleInvoiceAddDTO.setInvoiceItems(invoiceItems);
@ -248,8 +251,8 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
AjaxResult ajaxResult = null;
try {
//hutool的beancopy别名会与JSONUTIl冲突
Map<String,Object> map = BeanToMapUtils.fastJsonBean2Map(aisinoConsoleInvoiceAddDTO);
map.put("invoiceItems",listMap);
Map<String, Object> map = BeanToMapUtils.fastJsonBean2Map(aisinoConsoleInvoiceAddDTO);
map.put("invoiceItems", listMap);
ajaxResult = AisinoConsoleUtil.sendRequest(AisinoConsoleConstants.INVOICE_ADD, JSONUtil.parse(map), companyservice);
} catch (Exception e) {
log.error("【销项发票】【总部控制台接口】【发票开具】发票请求异常,请求报文{},销方信息{}", JSONUtil.parse(aisinoConsoleInvoiceAddDTO).toString(), JSONObject.toJSONString(companyservice));
@ -268,11 +271,11 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
String retmsg = resultJSON.get("retmsg") != null ? resultJSON.get("retmsg").toString() : "";
if ("4011".equals(retcode)) {
//回写发票代码、发票号码信息
if(StrUtil.isEmpty(retmsg)){
if (StrUtil.isEmpty(retmsg)) {
return new HXResponse(retcode);
}
AisinoConsoleInvoiceAddVO aisinoConsoleInvoiceAddVO = BeanUtil.copyProperties(resultJSON, AisinoConsoleInvoiceAddVO.class);
if(StrUtil.isEmpty(aisinoConsoleInvoiceAddVO.getInfoNumber())){
if (StrUtil.isEmpty(aisinoConsoleInvoiceAddVO.getInfoNumber())) {
throw new JianshuiServiceException("开具的发票号码不存在!");
}
//更新发票状态
@ -280,8 +283,8 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
billInfoMapper.updateBillInfo(billInfo);
//插入invoice
Invoice invoice = BeanUtil.copyProperties(billInfo,Invoice.class);
List<InvoiceDetail> invoiceDetailList = BeanUtil.copyToList(billInfo.getBillDetailList(),InvoiceDetail.class);
Invoice invoice = BeanUtil.copyProperties(billInfo, Invoice.class);
List<InvoiceDetail> invoiceDetailList = BeanUtil.copyToList(billInfo.getBillDetailList(), InvoiceDetail.class);
invoice.setInvoiceDetailList(invoiceDetailList);
//发票代码
@ -302,15 +305,15 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
long id = 0L;
QueryWrapper<Invoice> invoiceQueryWrapper = new QueryWrapper<>();
invoiceQueryWrapper.eq("fpdm",invoice.getFpdm()).eq("fphm",invoice.getFphm());
invoiceQueryWrapper.eq("fpdm", invoice.getFpdm()).eq("fphm", invoice.getFphm());
List<Invoice> invoices = invoiceMapper.selectList(invoiceQueryWrapper);
if(CollectionUtils.isEmpty(invoices)){
if (CollectionUtils.isEmpty(invoices)) {
invoiceMapper.insertInvoice(invoice);
invoices = invoiceMapper.selectList(invoiceQueryWrapper);
id = invoices.get(0).getId();
}else{
} else {
Invoice invoiceT = invoices.get(0);
invoiceT = BeanUtil.copyProperties(invoice,Invoice.class);
invoiceT = BeanUtil.copyProperties(invoice, Invoice.class);
invoiceMapper.updateInvoice(invoiceT);
id = invoiceT.getId();
}
@ -321,9 +324,9 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
// TODO: 2023/9/26 增加主动回调方式,可配置
ICompanyservicePropService companyserviceProp = SpringUtils.getBean(ICompanyservicePropService.class);
CompanyserviceProp secretIdProp = companyserviceProp.selectPropByKey(companyservice.getCompanyid(), "aisino_callback_url");
if(BeanUtil.isNotEmpty(secretIdProp) && secretIdProp.getValue() != null && !"".equals(secretIdProp.getValue())){
if (BeanUtil.isNotEmpty(secretIdProp) && secretIdProp.getValue() != null && !"".equals(secretIdProp.getValue())) {
String callBackUrl = secretIdProp.getValue();
callBackAisino(callBackUrl,invoice.getId());
callBackAisino(callBackUrl, invoice.getId());
}
HXResponse response = new HXResponse("0000", "同步成功");
@ -337,28 +340,29 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
/**
* 开票接口回调-重汽
* 2023-09-26
*
* @param callBackUrl
* @param id
*/
private void callBackAisino(String callBackUrl, Long id) {
if(id == null){
if (id == null) {
log.info("【控制台】发票回调,id为空");
return ;
return;
}
Invoice invoice = invoiceMapper.selectInvoiceById(id);
if (invoice == null) {
log.info("【控制台】发票信息未查询到,id={}",id);
return ;
log.info("【控制台】发票信息未查询到,id={}", id);
return;
}
try {
log.info("【控制台】发票回调接口,发送数据开始,id={}",id);
String result = HttpUtil.post(callBackUrl,JSONUtil.toJsonStr(invoice));
log.info("【控制台】发票回调接口,发送数据结束,id={},接口返回信息={}",id,JSONUtil.toJsonStr(invoice));
log.info("【控制台】发票回调接口,发送数据开始,id={}", id);
String result = HttpUtil.post(callBackUrl, JSONUtil.toJsonStr(invoice));
log.info("【控制台】发票回调接口,发送数据结束,id={},接口返回信息={}", id, JSONUtil.toJsonStr(invoice));
} catch (Exception e) {
log.info("【控制台】发票回调接口,发送数据异常,id={}",id);
log.info("【控制台】发票回调接口,发送数据异常,id={}", id);
throw new RuntimeException(e);
}
@ -367,11 +371,12 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
/**
* 发票打印
* @author dxk
* @date 2022/6/29 13:48
*
* @param invoice
* @param companyservice
* @return com.jianshui.common.core.domain.AjaxResult
* @author dxk
* @date 2022/6/29 13:48
*/
@Override
public AjaxResult printInvoice(Invoice invoice, Companyservice companyservice) {
@ -381,11 +386,12 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
/**
* 发票作废
* @author dxk
* @date 2022/6/30 9:43
*
* @param invoice
* @param companyservice
* @return com.jianshui.invoice.domain.dto.HXResponse
* @author dxk
* @date 2022/6/30 9:43
*/
@Override
public HXResponse deprecateInvoice(JSONObject invoice, Companyservice companyservice) {
@ -411,7 +417,7 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
throw new JianshuiParamErrorException(ErrorCode.INVOICE_NOT_EXISTS, companyservice, "invoice");
}
AisinoConsoleInvolidDTO consoleInvolidDTO = BeanUtil.copyProperties(invoiceTemp,AisinoConsoleInvolidDTO.class);
AisinoConsoleInvolidDTO consoleInvolidDTO = BeanUtil.copyProperties(invoiceTemp, AisinoConsoleInvolidDTO.class);
//发票类型
Integer invoceTypeTemp = CovertInvoiceType(invoiceTemp.getInvoiceType());
@ -420,14 +426,14 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
}
consoleInvolidDTO.setInfoKind(invoceTypeTemp);
ValidateUtils.validate(consoleInvolidDTO,companyservice,null);
ValidateUtils.validate(consoleInvolidDTO, companyservice, null);
//发起请求
AjaxResult ajaxResult = null;
try{
Map<String,Object> map = BeanToMapUtils.fastJsonBean2Map(consoleInvolidDTO);
try {
Map<String, Object> map = BeanToMapUtils.fastJsonBean2Map(consoleInvolidDTO);
ajaxResult = AisinoConsoleUtil.sendRequest(AisinoConsoleConstants.INVOICE_INVOLID, JSONUtil.parse(map), companyservice);
}catch (Exception e){
} catch (Exception e) {
log.error("【销项发票】【总部控制台接口】【发票作废】发票请求异常,请求报文{},销方信息{}", JSONUtil.parse(consoleInvolidDTO).toString(), JSONObject.toJSONString(companyservice));
e.printStackTrace();
throw new JianshuiServiceException("系统异常!");
@ -441,7 +447,7 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
cn.hutool.json.JSONObject resultJSON = JSONUtil.parseObj(ajaxResult.get("data"));
String retcode = resultJSON.get("retcode") != null ? resultJSON.get("retcode").toString() : "";
String retmsg = resultJSON.get("retmsg") != null ? resultJSON.get("retmsg").toString() : "";
if("6011".equals(retcode)){
if ("6011".equals(retcode)) {
// 修改原有发票状态为已作废
invoiceTemp.setState(3);
invoiceMapper.updateInvoice(invoiceTemp);
@ -455,7 +461,7 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
billInfoMapper.updateBillInfo(originBillInfo);
}
return new HXResponse("0000", "作废完成", null, false);
}else{
} else {
return new HXResponse(retmsg);
}
@ -469,6 +475,7 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
/**
* 单个发票查询
*
* @param billInfo
* @param companyservice
* @return
@ -502,7 +509,7 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
}
HXResponse response = new HXResponse("9998", "发票信息不存在", tempInvoice);
return response;
}else{
} else {
}
@ -512,6 +519,7 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
/**
* 发票批量查询
*
* @param billInfo
* @param byWhat
* @param companyservice
@ -593,7 +601,6 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
}
@Override
public HXResponse getRpaAuthStatus(JSONObject decryptResult, Companyservice companyservice) {
return null;
@ -604,7 +611,9 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
return null;
}
/** 红字信息表上传*/
/**
* 红字信息表上传
*/
@Override
public HXResponse uploadRedInfo(Redinfo redinfo, Companyservice companyservice) {
@ -650,7 +659,7 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
// TODO: 2023/3/9 设备号是 jspbh 并非billNO? 申请方税号reqnsrsbh
//
redinfo.setJspbh("661024643068230218103524".substring(0,12));
redinfo.setJspbh("661024643068230218103524".substring(0, 12));
redinfo.setReqnsrsbh("9113093067851155XY");
redinfo.setFjh("123");
redinfo.setMultTaxRate("0");
@ -662,7 +671,7 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
redinfoMapper.batchRedinfodetail(redinfodetailList);
// 参数校验及参数处理
AisinoConsoleInvoiceRedUploadDTO redUploadDTO = BeanUtil.copyProperties(redinfo,AisinoConsoleInvoiceRedUploadDTO.class);
AisinoConsoleInvoiceRedUploadDTO redUploadDTO = BeanUtil.copyProperties(redinfo, AisinoConsoleInvoiceRedUploadDTO.class);
// 填开日期
redUploadDTO.setDate(redinfo.getBillInputTime());
// 信息表类型
@ -677,18 +686,17 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
ValidateUtils.validate(redUploadDTO);
if(redinfo.getRedinfodetailList() == null || redinfo.getRedinfodetailList().size() == 0){
if (redinfo.getRedinfodetailList() == null || redinfo.getRedinfodetailList().size() == 0) {
return new HXResponse("格式校验失败,请上传明细信息!");
}
String paramChild = "";
List<AisinoConsoleInvoiceRedUploadChildDTO> redUploadChildDTO = BeanUtil.copyToList(redinfo.getRedinfodetailList(),AisinoConsoleInvoiceRedUploadChildDTO.class);
List<AisinoConsoleInvoiceRedUploadChildDTO> redUploadChildDTO = BeanUtil.copyToList(redinfo.getRedinfodetailList(), AisinoConsoleInvoiceRedUploadChildDTO.class);
for (AisinoConsoleInvoiceRedUploadChildDTO childDTO : redUploadChildDTO) {
// TODO-dxk: 2023/2/27 含税、不含税金额
childDTO.setHS_BZ(childDTO.getHS_BZ().equals("false")? "N":"Y");
childDTO.setHS_BZ(childDTO.getHS_BZ().equals("false") ? "N" : "Y");
paramChild = "<GoodsMx>" + JSONUtil.toXmlStr(JSONUtil.parse(childDTO)) + " </GoodsMx>";
@ -716,10 +724,10 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
//发起请求
AjaxResult ajaxResult = null;
try{
try {
ajaxResult = AisinoConsoleUtil.sendRequest(AisinoConsoleConstants.RED_UPLOAD, param, companyservice);
}catch (Exception e){
log.error("【销项发票】【总部控制台接口】【发票作废】发票请求异常,请求报文{},销方信息{}","", JSONObject.toJSONString(companyservice));
} catch (Exception e) {
log.error("【销项发票】【总部控制台接口】【发票作废】发票请求异常,请求报文{},销方信息{}", "", JSONObject.toJSONString(companyservice));
e.printStackTrace();
throw new JianshuiServiceException("系统异常!");
}
@ -755,7 +763,9 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
return null;
}
/** 红字信息表下载 */
/**
* 红字信息表下载
*/
@Override
public HXResponse downloadRedInfo(DownloadRedInfoDTO downloadRedInfoDTO, Companyservice companyservice) {
@ -794,7 +804,7 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
}
// 组装报文
AisinoConsoleInvoiceRedDownloadDTO downloadDTO = BeanUtil.copyProperties(redInfoResult,AisinoConsoleInvoiceRedDownloadDTO.class);
AisinoConsoleInvoiceRedDownloadDTO downloadDTO = BeanUtil.copyProperties(redInfoResult, AisinoConsoleInvoiceRedDownloadDTO.class);
downloadDTO.setYQZT("N");
downloadDTO.setXXBFW("0");
downloadDTO.setPAGENO("1");
@ -808,10 +818,10 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
//发起请求
AjaxResult ajaxResult = null;
try{
try {
ajaxResult = AisinoConsoleUtil.sendRequest(AisinoConsoleConstants.RED_DOWLOAD, param, companyservice);
}catch (Exception e){
log.error("【销项发票】【总部控制台接口】【发票作废】发票请求异常,请求报文{},销方信息{}","", JSONObject.toJSONString(companyservice));
} catch (Exception e) {
log.error("【销项发票】【总部控制台接口】【发票作废】发票请求异常,请求报文{},销方信息{}", "", JSONObject.toJSONString(companyservice));
e.printStackTrace();
throw new JianshuiServiceException("系统异常!");
}
@ -863,6 +873,7 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
/**
* 打印机查询
*
* @param queryPrinterDTO
* @param companyservice
* @return
@ -872,11 +883,11 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
List<SkDyj> skDyjList = new ArrayList<>();
try {
QueryWrapper<SkDyj> skDyjQueryWrapper = new QueryWrapper<>();
if(StrUtil.isNotEmpty(companyservice.getSellertax())){
skDyjQueryWrapper.eq("NSRSBH",companyservice.getSellertax());
if (StrUtil.isNotEmpty(companyservice.getSellertax())) {
skDyjQueryWrapper.eq("NSRSBH", companyservice.getSellertax());
}
if(StrUtil.isNotEmpty(queryPrinterDTO.getPrinterName())){
skDyjQueryWrapper.eq("MC",queryPrinterDTO.getPrinterName());
if (StrUtil.isNotEmpty(queryPrinterDTO.getPrinterName())) {
skDyjQueryWrapper.eq("MC", queryPrinterDTO.getPrinterName());
}
skDyjList = skDyjMapper.selectList(skDyjQueryWrapper);
} catch (Exception e) {
@ -885,7 +896,7 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
throw new JianshuiServiceException("系统异常!");
}
log.info("【销项发票】【大象发票】打印机查询请求结果{}", skDyjList.toString());
List<SkDyjVO> skDyjVO = BeanUtil.copyToList(skDyjList,SkDyjVO.class);
List<SkDyjVO> skDyjVO = BeanUtil.copyToList(skDyjList, SkDyjVO.class);
return new HXResponse("0000", "操作完成", skDyjList);
}
@ -896,6 +907,7 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
/**
* 发票打印
*
* @param printDTO
* @param companyservice
* @return
@ -903,43 +915,43 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
@Override
public HXResponse batchPrint(PrintDTO printDTO, Companyservice companyservice) {
if(BeanUtil.isEmpty(printDTO) ||CollectionUtils.isEmpty(printDTO.getDetails())){
if (BeanUtil.isEmpty(printDTO) || CollectionUtils.isEmpty(printDTO.getDetails())) {
throw new JianshuiParamErrorException(ErrorCode.EMPTY_PARAMS, companyservice, "invoice");
}
if(StrUtil.isEmpty(printDTO.getFpbs())){
throw new JianshuiParamErrorException(ErrorCode.EMPTY_PARAMS,companyservice,"发票标识不存在!");
if (StrUtil.isEmpty(printDTO.getFpbs())) {
throw new JianshuiParamErrorException(ErrorCode.EMPTY_PARAMS, companyservice, "发票标识不存在!");
}
List<PrintDetailDTO> details = printDTO.getDetails();
//返回信息处理
for (PrintDetailDTO detail : details) {
Map<String,String> result = new HashMap<>();
Map<String, String> result = new HashMap<>();
//报文组装
AisinoConsolePrintInvoiceDTO printInvoiceDTO = BeanUtil.copyProperties(detail,AisinoConsolePrintInvoiceDTO.class);
AisinoConsolePrintInvoiceDTO printInvoiceDTO = BeanUtil.copyProperties(detail, AisinoConsolePrintInvoiceDTO.class);
if(!detail.getFpqh().equals(detail.getFpzh())){
result.put("9999","发票打印失败,发票号码="+printInvoiceDTO.getInfoNumber()+",发票代码="+printInvoiceDTO.getInfoTypeCode()+",原因=发票号码传参错误");
if (!detail.getFpqh().equals(detail.getFpzh())) {
result.put("9999", "发票打印失败,发票号码=" + printInvoiceDTO.getInfoNumber() + ",发票代码=" + printInvoiceDTO.getInfoTypeCode() + ",原因=发票号码传参错误");
continue;
}
//发票类型
Integer invoceTypeTemp = CovertInvoiceType(detail.getInvoiceType());
if (invoceTypeTemp == -1) {
result.put("9999","发票打印失败,发票号码="+printInvoiceDTO.getInfoNumber()+",发票代码="+printInvoiceDTO.getInfoTypeCode()+",原因=发票类型未匹配");
result.put("9999", "发票打印失败,发票号码=" + printInvoiceDTO.getInfoNumber() + ",发票代码=" + printInvoiceDTO.getInfoTypeCode() + ",原因=发票类型未匹配");
continue;
}
printInvoiceDTO.setInfoKind(invoceTypeTemp);
//必填参数校验
ValidateUtils.validate(printInvoiceDTO,companyservice,null);
ValidateUtils.validate(printInvoiceDTO, companyservice, null);
// 处理打印标识
String fpbs = printDTO.getFpbs();
if("0".equals(fpbs)){
fpbs = "1";
}else if("1".equals(fpbs)){
if ("0".equals(fpbs)) {
fpbs = "1";
} else if ("1".equals(fpbs)) {
fpbs = "0";
}else {
} else {
fpbs = "0";
}
@ -949,25 +961,26 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
//发起请求
AjaxResult ajaxResult = null;
try {
Map<String,Object> map = BeanToMapUtils.fastJsonBean2Map(printInvoiceDTO);
Map<String, Object> map = BeanToMapUtils.fastJsonBean2Map(printInvoiceDTO);
ajaxResult = AisinoConsoleUtil.sendRequest(AisinoConsoleConstants.INVOICE_PRINT, JSONUtil.parse(map), companyservice);
} catch (Exception e) {
log.error("【销项发票】【总部控制台接口】【发票打印】发票请求异常,请求报文{},销方信息{}", JSONUtil.parse(printInvoiceDTO).toString(), JSONObject.toJSONString(companyservice));
result.put("9999","发票打印失败,发票号码="+printInvoiceDTO.getInfoNumber()+",发票代码="+printInvoiceDTO.getInfoTypeCode()+",原因=系统原因");
result.put("9999", "发票打印失败,发票号码=" + printInvoiceDTO.getInfoNumber() + ",发票代码=" + printInvoiceDTO.getInfoTypeCode() + ",原因=系统原因");
}
//返回报文解析
if (ajaxResult.isError()) {
result.put("9999","发票打印失败,发票号码="+printInvoiceDTO.getInfoNumber()+",发票代码="+printInvoiceDTO.getInfoTypeCode()+",原因="+ajaxResult.getMsg());;
result.put("9999", "发票打印失败,发票号码=" + printInvoiceDTO.getInfoNumber() + ",发票代码=" + printInvoiceDTO.getInfoTypeCode() + ",原因=" + ajaxResult.getMsg());
;
}
cn.hutool.json.JSONObject resultJSON = JSONUtil.parseObj(ajaxResult.get("data"));
String retcode = resultJSON.get("retcode") != null ? resultJSON.get("retcode").toString() : "";
String retmsg = resultJSON.get("retmsg") != null ? resultJSON.get("retmsg").toString() : "";
if("5011".equals(retcode)){
return new HXResponse("0000","发票打印成功,发票号码="+printInvoiceDTO.getInfoNumber()+",发票代码="+printInvoiceDTO.getInfoTypeCode());
}else{
return new HXResponse("发票打印失败,发票号码="+printInvoiceDTO.getInfoNumber()+",发票代码="+printInvoiceDTO.getInfoTypeCode()+",原因="+retmsg);
if ("5011".equals(retcode)) {
return new HXResponse("0000", "发票打印成功,发票号码=" + printInvoiceDTO.getInfoNumber() + ",发票代码=" + printInvoiceDTO.getInfoTypeCode());
} else {
return new HXResponse("发票打印失败,发票号码=" + printInvoiceDTO.getInfoNumber() + ",发票代码=" + printInvoiceDTO.getInfoTypeCode() + ",原因=" + retmsg);
}
}
@ -1034,16 +1047,17 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
/**
* 总部控制台转简税发票类型
* @author dxk
* @date 2022/6/29 17:12
*
* @param invoiceType
* @return java.lang.String
* @author dxk
* @date 2022/6/29 17:12
*/
public static String CovertInvoiceTypeReverse(String invoiceType){
public static String CovertInvoiceTypeReverse(String invoiceType) {
if(invoiceType.equals("2")){
if (invoiceType.equals("2")) {
return "p";
}else if(invoiceType.equals("0")){
} else if (invoiceType.equals("0")) {
return "s";
}
return "";
@ -1120,4 +1134,143 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService {
return null;
}
/**
* 机动车加密接口走的大象重汽用控制台
*/
@Override
public HXResponse exportVehicleInvoice(JSONObject decryptResult, Companyservice companyservice) {
// 转换实体参数
VehicleInvoiceExpBo vehicleInvoiceExpBo = BeanUtil.copyProperties(decryptResult, VehicleInvoiceExpBo.class);
// TODO: 2023/10/8 迁移大象 迁移税控 找测试数据
if (Objects.isNull(vehicleInvoiceExpBo)) {
log.info("请求参数为空");
}
if (org.apache.commons.lang3.StringUtils.isBlank(vehicleInvoiceExpBo.getNsrsbh())) {
log.info("纳税人识别号为空");
}
if (org.apache.commons.lang3.StringUtils.isBlank(vehicleInvoiceExpBo.getFjh())) {
log.info("分机号为空");
}
if (org.apache.commons.lang3.StringUtils.isBlank(vehicleInvoiceExpBo.getQqsj())) {
log.info("起始时间为空");
}
if (org.apache.commons.lang3.StringUtils.isBlank(vehicleInvoiceExpBo.getZzsj())) {
log.info("终止时间为空");
}
String data = exportVehicleInvoice(vehicleInvoiceExpBo);
if (org.apache.commons.lang3.StringUtils.isBlank(data)) {
log.error("{}机动车加密数据导出,加密数据为空", "");
data = "";
}
String fileName = "机动车专用发票明细" + "_" + vehicleInvoiceExpBo.getFjh()
+ (vehicleInvoiceExpBo.getQqsj() + "-" + vehicleInvoiceExpBo.getZzsj()) + ".dat";
// TODO: 2023/10/8 输出到页面
// 浏览器处理乱码问题
/*String userAgent = request.getHeader(HttpHeaders.USER_AGENT);
try {
//IE浏览器
if (org.apache.commons.lang3.StringUtils.contains(userAgent, ConfigureConstant.REQUEST_HEAD_USER_AGENT_TYPE_MSIE)
|| org.apache.commons.lang3.StringUtils.contains(userAgent, ConfigureConstant.REQUEST_HEAD_USER_AGENT_TYPE_TRIDENT)) {
fileName = URLEncoder.encode(fileName, "UTF8");
log.debug("{}IE浏览器下载", LOGGER_MSG);
} else if (org.apache.commons.lang3.StringUtils.contains(userAgent, ConfigureConstant.REQUEST_HEAD_USER_AGENT_TYPE_MOZILLA)) {
//google,火狐浏览器
fileName = new String(fileName.getBytes(StandardCharsets.UTF_8), "ISO8859-1");
} else {
//其他浏览器
fileName = URLEncoder.encode(fileName, "UTF8");
}
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
response.setHeader("fileName", fileName);
response.getOutputStream().write(Base64Encoding.decode(data));
} catch (IOException e) {
log.error("{}机动车导出加密数据异常:{}", LOGGER_MSG, e);
}*/
return null;
}
/**
* 1.调用税控获取信息
*
* @param vehicleInvoiceExpBo
* @return
*/
public String exportVehicleInvoice(VehicleInvoiceExpBo vehicleInvoiceExpBo) {
//1.调用税控获取终端代码
String terminalCode = getTerminalCode(vehicleInvoiceExpBo.getNsrsbh(), vehicleInvoiceExpBo.getEntId());
/* String requestUrl = invoiceConfig.configVehicleInvoiceExp();
VehicleInvoiceExpResponse response = HttpInvoiceRequestUtil.vehicleInvoiceExp(requestUrl, vehicleInvoiceExpBo, terminalCode);
log.info("机动车导出加密数据 税控底层返回结果:" + JSONUtil.toJsonStr(response));
if (Objects.isNull(response)) {
log.error("机动车加密数据导出税控返回结果为空!");
} else {
if (!response.getCode().equals(ConfigureConstant.STRING_0000)) {
log.error("机动车加密数据导出错误:" + response.getMsg());
}
}
return response.getVEHICLEINVOICEBUFF();*/
return null;
}
/**
* 调用税控获取终端代码
*
* @param nsrsbh
* @param entId
* @return
*/
public String getTerminalCode(String nsrsbh, String entId) {
TaxEquipmentInfo taxEquipmentInfo = queryTaxEquipment(nsrsbh, entId);
if (ObjectUtil.isNotNull(taxEquipmentInfo)) {
return taxEquipmentInfo.getSksbCode();
} else {
return "";
}
}
/**
* 调用基础服务获取税控设备
* @param nsrsbh
* @param entId
* @return
*/
public TaxEquipmentInfo queryTaxEquipment(String nsrsbh, String entId) {
TaxEquipmentInfo taxEquipmentInfo = null;
/*try {
//调用基础服务获取税控设备,基础服务封装了真实的entId
String configQueryTaxEquipmentUrl = baseServiceConfig.configQueryTaxEquipmentUrl();
PageQueryTaxEquipmentReq pageQueryTaxEquipmentReq = new PageQueryTaxEquipmentReq();
pageQueryTaxEquipmentReq.setNsrsbh(nsrsbh);
if (org.apache.commons.lang3.StringUtils.isNotBlank(entId)) {
pageQueryTaxEquipmentReq.setEntId(entId);
}
PageQueryTaxEquipmentRsp pageQueryTaxEquipmentRsp = HttpInvoiceRequestUtilBase.queryTaxEquipment(configQueryTaxEquipmentUrl, pageQueryTaxEquipmentReq);
if (ObjectUtil.isNotNull(pageQueryTaxEquipmentRsp) && ConfigureConstant.STRING_0000.equals(pageQueryTaxEquipmentRsp.getZTDM())) {
if (ObjectUtil.isNotNull(pageQueryTaxEquipmentRsp.getTaxEquipmentInfo())) {
taxEquipmentInfo = pageQueryTaxEquipmentRsp.getTaxEquipmentInfo();
}
}
} catch (Exception e) {
log.error("{}调用基础服务获取税控设备接口异常:{}", LOGGER_MSG, e);
}*/
return taxEquipmentInfo;
}
}

@ -854,6 +854,12 @@ public class ElephantInvoiceApiServiceImpl implements IInvoiceApiService {
}
@Override
public HXResponse exportVehicleInvoice(JSONObject decryptResult, Companyservice companyservice) {
return null;
}
/**
* 申请/上传 红字发票
*

@ -212,7 +212,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService {
queryBody.put("SFFHSBSJ", "0");
// queryResult = ElephantUtils.sendRequest(ElephantConstantsV6.ADD_INVOICE_RESULT, JSONUtil.parse(queryBody));
try {
queryResult = ElephantUtils.sendRequestWithoutToken(ElephantConstantsV6.ADD_INVOICE_RESULT_LOCALHOST, ElephantConstantsV6.ADD_INVOICE_RESULT_METHOD, JSONUtil.parse(queryBody), companyservice);
queryResult = ElephantUtils.sendRequestWithoutTokenV6New(ElephantConstantsV6.ADD_INVOICE_RESULT_LOCALHOST, ElephantConstantsV6.ADD_INVOICE_RESULT_METHOD, JSONUtil.parse(queryBody), companyservice);
} catch (UnsupportedEncodingException | InvalidKeyException | NoSuchAlgorithmException e) {
log.error("【销项发票】【大象接口】【发票开具】发票请求异常,请求报文{},销方信息{}", JSONUtil.parse(elephantInvoiceAddDTO).toString(), JSONObject.toJSONString(companyservice));
e.printStackTrace();
@ -786,6 +786,11 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService {
return parseResult(dxhyInterfaceResponse);
}
@Override
public HXResponse exportVehicleInvoice(JSONObject decryptResult, Companyservice companyservice) {
return null;
}
/**
* 红字确认单列表查询数电专用
*/

@ -1617,6 +1617,11 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService {
return null;
}
@Override
public HXResponse exportVehicleInvoice(JSONObject decryptResult, Companyservice companyservice) {
return null;
}
/**
* 简税和金财数科 发票类型互换
*
@ -1716,15 +1721,6 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService {
}

@ -290,9 +290,9 @@ public class ElephantUtils {
header.put("Content-Type", "application/json");
String info = HttpUtils.sendJsonPost(url, jsonObject, header);
JSONObject obj = JSONObject.parseObject(info);
redisCache.setCacheObject(ElephantConstants.TOKEN_REDIS_KEY + "appkey:" + appkey, obj,(int) obj.get("expires_in") - 60, TimeUnit.SECONDS);
redisCache.setCacheObject(ElephantConstants.TOKEN_REDIS_KEY + "appkey:" + appkey, obj, (int) obj.get("expires_in") - 60, TimeUnit.SECONDS);
return (String) obj.get("access_token");
}
public static String getToken() {
@ -327,7 +327,7 @@ public class ElephantUtils {
header.put("Content-Type", "application/json");
String info = HttpUtils.sendJsonPost(url, jsonObject, header);
JSONObject obj = JSONObject.parseObject(info);
redisCache.setCacheObject(ElephantConstants.TOKEN_REDIS_KEY, obj,(int) obj.get("expires_in") - 60, TimeUnit.SECONDS);
redisCache.setCacheObject(ElephantConstants.TOKEN_REDIS_KEY, obj, (int) obj.get("expires_in") - 60, TimeUnit.SECONDS);
return (String) obj.get("access_token");
}
@ -369,7 +369,6 @@ public class ElephantUtils {
String url = host + uri;
// 封装大象v6调用类
DxhyInterfaceRequest dxhyInterfaceRequest = new DxhyInterfaceRequest();
// 地址
@ -402,9 +401,9 @@ public class ElephantUtils {
try {
// 大象v6调用方法(获取结果处理)
log.info("【销项】【大象工具类】调用V6接口,入参{}",JSONUtil.toJsonStr(dxhyInterfaceRequest));
log.info("【销项】【大象工具类】调用V6接口,入参{}", JSONUtil.toJsonStr(dxhyInterfaceRequest));
dxhyInterfaceResponse = InvokeDxhyApi.dxhyInterfaceInvoke(dxhyInterfaceRequest);
log.info("【销项】【大象工具类】请求成功,结果{}",JSONUtil.toJsonStr(dxhyInterfaceResponse));
log.info("【销项】【大象工具类】请求成功,结果{}", JSONUtil.toJsonStr(dxhyInterfaceResponse));
} catch (Exception e) {
@ -415,8 +414,6 @@ public class ElephantUtils {
}
/**
* 大象请求 大象部署版 1.2.4 无token
*
@ -468,7 +465,6 @@ public class ElephantUtils {
System.out.println(result11);
int randomInt = RandomUtil.randomInt(10, 100);
requestBody.put("Nonce", Integer.toString(randomInt));
requestBody.put("SecretId", secretId);
@ -597,7 +593,12 @@ public class ElephantUtils {
case "u":
// return "006";
throw new JianshuiParamErrorException("暂不支持的开票类型,请联系管理员!", null, "invoice");
case "r":
//普票
case "82":
return "002";
case "81":
return "001";
case "":
default:
throw new JianshuiParamErrorException("暂不支持的开票类型,请联系管理员!", null, "invoice");
}
@ -617,6 +618,10 @@ public class ElephantUtils {
return "j";
case "006":
return "u";
case "002":
return "82";
case "001":
return "81";
default:
throw new JianshuiParamErrorException("暂不支持的开票类型,请联系管理员!", null, "invoice");
}
@ -625,11 +630,10 @@ public class ElephantUtils {
}
/**
* @Author: kk
* @Description: 大象接口V6调用工具类 对应销项-大象-V6实例
*/
* @Author: kk
* @Description: 大象接口V6调用工具类 对应销项-大象-V6实例
*/
public static AjaxResult sendRequestWithoutTokenV6New(String uri, String methodName, JSON data, Companyservice companyservice) throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException {
ICompanyservicePropService companyserviceProp = SpringUtils.getBean(ICompanyservicePropService.class);
@ -655,7 +659,7 @@ public class ElephantUtils {
}
// 最终接口地址
String url = host + uri;
// 封装大象v6调用类
DxhyInterfaceRequest dxhyInterfaceRequest = new DxhyInterfaceRequest();
// 地址
@ -687,41 +691,27 @@ public class ElephantUtils {
DxhyInterfaceResponse dxhyInterfaceResponse = null;
// 大象v6调用方法(获取结果处理)
log.info("【销项】【大象工具类】调用V6接口,入参{}",JSONUtil.toJsonStr(dxhyInterfaceRequest));
log.info("【销项】【大象工具类】调用V6接口,入参{}", JSONUtil.toJsonStr(dxhyInterfaceRequest));
dxhyInterfaceResponse = InvokeDxhyApi.dxhyInterfaceInvoke(dxhyInterfaceRequest);
log.info("【销项】【大象工具类】请求成功,结果{}",JSONUtil.toJsonStr(dxhyInterfaceResponse));
log.info("【销项】【大象工具类】请求成功,结果{}", JSONUtil.toJsonStr(dxhyInterfaceResponse));
// 返回报文处理为简税报文
String dataDxhy = dxhyInterfaceResponse.getData();
String codeDxhy = dxhyInterfaceResponse.getCode();
String messageDxhy = dxhyInterfaceResponse.getMessage();
if("0000".equals(codeDxhy)){
return AjaxResult.success("0000",dataDxhy);
}else{
return AjaxResult.error(codeDxhy,messageDxhy);
if ("000000".equals(codeDxhy)) {
return AjaxResult.success("000000", dataDxhy);
} else {
return AjaxResult.error(codeDxhy, messageDxhy);
}
} catch (Exception e) {
log.error("【销项】【大象接口】调用HttpsUtilV6.Exception, url=" + url + ",request=" + JSONUtil.toJsonStr(dxhyInterfaceRequest), e);
}
return AjaxResult.error("9999","请求失败!");
return AjaxResult.error("9999", "请求失败!");
}
}

Loading…
Cancel
Save