控制台-红字申请表下载接口

beta
kk 2 years ago
parent c6489bd069
commit 26f0df269d
  1. 330
      jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/RedinfoCopyAisinoVO.java
  2. 190
      jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/RedinfodetailAisinoVO.java
  3. 1
      jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/api/aisino/console/DownloadJdcDetailItemVO.java
  4. 2
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/request/AisinoInvoiceRequestAdapterImpl.java
  5. 85
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiZhongQiServiceImpl.java

@ -0,0 +1,330 @@
package com.jianshui.invoice.domain.vo;
import cn.hutool.core.annotation.Alias;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.jianshui.common.annotation.Excel;
import com.jianshui.invoice.domain.Redinfodetail;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* 红字信息表对象 redinfo转换专用
*
* @author Gong Quanlin
* @date 2022-03-29
*/
@Data
public class RedinfoCopyAisinoVO {
/**
* 本系统订单号
*/
@Excel(name = "本系统订单号")
private String systemOrderno;
/**
* 客户系统订单号
*/
@Excel(name = "客户系统订单号")
private String outTradeOrderno;
/**
* 流水号
*/
@Excel(name = "流水号")
private String fpqqlsh;
/**
* bill_info表的bill_id
*/
@Excel(name = "bill_info表的bill_id")
private Long billInfoId;
/**
* 信息表编号
*/
@Alias("ReqBillNo")
@Excel(name = "信息表编号")
private String redInfoNo;
/**
* 信息表状态
*/
@Alias("statusDM")
@Excel(name = "信息表状态")
private String redInfoStatus;
/**
* 信息表状态描述
*/
@Alias("statusMC")
@Excel(name = "信息表状态描述")
private String redInfoMessage;
/**
* 信息表类型
*/
@Alias("billType")
@Excel(name = "信息表类型")
private String redInfoType;
/**
* 原发票代码
*/
@Alias("typeCode")
@Excel(name = "原发票代码")
private String originFpdm;
/**
* 信息表特殊标识
*/
@Excel(name = "信息表特殊标识")
private String redInfoSpecFlag;
/**
* 原发票号码
*/
@Alias("invNo")
@Excel(name = "原发票号码")
private String originFphm;
/**
* 税种类别
*/
@Alias("szlb")
@Excel(name = "税种类别")
private String taxType;
/**
* 原发票开票日期
*/
@Alias("lzkprq")
@Excel(name = "原发票开票日期")
private String originKprq;
/**
* 多税率标志
*/
@Alias("isMutiRate")
@Excel(name = "多税率标志")
private String multTaxRate;
/**
* 填开日期
*/
@Alias("date")
@Excel(name = "填开日期")
private String billInputTime;
/**
* 购方名称
*/
@Alias("buyerName")
@Excel(name = "购方名称")
private String buyerName;
/**
* 购方税号
*/
@Alias("buyerTaxCode")
private String buyerTaxnum;
/**
* 销方名称
*/
@Alias("sellerName")
@Excel(name = "销方名称")
private String sellerName;
/**
* 销方税号
*/
@Alias("sellTaxCode")
@Excel(name = "销方税号")
private String sellerTaxnum;
/**
* 不含税金额
*/
@Alias("amount")
@Excel(name = "不含税金额")
private BigDecimal taxfreeamt;
/**
* 税额
*/
@Alias("tax")
@Excel(name = "税额")
private BigDecimal tax;
/**
* 含税金额
*/
@Excel(name = "含税金额")
private BigDecimal taxamt;
/**
* 申请说明
*/
@Alias("reqMemo")
@Excel(name = "申请说明")
private String applyRemark;
/**
* 申请表pdf 地址
*/
@Excel(name = "申请表pdf 地址")
private String pdfUrl;
/**
* 商品编码版本号
*/
@Alias("spbmbbh")
@Excel(name = "商品编码版本号")
private String bmbbh;
/**
* 营业税标志
*/
@Excel(name = "营业税标志")
private String businessTaxCode;
/**
* 申请时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "申请时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date applyTime;
/**
* 发票种类 invoice_type p电子增值税普通发票 c增值税普通发票 s 增值税专用发票 e 收购发票 f 收购发票 r增值税普通发票
*/
@Alias("lzfplxdm")
@Excel(name = "发票种类 invoice_type", readConverterExp = "p=电子增值税普通发票,c=增值税普通发票,s=,增=值税专用发票,e=,收=购发票,f=,收=购发票,r=增值税普通发票")
private String invoiceType;
/**
* 分机号
*/
@Excel(name = "分机号")
private String fjh;
/**
* 终端号
*/
@Excel(name = "终端号")
private String terminalNumber;
/**
* 设备编号
*/
@Excel(name = "设备编号")
private String jspbh;
/**
* 所属月份
*/
@Excel(name = "所属月份")
private String ssyf;
/**
* 税率
*/
@Alias("taxRate")
@Excel(name = "税率")
private BigDecimal taxrate;
/**
* 申请选择
*/
@Excel(name = "申请选择")
private String sqxz;
/**
* 经办人
*/
@Excel(name = "经办人")
private String jbr;
/**
* 申请方税号
*/
@Excel(name = "申请方税号")
private String reqnsrsbh;
/**
* 成品油标志
*/
@Excel(name = "成品油标志")
private String productOilFlag;
/**
* 服务公司
*/
@Excel(name = "服务公司")
private String serviceSupplierKey;
/**
* 申请类别
*/
@Alias("sqly")
@Excel(name = "申请类别")
private Integer sqlb; // 申请类别,0为销方申请,1为购方申请
@Excel(name = "回调地址")
private String callbackUrl;
/**
* 红字信息表详情信息
*/
@TableField(exist = false)
private List<RedinfodetailAisinoVO> redinfodetailList;
@TableField(exist = false)
@JsonIgnore
private String searchValue;
@TableField(exist = false)
@JsonIgnore
private String remark;
/** 数科新加字段**/
@Alias("hzfphm")
@Excel(name = "红字发票号码")
private String fphm;
@Alias("hzkprq")
@Excel(name = "红字发票开票日期")
private String kprq;
@Alias("hzfpxxqrdid")
@Excel(name = "红字发票信息确认单id")
private String hzfpxxqrdid;
@Alias("hzhjje")
@Excel(name = "红字合计金额")
private String hzhjje;
@Alias("hzhjse")
@Excel(name = "红字合计税额")
private String hzhjse;
@Alias("ykjhzfpbz")
@Excel(name = "是否开具红字发票")
private String ykjhzfpbz;
}

@ -0,0 +1,190 @@
package com.jianshui.invoice.domain.vo;
import cn.hutool.core.annotation.Alias;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.jianshui.common.annotation.Excel;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Map;
/**
* 红字信息表详情对象 redinfodetail
*
* @author Gong Quanlin
* @date 2022-03-29
*/
@Data
public class RedinfodetailAisinoVO {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
private Long id;
/**
* redinfo表的id
*/
@Excel(name = "redinfo表的id")
private Long redinfoId;
/**
* 申请单号
*/
@Excel(name = "申请单号")
private String billno;
/**
* $column.columnComment
*/
@Excel(name = "序号", readConverterExp = "$column.readConverterExp()")
private Integer index;
/**
* 商品名称
*/
@Excel(name = "商品名称")
private String goodName;
@Alias("goodsUnit")
/**
* 单位
*/
@Excel(name = "单位")
private String unit;
/**
* 规格型号
*/
@Alias("goodsGgxh")
@Excel(name = "规格型号")
private String spec;
/**
* 商品数量
*/
@Alias("goodsNum")
@Excel(name = "商品数量")
private BigDecimal num;
/**
* 商品单价不含税
*/
@Alias("goodsPrice")
@Excel(name = "商品单价,不含税")
private BigDecimal price;
/**
* 不含税金额
*/
@Alias("goodsJE")
@Excel(name = "不含税金额")
private BigDecimal taxfreeamt;
/**
* 税率
*/
@Alias("goodsTaxRate")
@Excel(name = "税率")
private BigDecimal taxrate;
/**
* 税额
*/
@Alias("goodsSE")
@Excel(name = "税额")
private BigDecimal tax;
/**
* 含税金额
*/
@Excel(name = "含税金额")
private BigDecimal taxamt;
/**
* 税收分类编码
*/
@Excel(name = "税收分类编码")
private String spbm;
/**
* 商品编码版本号
*/
@Excel(name = "商品编码版本号")
private String bmbbh;
/**
* 优惠政策标识0不使用1使用
*/
@Alias("syyhzcbz")
@Excel(name = "优惠政策标识,0不使用,1使用")
private Integer yhzcbs;
/**
* 增值税特殊管理优惠政策表示名称
*/
@Excel(name = "增值税特殊管理", readConverterExp = "优=惠政策表示名称")
private String zzstsgl;
/**
* 零税率标识1=免税,2=不征税,3=普通零税率
*/
@Alias("LSLBZ")
@Excel(name = "零税率标识,1=免税,2=不征税,3=普通零税率")
private String lslbs;
/**
* 商品编码简称
*/
@Excel(name = "商品编码简称")
private String goodAbbreviation;
/**
* 发票行性质
*/
@Excel(name = "发票行性质")
private Integer fphxz;
/**
* 扣除额
*/
@Excel(name = "扣除额")
private BigDecimal kce;
/**
* 修改时间
*/
@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")
private String withTaxFlag;
// 含税单价
@TableField(exist = false)
@JsonIgnore
private String priceWithTax;
@TableField(exist = false)
@JsonIgnore
private String searchValue;
@TableField(exist = false)
@JsonIgnore
private String remark;
@TableField(exist = false)
@JsonIgnore
private Map<String, Object> params;
}

@ -1,5 +1,6 @@
package com.jianshui.invoice.domain.vo.api.aisino.console;
import cn.hutool.core.annotation.Alias;
import lombok.Data;
/**

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

@ -32,7 +32,10 @@ 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.RedinfoCopyAisinoVO;
import com.jianshui.invoice.domain.vo.RedinfodetailAisinoVO;
import com.jianshui.invoice.domain.vo.api.aisino.console.AisinoConsoleInvoiceAddVO;
import com.jianshui.invoice.domain.vo.api.aisino.console.DownloadJdcDetailItemVO;
import com.jianshui.invoice.domain.vo.api.aisino.console.DownloadJdcVO;
import com.jianshui.invoice.mapper.*;
import com.jianshui.invoice.service.IInvoiceApiService;
@ -924,33 +927,46 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer
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() : "";
// 返回结果处理
if (!StringUtils.equals("0", retcode)) {
if(StrUtil.isNotEmpty(retdata)){
// 返回结果解析。
if(retdata.indexOf("<DATA>") != -1 && retdata.indexOf("</DATA>") != -1){
System.out.println("存在");
String data = retdata.substring(retdata.indexOf("<DATA>") + 6,retdata.indexOf("</DATA>"));
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();
cn.hutool.json.JSONArray jsonArray = JSONUtil.parseArray(RedInvReqBill);
// 拿到最终报文
List<DownloadJdcVO> downloadJdcVOList = BeanUtil.copyToList(jsonArray,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);
// TODO: 2023/10/28 返回结果待解析。
/*if(sss.indexOf("<DATA>") != -1 && sss.indexOf("</DATA>") != -1){
System.out.println("存在");
String data = sss.substring(sss.indexOf("<DATA>") + 6,sss.indexOf("</DATA>"));
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();
cn.hutool.json.JSONArray jsonArray = JSONUtil.parseArray(RedInvReqBill);
List<DownloadJdcVO> downloadJdcVOList = BeanUtil.copyToList(jsonArray,DownloadJdcVO.class);
System.out.println(jsonArray);
}
}
System.out.println(map);
}
}*/
}
return new HXResponse("9999",retmsg);
}else{
@ -958,7 +974,34 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer
}
}
/**
* @author kk
* @date 15:25
* @param: [downloadJdcVOList]
* @return:
* 红字信息表下载报文转换
*/
private List<Redinfo> parseRedinfo(List<DownloadJdcVO> downloadJdcVOList) {
List<Redinfo> 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);
}
return redinfoList;
}
/**

Loading…
Cancel
Save