diff --git a/jianshui-invoice-all/src/main/java/com/jianshui/invoiceall/utils/GenVoCodeTest.java b/jianshui-invoice-all/src/main/java/com/jianshui/invoiceall/utils/GenVoCodeTest.java index e5750b5..a5ab651 100644 --- a/jianshui-invoice-all/src/main/java/com/jianshui/invoiceall/utils/GenVoCodeTest.java +++ b/jianshui-invoice-all/src/main/java/com/jianshui/invoiceall/utils/GenVoCodeTest.java @@ -16,10 +16,25 @@ public class GenVoCodeTest { public static void main(String[] args) { String json = "{\n" + - " \"qrlx\": \"确认类型\",\n" + - " \"hzfpxxqrdid\": \"红字发票信息确认单id\",\n" + - " \"xsfnsrsbh\": \"销方纳税人识别号\"\n" + - " }"; + " \"chyydm\": \"冲红原因代码\",\n" + + " \"fplydm\": \"发票来源代码\",\n" + + " \"gmfmc\": \"购买方名称\",\n" + + " \"gmfnsrsbh\": \"购买方税号\",\n" + + " \"hzfphm\": \"红字发票号码\",\n" + + " \"hzfpxxqrdbh\": \"红字发票信息确认单编号\",\n" + + " \"hzfpxxqrdid\": \"红字发票信息确认单id\",\n" + + " \"hzfpxxqrdZtdm\": \"红字发票信息确认单状态代码\",\n" + + " \"hzhjje\": \"红字合计金额\",\n" + + " \"hzhjse\": \"红字合计税额\",\n" + + " \"hzkprq\": \"红字开票日期\",\n" + + " \"lzfphm\": \"蓝字发票号码\",\n" + + " \"lzfplxdm\": \"蓝字发票类型代码\",\n" + + " \"lzkprq\": \"蓝字开票日期\",\n" + + " \"lrrq\": \"录入日期\",\n" + + " \"xsfmc\": \"销售方名称\",\n" + + " \"xsfnsrsbh\": \"销售方纳税人识别号\",\n" + + " \"ykjhzfpbz\": \"是否开具红字发票\"\n" + + " }"; JSONObject jsonObject = JSONUtil.parseObj(json); diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/jcsk/RedInvoiceQueryAllTWOVO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/jcsk/RedInvoiceQueryAllTWOVO.java new file mode 100644 index 0000000..95cdf1b --- /dev/null +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/jcsk/RedInvoiceQueryAllTWOVO.java @@ -0,0 +1,29 @@ +package com.jianshui.invoice.domain.vo.jcsk; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 红字发票查询外部VO + */ +@Data +public class RedInvoiceQueryAllTWOVO { + + + private List fpList; + + @ApiModelProperty(value = "页数") + private Integer pageNumber; + + @ApiModelProperty(value = "每页条数") + private Integer pageSize; + + @ApiModelProperty(value = "总条数") + private Integer total; + + + + +} diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/jcsk/RedInvoiceQueryTWOVO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/jcsk/RedInvoiceQueryTWOVO.java new file mode 100644 index 0000000..08b7006 --- /dev/null +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/jcsk/RedInvoiceQueryTWOVO.java @@ -0,0 +1,71 @@ +package com.jianshui.invoice.domain.vo.jcsk; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 红字发票查询VO + */ +@Data +public class RedInvoiceQueryTWOVO { + + + @ApiModelProperty(value = "冲红原因代码") + private String chyydm; + + @ApiModelProperty(value = "发票来源代码") + private String fplydm; + + @ApiModelProperty(value = "购买方名称") + private String gmfmc; + + @ApiModelProperty(value = "购买方税号") + private String gmfnsrsbh; + + @ApiModelProperty(value = "红字发票号码") + private String hzfphm; + + @ApiModelProperty(value = "红字发票信息确认单编号") + private String hzfpxxqrdbh; + + @ApiModelProperty(value = "红字发票信息确认单id") + private String hzfpxxqrdid; + + @ApiModelProperty(value = "红字发票信息确认单状态代码") + private String hzfpxxqrdZtdm; + + @ApiModelProperty(value = "红字合计金额") + private String hzhjje; + + @ApiModelProperty(value = "红字合计税额") + private String hzhjse; + + @ApiModelProperty(value = "红字开票日期") + private String hzkprq; + + @ApiModelProperty(value = "蓝字发票号码") + private String lzfphm; + + @ApiModelProperty(value = "蓝字发票类型代码") + private String lzfplxdm; + + @ApiModelProperty(value = "蓝字开票日期") + private String lzkprq; + + @ApiModelProperty(value = "录入日期") + private String lrrq; + + @ApiModelProperty(value = "销售方名称") + private String xsfmc; + + @ApiModelProperty(value = "销售方纳税人识别号") + private String xsfnsrsbh; + + @ApiModelProperty(value = "是否开具红字发票") + private String ykjhzfpbz; + + + + + +} diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/jcsk/RedinfoCopyVO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/jcsk/RedinfoCopyVO.java new file mode 100644 index 0000000..494e8da --- /dev/null +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/vo/jcsk/RedinfoCopyVO.java @@ -0,0 +1,325 @@ +package com.jianshui.invoice.domain.vo.jcsk; + +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.common.core.domain.BaseEntity; +import com.jianshui.invoice.domain.Redinfodetail; +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; + +/** + * 红字信息表对象 redinfo转换专用 + * + * @author Gong Quanlin + * @date 2022-03-29 + */ + +@Data +public class RedinfoCopyVO{ + + + /** + * 本系统订单号 + */ + @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("hzfpxxqrdbh") + @Excel(name = "信息表编号") + private String redInfoNo; + + /** + * 信息表状态 + */ + @Alias("hzfpxxqrdZtdm") + @Excel(name = "信息表状态") + private String redInfoStatus; + + /** + * 信息表状态描述 + */ + @Excel(name = "信息表状态描述") + private String redInfoMessage; + + /** + * 信息表类型 + */ + @Excel(name = "信息表类型") + private String redInfoType; + + /** + * 原发票代码 + */ + @Excel(name = "原发票代码") + private String originFpdm; + + /** + * 信息表特殊标识 + */ + @Excel(name = "信息表特殊标识") + private String redInfoSpecFlag; + + /** + * 原发票号码 + */ + @Alias("lzfphm") + @Excel(name = "原发票号码") + private String originFphm; + + /** + * 税种类别 + */ + @Excel(name = "税种类别") + private String taxType; + + /** + * 原发票开票日期 + */ + @Alias("lzkprq") + @Excel(name = "原发票开票日期") + private String originKprq; + + /** + * 多税率标志 + */ + @Excel(name = "多税率标志") + private String multTaxRate; + + /** + * 填开日期 + */ + @Alias("lrrq") + @Excel(name = "填开日期") + private String billInputTime; + + /** + * 购方名称 + */ + @Alias("gmfmc") + @Excel(name = "购方名称") + private String buyerName; + + /** + * 购方税号 + */ + @Alias("gmfnsrsbh") + private String buyerTaxnum; + + /** + * 销方名称 + */ + @Alias("xsfmc") + @Excel(name = "销方名称") + private String sellerName; + + /** + * 销方税号 + */ + @Alias("xsfnsrsbh") + @Excel(name = "销方税号") + private String sellerTaxnum; + + /** + * 不含税金额 + */ + @Excel(name = "不含税金额") + private BigDecimal taxfreeamt; + + /** + * 税额 + */ + @Excel(name = "税额") + private BigDecimal tax; + + /** + * 含税金额 + */ + @Excel(name = "含税金额") + private BigDecimal taxamt; + + /** + * 申请说明 + */ + @Alias("chyydm") + @Excel(name = "申请说明") + private String applyRemark; + + /** + * 申请表pdf 地址 + */ + @Excel(name = "申请表pdf 地址") + private String pdfUrl; + + /** + * 商品编码版本号 + */ + @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; + + /** + * 税率 + */ + @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 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; + + + + + + +} diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/JcskInvoiceApiServiceImpl.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/JcskInvoiceApiServiceImpl.java index eb056a3..8ac5936 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/JcskInvoiceApiServiceImpl.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/JcskInvoiceApiServiceImpl.java @@ -1,4 +1,5 @@ package com.jianshui.invoice.service.impl.api; +import java.util.Date; import com.jianshui.invoice.domain.dto.api.jcsk.*; import cn.hutool.core.bean.BeanUtil; @@ -12,7 +13,6 @@ import com.jianshui.common.core.domain.AjaxResult; import com.jianshui.common.core.domain.entity.Companyservice; import com.jianshui.common.enums.ErrorCode; import com.jianshui.common.exception.jianshui.JianshuiParamErrorException; -import com.jianshui.common.exception.jianshui.JianshuiServiceException; import com.jianshui.common.utils.StringUtils; import com.jianshui.common.utils.TimeUtil; import com.jianshui.common.utils.ValidateUtils; @@ -27,8 +27,7 @@ import com.jianshui.invoice.domain.dto.api.jcsk.add.InvoiceAllAddInfoTwoDTO; import com.jianshui.invoice.domain.dto.api.jcsk.add.InvoiceAllAddTwoDTO; import com.jianshui.invoice.domain.dto.api.jcsk.add.InvoiceAllAddmxListTwoDTO; import com.jianshui.invoice.domain.dto.api.jcsk.red.AddRedInvoiceTwoDTO; -import com.jianshui.invoice.domain.vo.jcsk.AddInvoiceTWOVO; -import com.jianshui.invoice.domain.vo.jcsk.AddRedInvoiceTWOVO; +import com.jianshui.invoice.domain.vo.jcsk.*; import com.jianshui.invoice.mapper.*; import com.jianshui.invoice.service.IInvoiceApiService; import com.jianshui.invoice.utils.aisino.console.AisinoConsoleUtil; @@ -38,6 +37,7 @@ import com.jianshui.system.mapper.InvoiceAllApiLogMapper; import com.jianshui.system.mapper.InvoiceAllYhdjMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; @@ -466,11 +466,12 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { // TODO: 后期存库 }else if (WebServiceConstant.CXHZFPXXQRD.equals(finalServiceId)) { // 查询红字信息表 - // TODO: 2023/4/4 返回报文处理 - - - - + + RedInvoiceQueryAllTWOVO redInvoiceQueryAllTWOVO = BeanUtil.copyProperties(data, RedInvoiceQueryAllTWOVO.class); + // 返回报文转换 + List resultDownload = parseRedINFO(redInvoiceQueryAllTWOVO); + // TODO: 2023/4/6 数据存储 + response.put("data", resultDownload); }else if (WebServiceConstant.SHHZFPXXQRD.equals(finalServiceId)) { // 审核红字信息表 // TODO: 后期存库 @@ -491,6 +492,39 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { } + /** + * 数科报文=》简税报文转换 + * @param redInvoiceQueryAllTWOVO + * @return + */ + private List parseRedINFO(RedInvoiceQueryAllTWOVO redInvoiceQueryAllTWOVO) { + List redinfos = new ArrayList<>(); + + // 页数 + int pageNumber = redInvoiceQueryAllTWOVO.getPageNumber(); + // 每页条数 + int pageSize = redInvoiceQueryAllTWOVO.getPageSize(); + // 总条数 + int total = redInvoiceQueryAllTWOVO.getTotal();; + //发票集合 + List redInvoiceQueryTWOVOS = redInvoiceQueryAllTWOVO.getFpList(); + + for (RedInvoiceQueryTWOVO redInvoiceQueryTWOVO : redInvoiceQueryTWOVOS) { + + RedinfoCopyVO redinfoVO = BeanUtil.copyProperties(redInvoiceQueryTWOVO,RedinfoCopyVO.class); + + Redinfo redinfo = BeanUtil.copyProperties(JSONUtil.parseObj(redinfoVO),Redinfo.class); + + // TODO: 2023/4/6 明细接口数科还没对 + // redinfo.setRedinfodetailList(null); + + redinfos.add(redinfo); + } + + return redinfos; + } + + /** * 发票批量查询 *