中交建-销项合并测试:蓝字发票开具报文处理

beta-enc
dongxiaoke 2 years ago
parent 63857fd37a
commit bb61ef1838
  1. 335
      jianshui-invoice/src/main/java/com/jianshui/invoice/domain/BillInfoDTO.java
  2. 9
      jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/add/InvoiceAllAddInfoTwoDTO.java
  3. 1
      jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/add/InvoiceAllAddTwoDTO.java
  4. 3
      jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/add/InvoiceAllAddmxListTwoDTO.java
  5. 17
      jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/JcskInvoiceApiServiceImpl.java

@ -0,0 +1,335 @@
package com.jianshui.invoice.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jianshui.common.annotation.Excel;
import com.jianshui.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 开票信息对象 bill_info
*
* @author Gong Quanlin
* @date 2022-03-27
*/
@Data
public class BillInfoDTO
{
/** 本系统订单号 */
@Excel(name = "本系统订单号")
private String systemOrderno;
/** 客户系统订单号 */
@Excel(name = "客户系统订单号")
private String outTradeOrderno;
/** 流水号 */
@Excel(name = "流水号")
private String fpqqlsh;
/** 发票种类 */
@Excel(name = "发票种类")
private String invoiceType;
/** 购方名称 */
@Excel(name = "购方名称")
private String buyerName;
/** 购方税号 */
@Excel(name = "购方税号")
private String buyerTaxnum;
/** 购方地址 */
@Excel(name = "购方地址")
private String buyerAddress;
/** 购方电话 */
@Excel(name = "购方电话")
private String buyerTelephone;
/** 购货方开户行名称 */
@Excel(name = "购货方开户行名称")
private String buyerBank;
/** 购方开户行及账户 */
@Excel(name = "购方开户行及账户")
private String buyerAccount;
/** 购方邮箱 */
@Excel(name = "购方邮箱")
private String buyerEmail;
/** 购方联系电话 */
@Excel(name = "购方联系电话")
private String buyerPhone;
/** 销方名称 */
@Excel(name = "销方名称")
private String sellerName;
/** 销方税号 */
@Excel(name = "销方税号")
private String sellerTaxnum;
/** 销方地址 */
@Excel(name = "销方地址")
private String sellerAddress;
/** 销方电话 */
@Excel(name = "销方电话")
private String sellerTelephone;
/** 销方开户行及账户 */
@Excel(name = "销方开户行及账户")
private String sellerAccount;
/** 备注 */
@Excel(name = "备注")
private String message;
/** 销方开户行名称 */
@Excel(name = "销方开户行名称")
private String sellerBank;
/** 开票人 */
@Excel(name = "开票人")
private String clerk;
/** 收款人 */
@Excel(name = "收款人")
private String payee;
/** 复核人 */
@Excel(name = "复核人")
private String checker;
/** 红字信息表编号 */
@Excel(name = "红字信息表编号")
private String redInvoiceInfoCode;
/** 开票分机号 */
@Excel(name = "开票分机号")
private String fjh;
/** 开票终端号 */
@Excel(name = "开票终端号")
private String terminalNumber;
/** 开票类型 */
@Excel(name = "开票类型:1正票 2红票")
private String kptype;
/** 原billInfo订单号 */
@Excel(name = "原billInfo订单号")
private String originSystemOrderno;
/** 编码表编号 */
@Excel(name = "编码表编号")
private String bmbbh;
/** 原发票代码 */
@Excel(name = "原发票代码")
private String originFpdm;
/** 原发票号码 */
@Excel(name = "原发票号码")
private String originFphm;
/** 推送方式 */
@Excel(name = "推送方式")
private String tsfs;
/** 清单标志 */
@Excel(name = "清单标志")
private String qdbz;
/** 清单项目名称 */
@Excel(name = "清单项目名称")
private String qdxmmc;
/** 代开标志 */
@Excel(name = "代开标志")
private String dkbz;
/** 成品油标志 */
@Excel(name = "成品油标志")
private String cpybz;
/** 开票状态 */
@Excel(name = "开票状态")
private Integer state;
/** 订单来源 */
@Excel(name = "订单来源")
private String source;
/** 服务公司 */
@Excel(name = "服务公司")
private String serviceSupplierKey;
/** 单据类型 */
@Excel(name = "单据类型")
private String billType;
/** 业务留存字段 */
@Excel(name = "业务留存字段")
private String businessRemark;
/** 不含税金额 */
@Excel(name = "不含税金额")
private BigDecimal taxfreeamt;
/** 开票时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "开票时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date invoicedTime;
/** 税额 */
@Excel(name = "税额")
private BigDecimal tax;
/** 含税金额 */
@Excel(name = "含税金额")
private BigDecimal taxamt;
/** 删除标志 */
private Date deletedTime;
/** 发票明细信息 */
@TableField(exist = false)
private List<BillDetail> billDetailList;
@TableField(exist = false)
private String searchValue;
@TableField(exist = false)
private String remark;
@TableField(exist = false)
private Map<String, Object> params;
/** 回调地址 */
@Excel(name = "回调地址")
private String callbackUrl;
/** 经办人姓名 */
private String jbrxm;
/** 经办人证件号码 */
private String jbrzjhm;
/** 经办人证件种类代码 */
private String jbrzjzldm;
/** 经办人纳税人识别号 */
private String jrznsrsbh;
/** 价税合计 */
private String jshj;
/** 特定要素类型代码 */
private String tdyslxdm;
/** tdywxx金财数科字段 */
private String tdywxx;
/** ext金财数科字段 */
private String ext;
/** 全电新增字段 **/
private String async;
// TODO: 2023/3/30 后期看看需不需要这部分存库
@TableField(exist=false)
@ApiModelProperty(value = "办税人身份证号")
private String bsrysfzjhm;
@TableField(exist=false)
@ApiModelProperty(value = "*地区编码(参考码表)")
private String dqbm;
@TableField(exist=false)
@ApiModelProperty(value = "lzfpkj")
private String serviceId;
@TableField(exist=false)
@ApiModelProperty(value = "放弃享受减按1%征收率原因")
private String kjlx;
@TableField(exist=false)
@ApiModelProperty(value = "出行人")
private String cxr;
@TableField(exist=false)
@ApiModelProperty(value = "出行人证件类型")
private String cxrzjlx;
@TableField(exist=false)
@ApiModelProperty(value = "出行人证件号码")
private String cxrzjhm;
@TableField(exist=false)
@ApiModelProperty(value = "出行日期")
private String cxrq;
@TableField(exist=false)
@ApiModelProperty(value = "出发地")
private String cfd;
@TableField(exist=false)
@ApiModelProperty(value = "到达地")
private String ddd;
@TableField(exist=false)
@ApiModelProperty(value = "交通工具类型")
private String jtgjlx;
@TableField(exist=false)
@ApiModelProperty(value = "等级")
private String dengj;
@TableField(exist=false)
@ApiModelProperty(value = "货物运输服务")
private String hwysfw;
@TableField(exist=false)
@ApiModelProperty(value = "起运地")
private String qyd;
@TableField(exist=false)
@ApiModelProperty(value = "运输工具号牌")
private String ysgjhp;
@TableField(exist=false)
@ApiModelProperty(value = "运输工具种类")
private String ysgjzl;
@TableField(exist=false)
@ApiModelProperty(value = "运输货物名称")
private String yshwmc;
@TableField(exist=false)
@ApiModelProperty(value = "含税标志 1-不含税 2-含税")
private String hsbz;
@TableField(exist=false)
@ApiModelProperty(value = "放弃享受减按1%征收率原因")
private String kjly;
@TableField(exist=false)
@ApiModelProperty(value = "附加信息名称")
private String fjxxmc;
@TableField(exist=false)
@ApiModelProperty(value = "附加信息内容")
private String fjxxnr;
}

@ -36,20 +36,17 @@ public class InvoiceAllAddInfoTwoDTO {
/** address*/
@Alias("buyerAddress")
@NotEmpty
@ApiModelProperty(value = "购买方地址")
private String gmfdz;
/** buyerBank*/
@Alias("buyerBank")
@NotEmpty
@ApiModelProperty(value = "购买方开户行")
private String gmfkhh;
/** phone*/
@Alias("buyerPhone")
@NotEmpty
@ApiModelProperty(value = "购买方联系电话")
private String gmflxdh;
@ -61,13 +58,11 @@ public class InvoiceAllAddInfoTwoDTO {
/** taxnum*/
@Alias("buyerTaxnum")
@NotEmpty
@ApiModelProperty(value = "购买方税号")
private String gmfnsrsbh;
/** fpqqlsh*/
@Alias("buyerAccount")
@NotEmpty
@ApiModelProperty(value = "购买方银行账号")
private String gmfyhzh;
@ -84,19 +79,15 @@ public class InvoiceAllAddInfoTwoDTO {
@ApiModelProperty(value = "含税标志 1-不含税 2-含税")
private String hsbz;
@NotEmpty
@ApiModelProperty(value = "经办人姓名")
private String jbrxm;
@NotEmpty
@ApiModelProperty(value = "经办人证件号码")
private String jbrzjhm;
@NotEmpty
@ApiModelProperty(value = "经办人证件种类代码")
private String jbrzjzldm;
@NotEmpty
@ApiModelProperty(value = "经办人纳税人识别号")
private String jrznsrsbh;

@ -31,7 +31,6 @@ public class InvoiceAllAddTwoDTO {
@Alias("saletaxnum")
private String nsrsbh;
@NotEmpty
@ApiModelProperty(value = "lzfpkj")
private String serviceId;

@ -16,13 +16,11 @@ public class InvoiceAllAddmxListTwoDTO {
/** */
@Alias("price")
@NotEmpty
@ApiModelProperty(value = "单价")
private String dj;
/** */
@Alias("unit")
@NotEmpty
@ApiModelProperty(value = "单位")
private String dw;
@ -55,7 +53,6 @@ public class InvoiceAllAddmxListTwoDTO {
/** */
@Alias("num")
@NotEmpty
@ApiModelProperty(value = "商品数量")
private String spsl;

@ -1,6 +1,7 @@
package com.jianshui.invoice.service.impl.api;
import java.util.Date;
import cn.hutool.core.bean.copier.CopyOptions;
import com.jianshui.invoice.domain.dto.api.*;
import com.jianshui.invoice.domain.dto.api.jcsk.*;
@ -109,20 +110,20 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService {
queryDTO.setNsrsbh(invoiceAllYhdj.getNsrsbh());
queryDTO.setRequestId("tycxjk");
ValidateUtils.validate(queryDTO);
// 开票实体转换,校验
InvoiceAllAddTwoDTO invoiceAllAddTwoDTO = BeanUtil.copyProperties(billInfo, InvoiceAllAddTwoDTO.class);
invoiceAllAddTwoDTO.setDqbm(queryDTO.getDqbm());
invoiceAllAddTwoDTO.setBsrysfzjhm(queryDTO.getBsrysfzjhm());
invoiceAllAddTwoDTO.setNsrsbh(queryDTO.getNsrsbh());
invoiceAllAddTwoDTO.setAsync("true");
ValidateUtils.validate(invoiceAllAddTwoDTO);
InvoiceAllAddInfoTwoDTO invoiceAllAddInfoTwoDTO = BeanUtil.copyProperties(billInfo, InvoiceAllAddInfoTwoDTO.class);
ValidateUtils.validate(invoiceAllAddInfoTwoDTO);
// 忽略明细属性
InvoiceAllAddInfoTwoDTO invoiceAllAddInfoTwoDTO = BeanUtil.copyProperties(billInfo, InvoiceAllAddInfoTwoDTO.class
,"fjxxList","mxList","tdywxx","ext");
// TODO: 2023/4/24 明细处理 必填非必填对应
ValidateUtils.validate(invoiceAllAddInfoTwoDTO);
// 明细集合
List<InvoiceAllAddmxListTwoDTO> mxList = BeanUtil.copyToList(billInfo.getBillDetailList(), InvoiceAllAddmxListTwoDTO.class);
@ -133,6 +134,10 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService {
ValidateUtils.validate(addmxListDTO);
}
invoiceAllAddInfoTwoDTO.setMxList(mxList);
invoiceAllAddTwoDTO.setJsonData(invoiceAllAddInfoTwoDTO);
// 报文转换存储
billInfo.setCompanyId(companyservice.getCompanyid());
billInfo.setServiceSupplierKey("JCSK");

Loading…
Cancel
Save