diff --git a/jianshui-invoice-all/src/main/java/com/jianshui/invoiceall/service/impl/InvoiceAllImpl.java b/jianshui-invoice-all/src/main/java/com/jianshui/invoiceall/service/impl/InvoiceAllImpl.java index c0b8890..9b41eb9 100644 --- a/jianshui-invoice-all/src/main/java/com/jianshui/invoiceall/service/impl/InvoiceAllImpl.java +++ b/jianshui-invoice-all/src/main/java/com/jianshui/invoiceall/service/impl/InvoiceAllImpl.java @@ -833,9 +833,9 @@ public class InvoiceAllImpl implements IInvoiceAll { map.put("08", "b"); //增值税电子专用发票 08 map.put("87", "j"); //机动车发票 87 map.put("88", "u"); //二手车发票 88 - // TODO-kk: 2023/1/16 这个命名是根据什么 + map.put("82", "q"); //全电普票 - map.put("81", "q"); //全电专票 + map.put("81", "r"); //全电专票 if (jcsk2js) { String resp = map.get(invoiceType); return StringUtils.isNotEmpty(resp) ? resp : invoiceType; diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/BillInfo.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/BillInfo.java index 8b7888b..c641efe 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/BillInfo.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/BillInfo.java @@ -205,7 +205,7 @@ public class BillInfo extends BaseEntity @Excel(name = "税额") private BigDecimal tax; - /** 含税金额 */ + /** 含税金额 =》 数科 hjje */ @Excel(name = "含税金额") private BigDecimal taxamt; diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/add/InvoiceAllAddInfoTwoDTO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/add/InvoiceAllAddInfoTwoDTO.java index 6a4ad51..f8a2d10 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/add/InvoiceAllAddInfoTwoDTO.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/add/InvoiceAllAddInfoTwoDTO.java @@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; import java.util.List; /** @@ -66,13 +68,15 @@ public class InvoiceAllAddInfoTwoDTO { @ApiModelProperty(value = "购买方银行账号") private String gmfyhzh; - @NotEmpty + @Alias("taxamt") + @NotNull @ApiModelProperty(value = "合计金额") - private String hjje; + private BigDecimal hjje; - @NotEmpty + @Alias("tax") + @NotNull @ApiModelProperty(value = "合计税额") - private String hjse; + private BigDecimal hjse; /** hsbz*/ @NotEmpty diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/add/InvoiceAllAddmxListTwoDTO.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/add/InvoiceAllAddmxListTwoDTO.java index c02f3a0..94b324e 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/add/InvoiceAllAddmxListTwoDTO.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/domain/dto/api/jcsk/add/InvoiceAllAddmxListTwoDTO.java @@ -35,6 +35,7 @@ public class InvoiceAllAddmxListTwoDTO { private String ggxh; /** */ + @Alias("taxamt") @NotEmpty @ApiModelProperty(value = "金额") private String je; diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiServiceImpl.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiServiceImpl.java index 11f2248..6cf9294 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiServiceImpl.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiServiceImpl.java @@ -836,7 +836,7 @@ public class AisinoConsoleInvoiceApiServiceImpl implements IInvoiceApiService { String retcode = resultJSON.get("retcode") != null ? resultJSON.get("retcode").toString() : ""; String retmsg = resultJSON.get("retmsg") != null ? resultJSON.get("retmsg").toString() : ""; if("5011".equals(retcode)){ - return new HXResponse("发票打印成功,发票号码="+printInvoiceDTO.getInfoNumber()+",发票代码="+printInvoiceDTO.getInfoTypeCode()); + return new HXResponse("0000","发票打印成功,发票号码="+printInvoiceDTO.getInfoNumber()+",发票代码="+printInvoiceDTO.getInfoTypeCode()); }else{ return new HXResponse("发票打印失败,发票号码="+printInvoiceDTO.getInfoNumber()+",发票代码="+printInvoiceDTO.getInfoTypeCode()+",原因="+retmsg); } 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 f25f3a3..265eebb 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 @@ -2,6 +2,8 @@ package com.jianshui.invoice.service.impl.api; import java.util.Date; import cn.hutool.core.bean.copier.CopyOptions; +import cn.hutool.core.map.MapUtil; +import com.jianshui.common.utils.BeanToMapUtils; import com.jianshui.invoice.domain.dto.api.*; import com.jianshui.invoice.domain.dto.api.jcsk.*; @@ -121,7 +123,7 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { // 忽略明细属性 InvoiceAllAddInfoTwoDTO invoiceAllAddInfoTwoDTO = BeanUtil.copyProperties(billInfo, InvoiceAllAddInfoTwoDTO.class ,"fjxxList","mxList","tdywxx","ext"); - // TODO: 2023/4/24 明细处理 必填非必填对应 + // 发票类型处理 ValidateUtils.validate(invoiceAllAddInfoTwoDTO); @@ -141,6 +143,17 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { // 报文转换存储 billInfo.setCompanyId(companyservice.getCompanyid()); billInfo.setServiceSupplierKey("JCSK"); + String invoiceType = getInvoiceType(billInfo.getInvoiceType(),true); + if(StrUtil.isEmpty(invoiceType)){ + return new HXResponse("发票类型代码不存在!"); + } + billInfo.setInvoiceType(invoiceType); + String systemOrderno = IdUtils.randomSystemOrderno(); + billInfo.setSystemOrderno(systemOrderno); + billInfo.setOutTradeOrderno(systemOrderno); + if(BeanUtil.isEmpty(billInfo.getClerk())){ + billInfo.setClerk(""); + } try { int resBillInfo = billInfoMapper.insertBillInfo(billInfo); if (resBillInfo > 0) { @@ -151,6 +164,11 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { } //数据库存储 List billDetailList = billInfo.getBillDetailList(); + Long index = 0L; + for (BillDetail billDetail : billDetailList) { + billDetail.setBillInfoId(billInfoID); + billDetail.setIndex(++index); + } int billDetailResult = billInfoMapper.batchBillDetail(billDetailList); } } catch (Exception e) { @@ -162,11 +180,10 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { cn.hutool.json.JSONObject result = null; // TODO: 2023/4/23 调试 - log.info("金财数科蓝字请求报文打印=",JSONUtil.parse(invoiceAllAddTwoDTO)); - return null; - - /*try { - result = ApiHttp.request(WebServiceConstant.LZFPKJ, WebServiceConstant.URL, invoiceAllAddTwoDTO, companyservice); + + try { + Map map = BeanToMapUtils.fastJsonBean2Map(invoiceAllAddTwoDTO); + result = ApiHttp.request(WebServiceConstant.LZFPKJ, WebServiceConstant.URL, JSONUtil.parse(map), companyservice); String code = result.get("code") != null ? result.get("code").toString() : ""; String msg = result.get("msg") != null ? result.get("msg").toString() : ""; @@ -209,7 +226,7 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { } catch (Exception e) { log.error("【金四服务类】【金财数科】【蓝字发票开具】API请求异常,外部报文返回code非0000。错误信息:{}", e.getMessage()); return new HXResponse("蓝字发票开具异常"); - }*/ + } } else if ("2".equals(kpType)) { @@ -1309,6 +1326,31 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { * @return */ private static String getInvoiceType(String invoiceType, boolean jcsk2js) { + /** + * 全电发票(铁路电子客票):51 + * 全电发票(航空运输电子客票行程单) 61 + * 机动车销售电子统一发票 83 + * 二手车销售电子统一发票 84 + * 纸质专票(全电开具) 85 + * 纸质普票(全电开具) 86 + * 货物运输业增值税专用发票 02 + * 机动车销售统一发票 03 + * 二手车销售统一发票 15 + * + * 纸质发票(机动车销售统一发票) 87 + * 纸质发票(二手车销售统一发票) 88 + * 增值税专票 01 + * 增值税普票 04 + * 增值税电专 08 + * 增值税电普 10 + * 全电专票 81 + * 全电普票 82 + */ + // TODO: 2023/4/26 整理所有发票代码统一管理 + +// a、d、e、f、g、h、i、k、l、m、n、o、q、t、v、w、x、y、z。z +// p/c/s/b/j/u/q/r + Map map = new HashMap<>(); map.put("10", "p"); //电子增值税普通发票 10 map.put("04", "c"); //增值税普通发票 04 @@ -1316,8 +1358,9 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { map.put("08", "b"); //增值税电子专用发票 08 map.put("87", "j"); //机动车发票 87 map.put("88", "u"); //二手车发票 88 + map.put("82", "q"); //全电普票 - map.put("81", "q"); //全电专票 + map.put("81", "r"); //全电专票 if (jcsk2js) { String resp = map.get(invoiceType); return StringUtils.isNotEmpty(resp) ? resp : invoiceType; @@ -1333,4 +1376,7 @@ public class JcskInvoiceApiServiceImpl implements IInvoiceApiService { } + + + } diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/JcskConverJSInvoiceTypeUtils.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/JcskConverJSInvoiceTypeUtils.java new file mode 100644 index 0000000..0cc79c1 --- /dev/null +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/JcskConverJSInvoiceTypeUtils.java @@ -0,0 +1,11 @@ +package com.jianshui.invoice.utils; + + +/** + * 金财数科转简税-发票类型代码 + */ +public class JcskConverJSInvoiceTypeUtils { + + + +}