重汽红字申请表下载

beta-prop-all^2
kk 2 years ago
parent 988689a2bf
commit c2bcc34e0b
  1. 6
      jianshui-admin/src/main/java/com/jianshui/api/controller/http/invoice/v1/InvoiceController.java
  2. 35
      jianshui-invoice/src/main/java/com/jianshui/invoice/domain/InvoiceBack.java
  3. 68
      jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/RedinfoCopyAisinoVO.java
  4. 32
      jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/RedinfodetailAisinoVO.java
  5. 24
      jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/api/aisino/console/DownloadJdcDetailItemVO.java
  6. 46
      jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/api/aisino/console/DownloadJdcVO.java
  7. 2
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/request/AisinoInvoiceRequestAdapterImpl.java
  8. 187
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiZhongQiServiceImpl.java
  9. 11
      jianshui-invoice/src/main/java/com/jianshui/invoice/utils/JcskTest.java
  10. 17
      jianshui-invoice/src/main/resources/mapper/invoice/InvoiceBackMapper.xml

@ -1760,7 +1760,11 @@ public class InvoiceController {
public Object addInvoiceBatch(HttpServletRequest request, String identity) throws Exception {
// TODO: 2023/11/2 批量开票接口
// 摘成异步逻辑,状态码过来所有的错误记录数据库,记录请求过来的数据先
if (StringUtils.isEmpty(identity)) {
return AjaxResult.error(ErrorCode.EMPTY_IDENTITY);
}

@ -44,6 +44,41 @@ public class InvoiceBack
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/** 接口返回信息*/
private String resultMsg;
/** 接口返回状态码*/
private String resultCode;
/** 更新时间*/
private String updateTime;
public String getUpdateTime() {
return updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
public String getResultCode() {
return resultCode;
}
public void setResultCode(String resultCode) {
this.resultCode = resultCode;
}
public String getResultMsg() {
return resultMsg;
}
public void setResultMsg(String resultMsg) {
this.resultMsg = resultMsg;
}
public Date getCreateTime() {
return createTime;
}

@ -44,6 +44,7 @@ public class RedinfoCopyAisinoVO {
/**
* bill_info表的bill_id
*/
@Alias("BillInfoId")
@Excel(name = "bill_info表的bill_id")
private Long billInfoId;
@ -57,148 +58,153 @@ public class RedinfoCopyAisinoVO {
/**
* 信息表状态
*/
@Alias("statusDM")
@Alias("StatusDM")
@Excel(name = "信息表状态")
private String redInfoStatus;
/**
* 信息表状态描述
*/
@Alias("statusMC")
@Alias("StatusMC")
@Excel(name = "信息表状态描述")
private String redInfoMessage;
/**
* 信息表类型
*/
@Alias("billType")
@Alias("BillType")
@Excel(name = "信息表类型")
private String redInfoType;
/**
* 原发票代码
*/
@Alias("typeCode")
@Alias("TypeCode")
@Excel(name = "原发票代码")
private String originFpdm;
/**
* 信息表特殊标识
*/
@Alias("RedInfoSpecFlag")
@Excel(name = "信息表特殊标识")
private String redInfoSpecFlag;
/**
* 原发票号码
*/
@Alias("invNo")
@Alias("InvNo")
@Excel(name = "原发票号码")
private String originFphm;
/**
* 税种类别
*/
@Alias("szlb")
@Alias("Szlb")
@Excel(name = "税种类别")
private String taxType;
/**
* 原发票开票日期
*/
@Alias("lzkprq")
@Alias("Lzkprq")
@Excel(name = "原发票开票日期")
private String originKprq;
/**
* 多税率标志
*/
@Alias("isMutiRate")
@Alias("IsMutiRate")
@Excel(name = "多税率标志")
private String multTaxRate;
/**
* 填开日期
*/
@Alias("date")
@Alias("Date")
@Excel(name = "填开日期")
private String billInputTime;
/**
* 购方名称
*/
@Alias("buyerName")
@Alias("BuyerName")
@Excel(name = "购方名称")
private String buyerName;
/**
* 购方税号
*/
@Alias("buyerTaxCode")
@Alias("BuyerTaxCode")
private String buyerTaxnum;
/**
* 销方名称
*/
@Alias("sellerName")
@Alias("SellerName")
@Excel(name = "销方名称")
private String sellerName;
/**
* 销方税号
*/
@Alias("sellTaxCode")
@Alias("SellTaxCode")
@Excel(name = "销方税号")
private String sellerTaxnum;
/**
* 不含税金额
*/
@Alias("amount")
@Alias("Amount")
@Excel(name = "不含税金额")
private BigDecimal taxfreeamt;
/**
* 税额
*/
@Alias("tax")
@Alias("Tax")
@Excel(name = "税额")
private BigDecimal tax;
/**
* 含税金额
*/
@Alias("Taxamt")
@Excel(name = "含税金额")
private BigDecimal taxamt;
/**
* 申请说明
*/
@Alias("reqMemo")
@Alias("ReqMemo")
@Excel(name = "申请说明")
private String applyRemark;
/**
* 申请表pdf 地址
*/
@Alias("PdfUrl")
@Excel(name = "申请表pdf 地址")
private String pdfUrl;
/**
* 商品编码版本号
*/
@Alias("spbmbbh")
@Alias("Spbmbbh")
@Excel(name = "商品编码版本号")
private String bmbbh;
/**
* 营业税标志
*/
@Alias("BusinessTaxCode")
@Excel(name = "营业税标志")
private String businessTaxCode;
/**
* 申请时间
*/
@Alias("ApplyTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "申请时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date applyTime;
@ -206,76 +212,84 @@ public class RedinfoCopyAisinoVO {
/**
* 发票种类 invoice_type p电子增值税普通发票 c增值税普通发票 s 增值税专用发票 e 收购发票 f 收购发票 r增值税普通发票
*/
@Alias("lzfplxdm")
@Alias("Lzfplxdm")
@Excel(name = "发票种类 invoice_type", readConverterExp = "p=电子增值税普通发票,c=增值税普通发票,s=,增=值税专用发票,e=,收=购发票,f=,收=购发票,r=增值税普通发票")
private String invoiceType;
/**
* 分机号
*/
@Alias("Fjh")
@Excel(name = "分机号")
private String fjh;
/**
* 终端号
*/
@Alias("TerminalNumber")
@Excel(name = "终端号")
private String terminalNumber;
/**
* 设备编号
*/
@Alias("Jspbh")
@Excel(name = "设备编号")
private String jspbh;
/**
* 所属月份
*/
@Alias("Ssyf")
@Excel(name = "所属月份")
private String ssyf;
/**
* 税率
*/
@Alias("taxRate")
@Alias("TaxRate")
@Excel(name = "税率")
private BigDecimal taxrate;
/**
* 申请选择
*/
@Alias("Sqxz")
@Excel(name = "申请选择")
private String sqxz;
/**
* 经办人
*/
@Alias("Jbr")
@Excel(name = "经办人")
private String jbr;
/**
* 申请方税号
*/
@Alias("Reqnsrsbh")
@Excel(name = "申请方税号")
private String reqnsrsbh;
/**
* 成品油标志
*/
@Alias("ProductOilFlag")
@Excel(name = "成品油标志")
private String productOilFlag;
/**
* 服务公司
*/
@Alias("ServiceSupplierKey")
@Excel(name = "服务公司")
private String serviceSupplierKey;
/**
* 申请类别
*/
@Alias("sqly")
@Alias("Sqly")
@Excel(name = "申请类别")
private Integer sqlb; // 申请类别,0为销方申请,1为购方申请
@ -298,27 +312,27 @@ public class RedinfoCopyAisinoVO {
/** 数科新加字段**/
@Alias("hzfphm")
@Alias("Hzfphm")
@Excel(name = "红字发票号码")
private String fphm;
@Alias("hzkprq")
@Alias("Hzkprq")
@Excel(name = "红字发票开票日期")
private String kprq;
@Alias("hzfpxxqrdid")
@Alias("Hzfpxxqrdid")
@Excel(name = "红字发票信息确认单id")
private String hzfpxxqrdid;
@Alias("hzhjje")
@Alias("Hzhjje")
@Excel(name = "红字合计金额")
private String hzhjje;
@Alias("hzhjse")
@Alias("Hzhjse")
@Excel(name = "红字合计税额")
private String hzhjse;
@Alias("ykjhzfpbz")
@Alias("Ykjhzfpbz")
@Excel(name = "是否开具红字发票")
private String ykjhzfpbz;

@ -29,18 +29,21 @@ public class RedinfodetailAisinoVO {
/**
* redinfo表的id
*/
@Alias("RedinfoId")
@Excel(name = "redinfo表的id")
private Long redinfoId;
/**
* 申请单号
*/
@Alias("Billno")
@Excel(name = "申请单号")
private String billno;
/**
* $column.columnComment
*/
@Alias("Index")
@Excel(name = "序号", readConverterExp = "$column.readConverterExp()")
private Integer index;
@ -48,10 +51,11 @@ public class RedinfodetailAisinoVO {
/**
* 商品名称
*/
@Alias("GoodName")
@Excel(name = "商品名称")
private String goodName;
@Alias("goodsUnit")
@Alias("GoodsUnit")
/**
* 单位
*/
@ -61,73 +65,77 @@ public class RedinfodetailAisinoVO {
/**
* 规格型号
*/
@Alias("goodsGgxh")
@Alias("GoodsGgxh")
@Excel(name = "规格型号")
private String spec;
/**
* 商品数量
*/
@Alias("goodsNum")
@Alias("GoodsNum")
@Excel(name = "商品数量")
private BigDecimal num;
/**
* 商品单价不含税
*/
@Alias("goodsPrice")
@Alias("GoodsPrice")
@Excel(name = "商品单价,不含税")
private BigDecimal price;
/**
* 不含税金额
*/
@Alias("goodsJE")
@Alias("GoodsJE")
@Excel(name = "不含税金额")
private BigDecimal taxfreeamt;
/**
* 税率
*/
@Alias("goodsTaxRate")
@Alias("GoodsTaxRate")
@Excel(name = "税率")
private BigDecimal taxrate;
/**
* 税额
*/
@Alias("goodsSE")
@Alias("GoodsSE")
@Excel(name = "税额")
private BigDecimal tax;
/**
* 含税金额
*/
@Alias("Taxamt")
@Excel(name = "含税金额")
private BigDecimal taxamt;
/**
* 税收分类编码
*/
@Alias("Spbm")
@Excel(name = "税收分类编码")
private String spbm;
/**
* 商品编码版本号
*/
@Alias("Bmbbh")
@Excel(name = "商品编码版本号")
private String bmbbh;
/**
* 优惠政策标识0不使用1使用
*/
@Alias("syyhzcbz")
@Alias("Syyhzcbz")
@Excel(name = "优惠政策标识,0不使用,1使用")
private Integer yhzcbs;
/**
* 增值税特殊管理优惠政策表示名称
*/
@Alias("Zzstsgl")
@Excel(name = "增值税特殊管理", readConverterExp = "优=惠政策表示名称")
private String zzstsgl;
@ -141,35 +149,41 @@ public class RedinfodetailAisinoVO {
/**
* 商品编码简称
*/
@Alias("GoodAbbreviation")
@Excel(name = "商品编码简称")
private String goodAbbreviation;
/**
* 发票行性质
*/
@Alias("Fphxz")
@Excel(name = "发票行性质")
private Integer fphxz;
/**
* 扣除额
*/
@Alias("Kce")
@Excel(name = "扣除额")
private BigDecimal kce;
/**
* 修改时间
*/
@Alias("UpdatedTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date updatedTime;
// 含税标志
@TableField(exist = false)
@JsonIgnore
@Alias("hsbz")
@Alias("Hsbz")
private String withTaxFlag;
// 含税单价
@Alias("PriceWithTax")
@TableField(exist = false)
@JsonIgnore
private String priceWithTax;

@ -11,39 +11,39 @@ import lombok.Data;
public class DownloadJdcDetailItemVO {
// 商品名称
private String goodsName;
private String GoodsName;
//计量单位
private String goodsUnit;
private String GoodsUnit;
//单价
private String goodsPrice;
private String GoodsPrice;
//税率
private String goodsTaxRate;
private String GoodsTaxRate;
//规格型号
private String goodsGgxh;
private String GoodsGgxh;
//数量
private String goodsNum;
private String GoodsNum;
//金额
private String goodsJE;
private String GoodsJE;
//税额
private String goodsSE;
private String GoodsSE;
// 含税标志
private String hsbz;
private String Hsbz;
// 商品编码
private String spbm;
private String Spbm;
//商品企业自编
private String qyspbm;
private String Qyspbm;
//是否使用优惠政策标识0:不使用,1:使用
private String syyhzcbz;
private String Syyhzcbz;
// 零税率标识
private String LSLBZ;

@ -15,73 +15,73 @@ public class DownloadJdcVO {
private String ReqBillNo;
// 信息表编号
private String resBillNo;
private String ResBillNo;
// 信息表状态代码
private String statusDM;
private String StatusDM;
// 信息表状态描述
private String statusMC;
private String StatusMC;
// 信息表类型
private String billType;
private String BillType;
// 对应蓝票代码
private String typeCode;
private String TypeCode;
// 对应蓝票号码
private String invNo;
private String InvNo;
// 税种类别
private String szlb;
private String Szlb;
// 多税率标志
private String isMutiRate;
private String IsMutiRate;
// 填开日期
private String date;
private String Date;
// 购方名称
private String buyerName;
private String BuyerName;
// 购方税号
private String buyerTaxCode;
private String BuyerTaxCode;
// 购方地址电话
private String buyerAdd;
private String BuyerAdd;
// 购方银行账号
private String buyerBank;
private String BuyerBank;
// 销方名称
private String sellerName;
private String SellerName;
// 销方税号
private String sellTaxCode;
private String SellTaxCode;
// 合计金额
private String amount;
private String Amount;
// 税率
private String taxRate;
private String TaxRate;
// 合计税额
private String tax;
private String Tax;
// 申请说明
private String reqMemo;
private String ReqMemo;
// 商品编码版本号
private String spbmbbh;
private String Spbmbbh;
// 含税税率标识
private String slbz;
private String Slbz;
// 异地代开
private String yddk;
private String Yddk;
// 代开比对标识
private String dkbdbs;
private String Dkbdbs;
// 商品明细
private List<DownloadJdcDetailVO> RedInvReqBillMx;

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

@ -103,7 +103,6 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer
static final String SUFFIX = ".tmp";//后缀字符串定义文件的扩展名;如果为null,则将使用后缀".tmp"
/**
* 1.发票开具 SID = 1
*
@ -293,12 +292,12 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer
try {
// 控制台文档给的不对,反了
String jdcbz = aisinoConsoleInvoiceAddDTO.getJDCBZ() != null ? aisinoConsoleInvoiceAddDTO.getJDCBZ() : "";
log.info("机动车标志:{}",jdcbz);
if("1".equals(jdcbz)){
log.info("机动车标志:{}", jdcbz);
if ("1".equals(jdcbz)) {
aisinoConsoleInvoiceAddDTO.setJDCBZ("2");
}else if("2".equals(jdcbz)){
} else if ("2".equals(jdcbz)) {
aisinoConsoleInvoiceAddDTO.setJDCBZ("1");
}else {
} else {
aisinoConsoleInvoiceAddDTO.setJDCBZ("2");
}
@ -405,7 +404,7 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer
try {
Long c = Long.valueOf(RandomUtil.randomInt(3, 5));
Thread.sleep(c * 1000);
callBackAisino(finalQueryInvoiceBack,callBackUrl, invoice.getId());
callBackAisino(finalQueryInvoiceBack, callBackUrl, invoice.getId());
} catch (InterruptedException e) {
}
@ -429,7 +428,7 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer
* @param callBackUrl
* @param id
*/
private void callBackAisino(InvoiceBack invoiceBack,String callBackUrl, Long id) {
private void callBackAisino(InvoiceBack invoiceBack, String callBackUrl, Long id) {
// TODO: 2023/10/27 回调处理
@ -451,21 +450,21 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer
log.info("【控制台】发票回调接口,发送数据结束,id={},接口返回信息={}", id, result);
cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(result);
if(jsonObject != null){
String status = jsonObject.get("Result") != null ? jsonObject.get("Result").toString():"";
String message = jsonObject.get("Message")!= null ? jsonObject.get("Message").toString():"";
if (jsonObject != null) {
String status = jsonObject.get("Result") != null ? jsonObject.get("Result").toString() : "";
String message = jsonObject.get("Message") != null ? jsonObject.get("Message").toString() : "";
if("0000".equals(status)){
if ("0000".equals(status)) {
invoiceBack.setStatus("1");
invoiceBack.setBackMsg(message);
invoiceBackMapper.updateInvoiceBack(invoiceBack);
}else if("9999".equals(status)){
} else if ("9999".equals(status)) {
invoiceBack.setStatus("3");
invoiceBack.setBackMsg(message);
invoiceBackMapper.updateInvoiceBack(invoiceBack);
}else {
} else {
invoiceBack.setStatus("2");
invoiceBack.setBackMsg(status+message);
invoiceBack.setBackMsg(status + message);
invoiceBackMapper.updateInvoiceBack(invoiceBack);
}
}
@ -889,7 +888,7 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer
String fjh = companyserviceDetailList.get(0).getFjh();
// 组装报文
AisinoConsoleInvoiceRedDownloadDTO downloadDTO = BeanUtil.copyProperties(downloadRedInfoDTO,AisinoConsoleInvoiceRedDownloadDTO.class);
AisinoConsoleInvoiceRedDownloadDTO downloadDTO = BeanUtil.copyProperties(downloadRedInfoDTO, AisinoConsoleInvoiceRedDownloadDTO.class);
downloadDTO.setYQZT("N");
downloadDTO.setXXBFW("0");
downloadDTO.setPAGENO("1");
@ -924,7 +923,65 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer
throw new JianshuiServiceException(ajaxResult.getMsg());
}
cn.hutool.json.JSONObject resultJSON = JSONUtil.parseObj(ajaxResult.get("data"));
/** sb控制台和文档不一样*/
String retdata = ajaxResult.get("data") != null ? ajaxResult.get("data").toString() : "";
if (StrUtil.isEmpty(retdata)) {
return new HXResponse("9999", "下载失败");
}
String FPXT_COM_OUTPUT = JSONUtil.parseObj(retdata).get("FPXT_COM_OUTPUT") != null ?
JSONUtil.parseObj(retdata).get("FPXT_COM_OUTPUT").toString() : "";
if (StrUtil.isEmpty(retdata)) {
return new HXResponse("9999", "下载失败");
}
String data = JSONUtil.parseObj(FPXT_COM_OUTPUT).get("DATA") != null ?
JSONUtil.parseObj(FPXT_COM_OUTPUT).get("DATA").toString() : "";
if (StrUtil.isNotEmpty(data)) {
System.out.println("存在");
System.out.println(data);
if (StrUtil.isNotEmpty(data)) {
// Map<String, Object> map = new HashMap<>();
data = Base64.decodeStr(data, "GB2312");
if (data.indexOf("<DATA>") != -1 && data.indexOf("</DATA>") != -1) {
String dataChild = data.substring(data.indexOf("<DATA>") + 6, data.indexOf("</DATA>"));
cn.hutool.json.JSONObject dataChildJson = JSONUtil.parseObj(dataChild);
String RedInvReqBill = dataChildJson.get("RedInvReqBill").toString();
// TODO: 2023/11/4 这里处理
// cn.hutool.json.JSONArray jsonArray = JSONUtil.parseArray(RedInvReqBill);
cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(RedInvReqBill);
JSONArray jsonArray1 = new JSONArray();
jsonArray1.add(jsonObject);
// 拿到最终报文
// List<DownloadJdcVO> downloadJdcVOList = BeanUtil.copyToList(jsonArray, DownloadJdcVO.class);
List<DownloadJdcVO> downloadJdcVOList = BeanUtil.copyToList(jsonArray1, DownloadJdcVO.class);
// 解析
List<Redinfo> red = null;
try {
red = parseRedinfo(downloadJdcVOList);
} catch (Exception e) {
log.info("红字信息表税局解密错误:{}", e);
return new HXResponse("9999", "系统异常!!!");
}
return new HXResponse("0000", red);
}
}
}
return new HXResponse("9999", "系统错误!");
// ajaxResult.get("data") != null ? JSONUtil.parseObj(ajaxResult.get("data")).get("FPXT_COM_OUTPUT")
/* 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() : "";
String retdata = resultJSON.get("retdata") != null ? resultJSON.get("retdata").toString() : "";
@ -971,16 +1028,53 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer
return new HXResponse("9999",retmsg);
}else{
return new HXResponse("9999",retmsg);
}
}*/
}
public static void main(String[] args) {
String aa = "{\"ReqBillNo\":\"661824626856231102101257\",\"ResBillNo\":4109222311000083,\"StatusDM\":\"TZD0000\",\"StatusMC\":\"审核通过\",\"BillType\":0,\"TypeCode\":\"0000000000\",\"InvNo\":\"00000000\",\"Szlb\":1,\"IsMutiRate\":0,\"Date\":\"2023-11-02\",\"BuyerName\":\"河南首发汽车销售服务有限公司\",\"BuyTaxCode\":\"91410922MA455KT3X6\",\"BuyerAdd\":\"\",\"BuyerBank\":\"\",\"SellerName\":\"中国重汽集团济南商用车有限公司\",\"SellTaxCode\":\"9137010072624213XP\",\"Amount\":-246902.65,\"TaxRate\":0.13,\"Tax\":-32097.35,\"ReqMemo\":\"Y\",\"SPBMBBH\":50,\"SLBZ\":0,\"YDDK\":\"\",\"DKBDBS\":\"\",\"Tspz\":\"\",\"Xhqdbz\":\"N\",\"RedInvReqBillMx\":{\"GoodsMx\":{\"GoodsName\":\"*机动车*销售折让\",\"GoodsUnit\":\"\",\"GoodsPrice\":\"\",\"GoodsTaxRate\":0.13,\"GoodsGgxh\":\"\",\"GoodsNum\":\"\",\"GoodsJE\":-246902.65,\"GoodsSE\":-32097.35,\"HS_BZ\":\"N\",\"SPBM\":1090305040000000000,\"QYSPBM\":\"004\",\"SYYHZCBZ\":0,\"YHZC\":\"\",\"LSLBZ\":\"\"}}}";
cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(aa);
JSONArray jsonArray1 = new JSONArray();
jsonArray1.add(jsonObject);
// 拿到最终报文
// List<DownloadJdcVO> downloadJdcVOList = BeanUtil.copyToList(jsonArray, DownloadJdcVO.class);
List<DownloadJdcVO> downloadJdcVOList = BeanUtil.copyToList(jsonArray1, DownloadJdcVO.class);
// 解析
List<Redinfo> redinfoList = null;
try {
redinfoList = new ArrayList<>();
for (DownloadJdcVO downloadJdcVO : downloadJdcVOList) {
RedinfoCopyAisinoVO redinfoCopyAisinoVO = BeanUtil.copyProperties(downloadJdcVO, RedinfoCopyAisinoVO.class);
// 明细处理
if (!CollectionUtils.isEmpty(downloadJdcVO.getRedInvReqBillMx()) && !CollectionUtils.isEmpty(downloadJdcVO.getRedInvReqBillMx().get(0).getGoodsMx())) {
List<DownloadJdcDetailItemVO> downloadJdcDetailItemVOS = downloadJdcVO.getRedInvReqBillMx().get(0).getGoodsMx();
List<RedinfodetailAisinoVO> redinfodetailAisinoVOList = BeanUtil.copyToList(downloadJdcDetailItemVOS, RedinfodetailAisinoVO.class);
redinfoCopyAisinoVO.setRedinfodetailList(redinfodetailAisinoVOList);
}
// 返回转换
Redinfo redinfo = BeanUtil.copyProperties(BeanToMapUtils.fastJsonBean2Map(redinfoCopyAisinoVO), Redinfo.class);
redinfoList.add(redinfo);
}
System.out.println(redinfoList);
} catch (Exception e) {
log.info("红字信息表税局解密错误:{}", e);
// return new HXResponse("9999", "系统异常!!!");
}
// return new HXResponse("0000", red);
}
/**
* @author kk
* @date 15:25
* @param: [downloadJdcVOList]
* @return:
* 红字信息表下载报文转换
*/
* @author kk
* @date 15:25
* @param: [downloadJdcVOList]
* @return: 红字信息表下载报文转换
*/
private List<Redinfo> parseRedinfo(List<DownloadJdcVO> downloadJdcVOList) {
List<Redinfo> redinfoList = new ArrayList<>();
@ -989,9 +1083,9 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer
RedinfoCopyAisinoVO redinfoCopyAisinoVO = BeanUtil.copyProperties(downloadJdcVO, RedinfoCopyAisinoVO.class);
// 明细处理
if(!CollectionUtils.isEmpty(downloadJdcVO.getRedInvReqBillMx()) && !CollectionUtils.isEmpty(downloadJdcVO.getRedInvReqBillMx().get(0).getGoodsMx())){
if (!CollectionUtils.isEmpty(downloadJdcVO.getRedInvReqBillMx()) && !CollectionUtils.isEmpty(downloadJdcVO.getRedInvReqBillMx().get(0).getGoodsMx())) {
List<DownloadJdcDetailItemVO> downloadJdcDetailItemVOS = downloadJdcVO.getRedInvReqBillMx().get(0).getGoodsMx();
List<RedinfodetailAisinoVO> redinfodetailAisinoVOList = BeanUtil.copyToList(downloadJdcDetailItemVOS,RedinfodetailAisinoVO.class);
List<RedinfodetailAisinoVO> redinfodetailAisinoVOList = BeanUtil.copyToList(downloadJdcDetailItemVOS, RedinfodetailAisinoVO.class);
redinfoCopyAisinoVO.setRedinfodetailList(redinfodetailAisinoVOList);
}
@ -1151,10 +1245,10 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer
@Override
public HXResponse exportVehicleInvoice(JSONObject decryptResult, Companyservice companyservice) {
ExportVehicleDTO exportVehicleDTO = BeanUtil.copyProperties(decryptResult,ExportVehicleDTO.class);
ExportVehicleDTO exportVehicleDTO = BeanUtil.copyProperties(decryptResult, ExportVehicleDTO.class);
if(BeanUtil.isEmpty(exportVehicleDTO)){
return new HXResponse("9999","请求参数为空!");
if (BeanUtil.isEmpty(exportVehicleDTO)) {
return new HXResponse("9999", "请求参数为空!");
}
// 机动车加密导出路径配置
@ -1169,13 +1263,13 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer
} catch (Exception e) {
log.error("【销项发票】【总部控制台接口】【机动车加密】机动车加密文件导出请求异常,请求报文{},销方信息{}", JSONUtil.parse(decryptResult).toString(), JSONObject.toJSONString(companyservice));
e.printStackTrace();
return new HXResponse("9999","系统异常!");
return new HXResponse("9999", "系统异常!");
}
log.info("【销项发票】【总部控制台发票】机动车加密文件导出结果{}", ajaxResult.toString());
//返回报文解析
if (ajaxResult.isError()) {
return new HXResponse("9999",ajaxResult.getMsg());
return new HXResponse("9999", ajaxResult.getMsg());
}
cn.hutool.json.JSONObject resultJSON = JSONUtil.parseObj(ajaxResult.get("data"));
@ -1189,7 +1283,7 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer
if (secretIdProp == null || StrUtil.isEmpty(secretIdProp.getValue())) {
log.info("【销项发票】【总部控制台发票-机动车加密】推送nginx地址未配置!aisino_nginx_url");
return new HXResponse("9999","推送中间件地址未配置!");
return new HXResponse("9999", "推送中间件地址未配置!");
}
String downloadUrl = secretIdProp.getValue();
@ -1197,7 +1291,7 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer
cn.hutool.json.JSONObject queryDto = JSONUtil.parseObj(json);
if (queryDto == null) {
log.info("【销项发票】【总部控制台发票-机动车加密】查询条件未获取到!");
return new HXResponse("9999","查询条件未获取到!");
return new HXResponse("9999", "查询条件未获取到!");
}
String indexPage = null;
@ -1205,7 +1299,7 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer
indexPage = HttpUtil.get(downloadUrl);
} catch (Exception e) {
log.info("【销项发票】【总部控制台发票-机动车加密】{}", e);
return new HXResponse("9999","中间件读取失败!");
return new HXResponse("9999", "中间件读取失败!");
}
String startDate = queryDto.get("KSRQ") != null ? queryDto.get("KSRQ").toString().replace("-", ".") : "";
@ -1244,12 +1338,12 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer
// InputStream is = new ByteArrayInputStream(fileStream.getBytes());
CompanyserviceProp qyjc = companyserviceProp.selectPropByKey(companyservice.getCompanyid(), "aisino_qyjc");
if(qyjc == null || StrUtil.isEmpty(qyjc.getValue())){
return new HXResponse("9999","重汽推送企业简称未设置!");
if (qyjc == null || StrUtil.isEmpty(qyjc.getValue())) {
return new HXResponse("9999", "重汽推送企业简称未设置!");
}
CompanyserviceProp zdr = companyserviceProp.selectPropByKey(companyservice.getCompanyid(), "aisino_zdr");
if(zdr == null || StrUtil.isEmpty(zdr.getValue())){
return new HXResponse("9999","重汽推送制单人未设置!");
if (zdr == null || StrUtil.isEmpty(zdr.getValue())) {
return new HXResponse("9999", "重汽推送制单人未设置!");
}
// 调用重汽的推送接口
@ -1260,12 +1354,12 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer
CompanyserviceProp pushUrl = companyserviceProp.selectPropByKey(companyservice.getCompanyid(), "aisino_upload_url");
if (pushUrl == null || StrUtil.isEmpty(pushUrl.getValue())) {
return new HXResponse("9999","重汽推送机动车地址未设置!");
return new HXResponse("9999", "重汽推送机动车地址未设置!");
}
String retCode = null;
String retMsg = null;
try {
log.info("【机动车加密接口推送】请求内容:{}",paramMap);
log.info("【机动车加密接口推送】请求内容:{}", paramMap);
// String result = HttpUtil.post(pushUrl.getValue(), paramMap);
String result = HttpRequest.post(pushUrl.getValue())
.form(paramMap)//表单内容
@ -1276,7 +1370,7 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer
retCode = jsonObject.get("retCode") != null ? jsonObject.get("retCode").toString() : "";
retMsg = jsonObject.get("retMsg") != null ? jsonObject.get("retMsg").toString() : "";
} catch (Exception e) {
log.info("【机动车加密接口推送】超时,{}",e);
log.info("【机动车加密接口推送】超时,{}", e);
return new HXResponse("9999", "推送接口超时!");
}
// 重汽返回接口信息
@ -1293,13 +1387,12 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer
}
/**
* @author kk
* @date 17:42
* @param: [in]
* @return:
* 机动车加密导出-文件转化本地
*/
public static File stream2file (InputStream in) throws IOException {
* @author kk
* @date 17:42
* @param: [in]
* @return: 机动车加密导出-文件转化本地
*/
public static File stream2file(InputStream in) throws IOException {
final File tempFile = File.createTempFile(PREFIX, SUFFIX);
tempFile.deleteOnExit();
try (FileOutputStream out = new FileOutputStream(tempFile)) {

@ -119,6 +119,8 @@ public class JcskTest {
" }\n" +
"}";
/* order = "{ \n" +
" \"appkey\": \"935248bf224f6c8431cdc1969f029519\",\n" +
" \"async\": false,\n" +
@ -297,6 +299,15 @@ public class JcskTest {
" \"requestId\": \"20230816@385a441d-4095-4bf5-aad5-45da817d790c\",\n" +
" \"serviceId\": \"tycxjk\"\n" +
"}";
order = "{\n" +
" \"appkey\": \"935248bf224f6c8431cdc1969f029519\",\n" +
" \"dqbm\":\"beijing\",\n" +
" \"async\": false,\n" +
" \"bsrysfzjhm\":\"370404199302011453\",\n" +
" \"nsrsbh\": \"92370214MACAAEK16E\",\n" +
" \"requestId\": \"20230816@385a441d-4095-4bf5-aad5-45da817d790c\",\n" +
" \"serviceId\": \"tycxjk\"\n" +
"}";
//
System.out.println(order);

@ -12,10 +12,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="identity" column="identity" />
<result property="createTime" column="create_time" />
<result property="backMsg" column="back_msg" />
<result property="resultMsg" column="result_msg" />
<result property="resultCode" column="result_code" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectInvoiceBackVo">
select id, system_orderno, status, back_url, identity, create_time, back_msg from invoice_back
select id, system_orderno, status, back_url, identity, create_time, back_msg,result_msg,result_code,update_time from invoice_back
</sql>
<select id="selectInvoiceBackList" parameterType="com.jianshui.invoice.domain.InvoiceBack" resultMap="InvoiceBackResult">
@ -26,6 +29,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="backUrl != null and backUrl != ''"> and back_url = #{backUrl}</if>
<if test="identity != null and identity != ''"> and identity = #{identity}</if>
<if test="backMsg != null and backMsg != ''"> and back_msg = #{backMsg}</if>
<if test="resultMsg != null and resultMsg != ''"> and result_msg = #{resultMsg}</if>
<if test="resultCode != null and resultCode != ''"> and result_code = #{resultCode}</if>
<if test="updateTime != null and updateTime != ''"> and update_time = #{updateTime}</if>
</where>
</select>
@ -44,6 +50,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="identity != null">identity,</if>
<if test="createTime != null">create_time,</if>
<if test="backMsg != null">back_msg,</if>
<if test="resultMsg != null">result_msg,</if>
<if test="resultCode != null">result_code,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
@ -53,6 +62,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="identity != null">#{identity},</if>
<if test="createTime != null">#{createTime},</if>
<if test="backMsg != null">#{backMsg},</if>
<if test="resultMsg != null">#{resultMsg},</if>
<if test="resultCode != null">#{resultCode},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
@ -65,6 +77,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="identity != null">identity = #{identity},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="backMsg != null">back_msg = #{backMsg},</if>
<if test="resultMsg != null">result_msg = #{resultMsg},</if>
<if test="resultCode != null">resultCode = #{resultCode},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where id = #{id}
</update>