@ -2,6 +2,7 @@ package com.jianshui.invoice.service.impl.api;
import cn.hutool.core.bean.BeanUtil ;
import cn.hutool.core.codec.Base64 ;
import cn.hutool.core.util.ObjUtil ;
import cn.hutool.core.util.StrUtil ;
import cn.hutool.json.JSONUtil ;
import com.alibaba.fastjson.JSONArray ;
@ -10,7 +11,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dxhy.order.protocol.invoke.DxhyInterfaceResponse ;
import com.google.gson.Gson ;
import com.jianshui.common.constant.Constants ;
import com.jianshui.common.constant.WebServiceConstant ;
import com.jianshui.common.core.domain.AjaxResult ;
import com.jianshui.common.core.domain.entity.Companyservice ;
import com.jianshui.common.enums.ErrorCode ;
@ -21,7 +21,6 @@ import com.jianshui.common.utils.DateUtils;
import com.jianshui.common.utils.StringUtils ;
import com.jianshui.common.utils.TimeUtil ;
import com.jianshui.common.utils.http.HttpHelper ;
import com.jianshui.common.utils.jcsk.ApiHttp ;
import com.jianshui.common.utils.uuid.IdUtils ;
import com.jianshui.framework.manager.AsyncManager ;
import com.jianshui.invoice.constant.elephant.ElephantConstantsV6 ;
@ -46,7 +45,6 @@ import com.jianshui.queue.utils.RedisQueueUtil;
import com.jianshui.storage.domain.StorageUrlDTO ;
import com.jianshui.storage.factory.StorageFactory ;
import com.jianshui.storage.service.IStorageService ;
import com.jianshui.system.domain.InvoiceAllApiLog ;
import com.jianshui.system.mapper.CompanyserviceMapper ;
import com.jianshui.system.service.ISysConfigService ;
import lombok.extern.slf4j.Slf4j ;
@ -98,7 +96,6 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService {
*
* @param billInfo
* @return
* @description TODO 没有处理机动车的情况 , 需要处理机动车 , 冲红和蓝票都要处理
* /
@Override
public HXResponse addInvoice ( BillInfo billInfo , Companyservice companyservice ) throws IllegalAccessException , InstantiationException {
@ -122,47 +119,13 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService {
ddpcxx . setDDQQPCH ( billInfo . getSystemOrderno ( ) ) ;
ddpcxx . setNSRSBH ( billInfo . getSellerTaxnum ( ) ) ;
ddpcxx . setKPZD ( billInfo . getTerminalNumber ( ) ) ;
// 大象发票类型代码说明
// 增值税专用发票: 004 1
// 增值税普通发票: 007 1
// 增值税电子专用发票:028 1
// 机动车销售统一发票:005 1
// 二手车销售统一发票:006 1
// 增值税普通发票(电子): 026 1
String invioceType = billInfo . getInvoiceType ( ) ;
String fplxdm = ElephantUtils . transElephantType ( invioceType , 1 ) ;
ddpcxx . setFPLXDM ( fplxdm ) ;
// switch (invioceType) {
// case "p":
// ddpcxx.setFPLXDM("026");
// break;
// case "c":
// ddpcxx.setFPLXDM("007");
// break;
// case "s":
// ddpcxx.setFPLXDM("004");
// break;
// case "b":
// ddpcxx.setFPLXDM("028");
// break;
// case "j":
// ddpcxx.setFPLXDM("005");
// throw new JianshuiParamErrorException("暂不支持的开票类型,请联系管理员!", companyservice, "invoice");
// case "u":
// ddpcxx.setFPLXDM("006");
// throw new JianshuiParamErrorException("暂不支持的开票类型,请联系管理员!", companyservice, "invoice");
// case "r":
// default:
// throw new JianshuiParamErrorException("暂不支持的开票类型,请联系管理员!", companyservice, "invoice");
// }
//kk TODO : 2023/9/15 V6数电新增
// 标准开具
Qdtxx qdtxx = BeanUtil . copyProperties ( billInfo , Qdtxx . class ) ;
/ * if ( billInfo . getFjyslist ( ) ! = null & & billInfo . getFjyslist ( ) . size ( ) > 0 ) {
List < Fjys > fjysList = BeanUtil . copyToList ( billInfo . getFjyslist ( ) , Fjys . class ) ;
qdtxx . setFjyslist ( fjysList ) ;
} * /
Qdtxx qdtxx = BeanUtil . copyProperties ( billInfo , Qdtxx . class ) ;
qdtxx . setQydm ( billInfo . getDqbm ( ) ) ;
qdtxx . setFJYSLIST ( billInfo . getFjyslist ( ) ) ; // 附加要素列表
qdtxx . setHWYSLIST ( billInfo . getHwysList ( ) ) ; // 货物运输
@ -191,11 +154,6 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService {
// 全电头信息
elephantInvoiceAddDTO . setQDTXX ( qdtxx ) ;
// JSONObject result = JSONObject.parseObject("{\"zipCode\":\"0\",\"entCode\":\"91370102MA3UD2FG21\",\"dataExchangeId\":\"20220328140706911955546286280593\",\"encryptCode\":\"0\",\"returnStateInfo\":{\"returnCode\":\"0000\",\"returnMessage\":\"5aSE55CG5oiQ5YqfIQ==\"},\"content\":\"eyJERFFRUENIIjoiODgyOWNmNWUtNDAyYS00NWZkLWFiYmEtMzlkMjlhOWMzMjMzIiwiWlRETSI6IjAwOTk5OSIsIlpUWFgiOiLkvIHkuJrmnKrphY3nva7nqI7mjqforr7lpIcifQ==\"}");
// if (!CommonUtils.isDevMode()) {
// result = ElephantUtils.sendRequest(ElephantConstantsV6.ADD_INVOICE, (JSONObject) JSONObject.toJSON(elephantInvoiceAddDTO));
// }
// AjaxResult queryResult = ElephantUtils.sendRequest(ElephantConstantsV6.ADD_INVOICE, JSONUtil.parse(elephantInvoiceAddDTO));
AjaxResult queryResult = null ;
try {
queryResult = ElephantUtils . sendRequestWithoutTokenV6New ( ElephantConstantsV6 . ADD_INVOICE_LOCALHOST , ElephantConstantsV6 . ADD_INVOICE_METHOD , JSONUtil . parse ( elephantInvoiceAddDTO ) , companyservice ) ;
@ -268,12 +226,6 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService {
}
}
// // 处理报文保存
// JSONObject DDJGXX = contentJson.getJSONObject("DDJGXX");
// if (StringUtils.isNotEmpty(DDJGXX.getString("DDQQLSH"))) {
// billInfo.setFpqqlsh(DDJGXX.getString("DDQQLSH"));
// }
// 定时拉取保存发票, TODO 处理开票中的问题
AsyncManager . me ( ) . execute ( new QueryInvoiceTask ( billInfo , companyservice , this ) ) ;
@ -307,11 +259,7 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService {
* /
@Override
public HXResponse queryInvoice ( QueryBillInfoDTO billInfo , Companyservice companyservice ) {
// String fpqqlsh = billInfo.getFpqqlsh();
// if (StringUtils.isEmpty(fpqqlsh)) {
// HXResponse response = new HXResponse("9999", "发票请求流水号不能为空!");
// return response;
// }
// 获得当前时间戳
Long timestamp = System . currentTimeMillis ( ) ;
String uuid = UUID . randomUUID ( ) . toString ( ) ;
@ -354,8 +302,6 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService {
queryBody . put ( "BSWJ" , "0" ) ;
debugLog ( "断点4" , uuid , timestamp ) ;
// AjaxResult queryResult = ElephantUtils.sendRequest(ElephantConstantsV6.QUERY_INVOICE, JSONUtil.parse(queryBody));
// queryResult = ElephantUtils.sendRequest(ElephantConstantsV6.ADD_INVOICE_RESULT, JSONUtil.parse(queryBody));
AjaxResult queryResult = null ;
try {
queryResult = ElephantUtils . sendRequestWithoutToken ( ElephantConstantsV6 . QUERY_INVOICE_LOCALHOST , ElephantConstantsV6 . QUERY_INVOICE_METHOD , JSONUtil . parse ( queryBody ) , companyservice ) ;
@ -368,19 +314,6 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService {
// 判断外层报文是否成功
if ( queryResult . isError ( ) ) {
// String base64Result = returnStateInfo.getString("returnMessage");
// String errorMsg = new String(Base64.decodeBase64(base64Result));
// Invoice tempInvoice = new Invoice();
// tempInvoice.setInvoiceMsg(errorMsg);
// if (billInfo.getSystemOrderno() != null) {
// tempInvoice.setSystemOrderno(billInfo.getSystemOrderno());
// }
// if (billInfo.getOutTradeOrderno() != null) {
// tempInvoice.setOutTradeOrderno(billInfo.getOutTradeOrderno());
// }
// if (billInfo.getFpqqlsh() != null) {
// tempInvoice.setFpqqlsh(billInfo.getFpqqlsh());
// }
throw new JianshuiServiceException ( queryResult . getMsg ( ) ) ;
}
debugLog ( "断点6" , uuid , timestamp ) ;
@ -808,12 +741,11 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService {
}
}
/ * *
* 生成动态二维码接口
*
* @param decryptResult
* @param companyservice
* @return
@ -825,18 +757,137 @@ public class ElephantInvoiceApiV6ServiceImpl implements IInvoiceApiService {
try {
dxhyInterfaceResponse = ElephantUtils . sendRequestWithoutTokenV6 ( ElephantConstantsV6 . GEN_DYNAMIC_CODE_LOCALHOST , ElephantConstantsV6 . GEN_DYNAMIC_CODE_METHOD , JSONUtil . parse ( decryptResult ) , companyservice ) ;
} catch ( UnsupportedEncodingException | InvalidKeyException | NoSuchAlgorithmException e ) {
log . error ( "【销项发票】【大象接口】【生成动态二维码】发票请求异常,请求报文{},销方信息{}" , decryptResult , JSONObject . toJSONString ( companyservice ) ) ;
log . error ( "【销项发票】【大象接口】【数电】【 生成动态二维码】发票请求异常,请求报文{},销方信息{}" , decryptResult , JSONObject . toJSONString ( companyservice ) ) ;
e . printStackTrace ( ) ;
return new HXResponse ( "9999" , "系统异常!" ) ;
return new HXResponse ( "00 9999" , "系统异常!" ) ;
}
Object data = dxhyInterfaceResponse . getData ( ) ;
String code = dxhyInterfaceResponse . getCode ( ) ;
return new HXResponse ( code , data ) ;
return parseResult ( dxhyInterfaceResponse ) ;
}
/ * *
* 红字确认单列表查询 ( 数电专用 )
*
* * /
@Override
public HXResponse queryRedConfirmationList ( JSONObject decryptResult , Companyservice companyservice ) {
DxhyInterfaceResponse dxhyInterfaceResponse = null ;
try {
dxhyInterfaceResponse = ElephantUtils . sendRequestWithoutTokenV6 ( ElephantConstantsV6 . QUERY_RED_CONFIRMATION_LIST_LOCALHOST , ElephantConstantsV6 . QUERY_RED_CONFIRMATION_LIST_METHOD , JSONUtil . parse ( decryptResult ) , companyservice ) ;
} catch ( UnsupportedEncodingException | InvalidKeyException | NoSuchAlgorithmException e ) {
log . error ( "【销项发票】【大象接口】【数电】【红字确认单列表查询】发票请求异常,请求报文{},销方信息{}" , decryptResult , JSONObject . toJSONString ( companyservice ) ) ;
e . printStackTrace ( ) ;
return new HXResponse ( "009999" , "系统异常!" ) ;
}
return parseResult ( dxhyInterfaceResponse ) ;
}
/ * *
* 红字确认单明细查询 ( 数电专用 )
* @param decryptResult
* @param companyservice
* @return
* /
@Override
public HXResponse queryRedConfirmationItemList ( JSONObject decryptResult , Companyservice companyservice ) {
DxhyInterfaceResponse dxhyInterfaceResponse = null ;
try {
dxhyInterfaceResponse = ElephantUtils . sendRequestWithoutTokenV6 ( ElephantConstantsV6 . QUERY_RED_CONFIRMATION_ITEM_LIST_LOCALHOST , ElephantConstantsV6 . QUERY_RED_CONFIRMATION_ITEM_LIST_METHOD , JSONUtil . parse ( decryptResult ) , companyservice ) ;
} catch ( UnsupportedEncodingException | InvalidKeyException | NoSuchAlgorithmException e ) {
log . error ( "【销项发票】【大象接口】【数电】【红字确认单明细查询】发票请求异常,请求报文{},销方信息{}" , decryptResult , JSONObject . toJSONString ( companyservice ) ) ;
e . printStackTrace ( ) ;
return new HXResponse ( "009999" , "系统异常!" ) ;
}
return parseResult ( dxhyInterfaceResponse ) ;
}
/ * *
* 红字确认单申请 ( 数电专用 )
* @param decryptResult
* @param companyservice
* @return
* /
@Override
public HXResponse redConfirmationApply ( JSONObject decryptResult , Companyservice companyservice ) {
DxhyInterfaceResponse dxhyInterfaceResponse = null ;
try {
dxhyInterfaceResponse = ElephantUtils . sendRequestWithoutTokenV6 ( ElephantConstantsV6 . RED_CONFIRMATION_LOCALHOST , ElephantConstantsV6 . RED_CONFIRMATION_METHOD , JSONUtil . parse ( decryptResult ) , companyservice ) ;
} catch ( UnsupportedEncodingException | InvalidKeyException | NoSuchAlgorithmException e ) {
log . error ( "【销项发票】【大象接口】【数电】【红字确认单申请】发票请求异常,请求报文{},销方信息{}" , decryptResult , JSONObject . toJSONString ( companyservice ) ) ;
e . printStackTrace ( ) ;
return new HXResponse ( "009999" , "系统异常!" ) ;
}
return parseResult ( dxhyInterfaceResponse ) ;
}
/ * *
* 红字确认单确认接口
* @param decryptResult
* @param companyservice
* @return
* /
@Override
public HXResponse redConfirmationConfirm ( JSONObject decryptResult , Companyservice companyservice ) {
DxhyInterfaceResponse dxhyInterfaceResponse = null ;
try {
dxhyInterfaceResponse = ElephantUtils . sendRequestWithoutTokenV6 ( ElephantConstantsV6 . RED_CONFIRMATION_LOCALHOST , ElephantConstantsV6 . RED_CONFIRMATION_METHOD , JSONUtil . parse ( decryptResult ) , companyservice ) ;
} catch ( UnsupportedEncodingException | InvalidKeyException | NoSuchAlgorithmException e ) {
log . error ( "【销项发票】【大象接口】【数电】【红字确认单确认接口】发票请求异常,请求报文{},销方信息{}" , decryptResult , JSONObject . toJSONString ( companyservice ) ) ;
e . printStackTrace ( ) ;
return new HXResponse ( "009999" , "系统异常!" ) ;
}
return parseResult ( dxhyInterfaceResponse ) ;
}
/ * *
* 大象通用返回处理
*
* @param dxhyInterfaceResponse
* @return
* /
public HXResponse parseResult ( DxhyInterfaceResponse dxhyInterfaceResponse ) {
if ( BeanUtil . isEmpty ( dxhyInterfaceResponse ) ) {
return new HXResponse ( "9999" , "接口请求失败!返回内容不存在!" , "" , false ) ;
}
// 大象通用返回处理,返回简税HXResponse
Object data = dxhyInterfaceResponse . getData ( ) ! = null ? dxhyInterfaceResponse . getData ( ) : "" ;
String code = dxhyInterfaceResponse . getCode ( ) ! = null ? dxhyInterfaceResponse . getCode ( ) : "" ;
if ( "000000" . equals ( code ) ) {
if ( ObjUtil . isNotEmpty ( data ) ) {
cn . hutool . json . JSONObject dataJson = JSONUtil . parseObj ( data ) ;
String ztdm = dataJson . get ( "ZTDM" ) ! = null ? dataJson . get ( "ZTDM" ) . toString ( ) : "" ;
String ztxx = dataJson . get ( "ZTXX" ) ! = null ? dataJson . get ( "ZTXX" ) . toString ( ) : "" ;
String dataTemp = dataJson . get ( "DATA" ) ! = null ? dataJson . get ( "DATA" ) . toString ( ) : "" ;
if ( "000000" . equals ( ztdm ) ) {
if ( StrUtil . isNotEmpty ( dataTemp ) ) {
return new HXResponse ( code , "" , dataTemp , true ) ;
} else {
return new HXResponse ( code , "" , data , true ) ;
}
} else {
return new HXResponse ( ztdm , ztxx , "" , true ) ;
}
}
} else {
return new HXResponse ( code , "接口请求失败!" , "" , false ) ;
}
return new HXResponse ( code , "接口请求失败!" , "" , false ) ;
}
/ * *
* 申请 / 上传 红字发票
*