From d415fde0f80dfa89c4e89dd80390af39f2799ead Mon Sep 17 00:00:00 2001 From: dongxiaoke <1910333201@qq.com> Date: Wed, 7 Jun 2023 16:28:58 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=95=B0=E7=94=B5=E5=BC=80=E7=A5=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/InvoiceAddController.java | 11 ++- .../{ => InvoiceAdd}/BillInfoDetailPDTO.java | 2 +- .../dto/{ => InvoiceAdd}/BillInfoPDTO.java | 3 +- .../BillInfoDetailSDGenInvoicePDTO.java | 49 +++++++++++ .../BillInfoDetailSDSpecialInvoicePDTO.java | 50 +++++++++++ .../species/BillInfoSDGenInvoicePDTO.java | 84 +++++++++++++++++++ .../species/BillInfoSDSpecialInvoicePDTO.java | 83 ++++++++++++++++++ .../platform/service/InvoiceAddService.java | 15 +++- .../service/impl/InvoiceAddServiceImpl.java | 33 ++++---- .../com/jianshui/platform/vo/BillInfoPVO.java | 2 +- 10 files changed, 305 insertions(+), 27 deletions(-) rename jianshui-platform/src/main/java/com/jianshui/platform/dto/{ => InvoiceAdd}/BillInfoDetailPDTO.java (95%) rename jianshui-platform/src/main/java/com/jianshui/platform/dto/{ => InvoiceAdd}/BillInfoPDTO.java (96%) create mode 100644 jianshui-platform/src/main/java/com/jianshui/platform/dto/InvoiceAdd/species/BillInfoDetailSDGenInvoicePDTO.java create mode 100644 jianshui-platform/src/main/java/com/jianshui/platform/dto/InvoiceAdd/species/BillInfoDetailSDSpecialInvoicePDTO.java create mode 100644 jianshui-platform/src/main/java/com/jianshui/platform/dto/InvoiceAdd/species/BillInfoSDGenInvoicePDTO.java create mode 100644 jianshui-platform/src/main/java/com/jianshui/platform/dto/InvoiceAdd/species/BillInfoSDSpecialInvoicePDTO.java diff --git a/jianshui-admin/src/main/java/com/jianshui/web/controller/platform/InvoiceAddController.java b/jianshui-admin/src/main/java/com/jianshui/web/controller/platform/InvoiceAddController.java index 16a6d98..89e7e05 100644 --- a/jianshui-admin/src/main/java/com/jianshui/web/controller/platform/InvoiceAddController.java +++ b/jianshui-admin/src/main/java/com/jianshui/web/controller/platform/InvoiceAddController.java @@ -1,9 +1,8 @@ package com.jianshui.web.controller.platform; -import cn.hutool.json.JSON; import com.jianshui.common.core.controller.BaseController; import com.jianshui.common.core.domain.AjaxResult; -import com.jianshui.platform.dto.BillInfoPDTO; +import com.jianshui.platform.dto.InvoiceAdd.BillInfoPDTO; import com.jianshui.platform.service.InvoiceAddService; import io.swagger.annotations.*; import org.springframework.beans.factory.annotation.Autowired; @@ -22,12 +21,18 @@ public class InvoiceAddController extends BaseController { @Autowired private static InvoiceAddService addService; - @ApiOperation(value = "单据保存",notes = "单据保存请求") + @ApiOperation(value = "单据保存",notes = "单据保存请求(支持数电普票、数电专票)") @PostMapping( "invoiceSave") public AjaxResult invoiceSave(@RequestBody BillInfoPDTO billInfoPDTO) throws Exception { return toAjax(addService.invoiceSave(billInfoPDTO)); } + @ApiOperation(value = "发票开具",notes = "发票直接开具请求(支持数电普票、数电专票)") + @PostMapping( "invoiceIssuance") + public AjaxResult invoiceIssuance(@RequestBody BillInfoPDTO billInfoPDTO) throws Exception { + return addService.invoiceIssuance(billInfoPDTO); + } + diff --git a/jianshui-platform/src/main/java/com/jianshui/platform/dto/BillInfoDetailPDTO.java b/jianshui-platform/src/main/java/com/jianshui/platform/dto/InvoiceAdd/BillInfoDetailPDTO.java similarity index 95% rename from jianshui-platform/src/main/java/com/jianshui/platform/dto/BillInfoDetailPDTO.java rename to jianshui-platform/src/main/java/com/jianshui/platform/dto/InvoiceAdd/BillInfoDetailPDTO.java index 197b2bc..08011ca 100644 --- a/jianshui-platform/src/main/java/com/jianshui/platform/dto/BillInfoDetailPDTO.java +++ b/jianshui-platform/src/main/java/com/jianshui/platform/dto/InvoiceAdd/BillInfoDetailPDTO.java @@ -1,4 +1,4 @@ -package com.jianshui.platform.dto; +package com.jianshui.platform.dto.InvoiceAdd; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/jianshui-platform/src/main/java/com/jianshui/platform/dto/BillInfoPDTO.java b/jianshui-platform/src/main/java/com/jianshui/platform/dto/InvoiceAdd/BillInfoPDTO.java similarity index 96% rename from jianshui-platform/src/main/java/com/jianshui/platform/dto/BillInfoPDTO.java rename to jianshui-platform/src/main/java/com/jianshui/platform/dto/InvoiceAdd/BillInfoPDTO.java index a1e5bef..d999fd2 100644 --- a/jianshui-platform/src/main/java/com/jianshui/platform/dto/BillInfoPDTO.java +++ b/jianshui-platform/src/main/java/com/jianshui/platform/dto/InvoiceAdd/BillInfoPDTO.java @@ -1,4 +1,4 @@ -package com.jianshui.platform.dto; +package com.jianshui.platform.dto.InvoiceAdd; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -14,7 +14,6 @@ import java.util.List; @ApiModel("单据录入") public class BillInfoPDTO { - // TODO: 2023/6/5 增值税普通发票 @ApiModelProperty(value = "购方名称") private String buyerName; diff --git a/jianshui-platform/src/main/java/com/jianshui/platform/dto/InvoiceAdd/species/BillInfoDetailSDGenInvoicePDTO.java b/jianshui-platform/src/main/java/com/jianshui/platform/dto/InvoiceAdd/species/BillInfoDetailSDGenInvoicePDTO.java new file mode 100644 index 0000000..9d13434 --- /dev/null +++ b/jianshui-platform/src/main/java/com/jianshui/platform/dto/InvoiceAdd/species/BillInfoDetailSDGenInvoicePDTO.java @@ -0,0 +1,49 @@ +package com.jianshui.platform.dto.InvoiceAdd.species; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @Author: kk + * @Description: 数电普通发票-明细 + * @DateTime: 2023/6/7 10:42 + * @Params: + * @Return + */ +@Data +@ApiModel("单据录入详情") +public class BillInfoDetailSDGenInvoicePDTO { + + @ApiModelProperty(value = "商品名称") + private String goodName; + + @ApiModelProperty(value = "规格型号") + private String spec; + + @ApiModelProperty(value = "单位") + private String unit; + + @ApiModelProperty(value = "商品数量") + private BigDecimal num; + + @ApiModelProperty(value = "商品单价") + private BigDecimal price; + + @ApiModelProperty(value = "金额(不含税)") + private BigDecimal taxfreeamt; + + @ApiModelProperty(value = "税率") + private BigDecimal taxrate; + + @ApiModelProperty(value = "税额") + private BigDecimal tax; + + + + + + +} diff --git a/jianshui-platform/src/main/java/com/jianshui/platform/dto/InvoiceAdd/species/BillInfoDetailSDSpecialInvoicePDTO.java b/jianshui-platform/src/main/java/com/jianshui/platform/dto/InvoiceAdd/species/BillInfoDetailSDSpecialInvoicePDTO.java new file mode 100644 index 0000000..9151345 --- /dev/null +++ b/jianshui-platform/src/main/java/com/jianshui/platform/dto/InvoiceAdd/species/BillInfoDetailSDSpecialInvoicePDTO.java @@ -0,0 +1,50 @@ +package com.jianshui.platform.dto.InvoiceAdd.species; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @Author: kk + * @Description: 数电专用发票-明细 + * @DateTime: 2023/6/7 10:42 + * @Params: + * @Return + */ +@Data +@ApiModel("单据录入详情") +public class BillInfoDetailSDSpecialInvoicePDTO { + + // TODO: 2023/6/5 增值税普通发票 + @ApiModelProperty(value = "商品名称") + private String goodName; + + @ApiModelProperty(value = "规格型号") + private String spec; + + @ApiModelProperty(value = "单位") + private String unit; + + @ApiModelProperty(value = "商品数量") + private BigDecimal num; + + @ApiModelProperty(value = "商品单价") + private BigDecimal price; + + @ApiModelProperty(value = "金额(不含税)") + private BigDecimal taxfreeamt; + + @ApiModelProperty(value = "税率") + private BigDecimal taxrate; + + @ApiModelProperty(value = "税额") + private BigDecimal tax; + + + + + + +} diff --git a/jianshui-platform/src/main/java/com/jianshui/platform/dto/InvoiceAdd/species/BillInfoSDGenInvoicePDTO.java b/jianshui-platform/src/main/java/com/jianshui/platform/dto/InvoiceAdd/species/BillInfoSDGenInvoicePDTO.java new file mode 100644 index 0000000..850ef23 --- /dev/null +++ b/jianshui-platform/src/main/java/com/jianshui/platform/dto/InvoiceAdd/species/BillInfoSDGenInvoicePDTO.java @@ -0,0 +1,84 @@ +package com.jianshui.platform.dto.InvoiceAdd.species; + +import com.jianshui.common.annotation.Excel; +import com.jianshui.platform.dto.InvoiceAdd.BillInfoDetailPDTO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import java.math.BigDecimal; +import java.util.List; + +/** +* @Author: kk +* @Description: 数电普通发票 +* @DateTime: 2023/6/7 10:42 +* @Params: +* @Return +*/ + +@Data +@ApiModel("单据录入") +public class BillInfoSDGenInvoicePDTO { + + @NotEmpty + @ApiModelProperty(value = "购方名称") + private String buyerName; + + @NotEmpty + @ApiModelProperty(value = "购方税号") + private String buyerTaxnum; + + @ApiModelProperty(value = "购方地址") + private String buyerAddress; + + @ApiModelProperty(value = "购方电话") + private String buyerTelephone; + + @ApiModelProperty(value = "开户行") + private String buyerBank; + + @ApiModelProperty(value = "购买方开户行账号") + private String buyerAccount; + + @ApiModelProperty(value = "购方邮箱") + private String buyerEmail; + + + @ApiModelProperty(value = "销方名称") + private String sellerName; + + @ApiModelProperty(value = "销方税号") + private String sellerTaxnum; + + @ApiModelProperty(value = "销方地址") + private String sellerAddress; + + @ApiModelProperty(value = "销方电话") + private String sellerTelephone; + + @ApiModelProperty(value = "销方开户行名称") + private String sellerBank; + + @ApiModelProperty(value = "销方开户行账户") + private String sellerAccount; + + + @ApiModelProperty(value = "备注") + private String message; + + @ApiModelProperty(value = "价税合计") + private String jshj; + + @ApiModelProperty(value = "金额(不含税)") + private BigDecimal taxfreeamt; + + @ApiModelProperty(value = "税额") + private BigDecimal tax; + + @ApiModelProperty(value = "明细") + List billInfoDetailPDTOList; + + +} diff --git a/jianshui-platform/src/main/java/com/jianshui/platform/dto/InvoiceAdd/species/BillInfoSDSpecialInvoicePDTO.java b/jianshui-platform/src/main/java/com/jianshui/platform/dto/InvoiceAdd/species/BillInfoSDSpecialInvoicePDTO.java new file mode 100644 index 0000000..2d1a717 --- /dev/null +++ b/jianshui-platform/src/main/java/com/jianshui/platform/dto/InvoiceAdd/species/BillInfoSDSpecialInvoicePDTO.java @@ -0,0 +1,83 @@ +package com.jianshui.platform.dto.InvoiceAdd.species; + +import com.jianshui.platform.dto.InvoiceAdd.BillInfoDetailPDTO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import java.math.BigDecimal; +import java.util.List; + +/** + * @Author: kk + * @Description: 数电专用发票 + * @DateTime: 2023/6/7 10:42 + * @Params: + * @Return + */ + +@Data +@ApiModel("单据录入") +public class BillInfoSDSpecialInvoicePDTO { + + @NotEmpty + @ApiModelProperty(value = "购方名称") + private String buyerName; + + @NotEmpty + @ApiModelProperty(value = "购方税号") + private String buyerTaxnum; + + @ApiModelProperty(value = "购方地址") + private String buyerAddress; + + @ApiModelProperty(value = "购方电话") + private String buyerTelephone; + + @ApiModelProperty(value = "开户行") + private String buyerBank; + + @ApiModelProperty(value = "购买方开户行账号") + private String buyerAccount; + + @ApiModelProperty(value = "购方邮箱") + private String buyerEmail; + + + @ApiModelProperty(value = "销方名称") + private String sellerName; + + @ApiModelProperty(value = "销方税号") + private String sellerTaxnum; + + @ApiModelProperty(value = "销方地址") + private String sellerAddress; + + @ApiModelProperty(value = "销方电话") + private String sellerTelephone; + + @ApiModelProperty(value = "销方开户行名称") + private String sellerBank; + + @ApiModelProperty(value = "销方开户行账户") + private String sellerAccount; + + + @ApiModelProperty(value = "备注") + private String message; + + @ApiModelProperty(value = "价税合计") + private String jshj; + + @ApiModelProperty(value = "金额(不含税)") + private BigDecimal taxfreeamt; + + @ApiModelProperty(value = "税额") + private BigDecimal tax; + + @ApiModelProperty(value = "明细") + List billInfoDetailPDTOList; + + +} diff --git a/jianshui-platform/src/main/java/com/jianshui/platform/service/InvoiceAddService.java b/jianshui-platform/src/main/java/com/jianshui/platform/service/InvoiceAddService.java index 50da827..398e756 100644 --- a/jianshui-platform/src/main/java/com/jianshui/platform/service/InvoiceAddService.java +++ b/jianshui-platform/src/main/java/com/jianshui/platform/service/InvoiceAddService.java @@ -1,7 +1,8 @@ package com.jianshui.platform.service; -import com.jianshui.platform.dto.BillInfoPDTO; +import com.jianshui.common.core.domain.AjaxResult; +import com.jianshui.platform.dto.InvoiceAdd.BillInfoPDTO; /** * 发票录入 @@ -20,4 +21,16 @@ public interface InvoiceAddService { */ int invoiceSave(BillInfoPDTO billInfoPDTO); + + /** + * @Author: kk + * @Description: 发票开具 + * @DateTime: 2023/6/7 14:11 + * @Params: + * @Return + */ + AjaxResult invoiceIssuance(BillInfoPDTO billInfoPDTO); + + + } diff --git a/jianshui-platform/src/main/java/com/jianshui/platform/service/impl/InvoiceAddServiceImpl.java b/jianshui-platform/src/main/java/com/jianshui/platform/service/impl/InvoiceAddServiceImpl.java index 264f3c3..3f59e50 100644 --- a/jianshui-platform/src/main/java/com/jianshui/platform/service/impl/InvoiceAddServiceImpl.java +++ b/jianshui-platform/src/main/java/com/jianshui/platform/service/impl/InvoiceAddServiceImpl.java @@ -1,10 +1,19 @@ package com.jianshui.platform.service.impl; import cn.hutool.core.bean.BeanUtil; +import com.alibaba.fastjson.JSONObject; +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.utils.ValidateUtils; import com.jianshui.invoice.domain.BillInfo; +import com.jianshui.invoice.domain.dto.HXResponse; import com.jianshui.invoice.mapper.BillInfoMapper; -import com.jianshui.platform.dto.BillInfoPDTO; +import com.jianshui.invoice.service.IInvoiceApiService; +import com.jianshui.invoice.service.IInvoiceRequestService; +import com.jianshui.invoice.service.IInvoiceResponseService; +import com.jianshui.platform.dto.InvoiceAdd.BillInfoPDTO; import com.jianshui.platform.service.InvoiceAddService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -31,6 +40,8 @@ public class InvoiceAddServiceImpl implements InvoiceAddService { } + @Override + public AjaxResult invoiceIssuance(BillInfoPDTO billInfoPDTO) { @@ -39,24 +50,8 @@ public class InvoiceAddServiceImpl implements InvoiceAddService { - - - - - - - - - - - - - - - - - - + return null; + } diff --git a/jianshui-platform/src/main/java/com/jianshui/platform/vo/BillInfoPVO.java b/jianshui-platform/src/main/java/com/jianshui/platform/vo/BillInfoPVO.java index 18bbcdd..a6865a0 100644 --- a/jianshui-platform/src/main/java/com/jianshui/platform/vo/BillInfoPVO.java +++ b/jianshui-platform/src/main/java/com/jianshui/platform/vo/BillInfoPVO.java @@ -1,6 +1,6 @@ package com.jianshui.platform.vo; -import com.jianshui.platform.dto.BillInfoDetailPDTO; +import com.jianshui.platform.dto.InvoiceAdd.BillInfoDetailPDTO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; From c918d8ed1cfc254a92e7568a14fda754e10df1a0 Mon Sep 17 00:00:00 2001 From: dongxiaoke <1910333201@qq.com> Date: Thu, 8 Jun 2023 09:48:20 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=95=B0=E7=94=B5=E5=BC=80=E7=A5=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/InvoiceAddController.java | 3 +- .../service/impl/EleCheckInvoiceImpl.java | 5 +- .../jianshui/invoice/enums/ChannelSource.java | 29 +++++++ .../platform/service/InvoiceAddService.java | 4 +- .../service/impl/InvoiceAddServiceImpl.java | 77 +++++++++++++++---- 5 files changed, 96 insertions(+), 22 deletions(-) create mode 100644 jianshui-invoice/src/main/java/com/jianshui/invoice/enums/ChannelSource.java diff --git a/jianshui-admin/src/main/java/com/jianshui/web/controller/platform/InvoiceAddController.java b/jianshui-admin/src/main/java/com/jianshui/web/controller/platform/InvoiceAddController.java index 89e7e05..b99d439 100644 --- a/jianshui-admin/src/main/java/com/jianshui/web/controller/platform/InvoiceAddController.java +++ b/jianshui-admin/src/main/java/com/jianshui/web/controller/platform/InvoiceAddController.java @@ -2,6 +2,7 @@ package com.jianshui.web.controller.platform; import com.jianshui.common.core.controller.BaseController; import com.jianshui.common.core.domain.AjaxResult; +import com.jianshui.invoice.domain.dto.HXResponse; import com.jianshui.platform.dto.InvoiceAdd.BillInfoPDTO; import com.jianshui.platform.service.InvoiceAddService; import io.swagger.annotations.*; @@ -29,7 +30,7 @@ public class InvoiceAddController extends BaseController { @ApiOperation(value = "发票开具",notes = "发票直接开具请求(支持数电普票、数电专票)") @PostMapping( "invoiceIssuance") - public AjaxResult invoiceIssuance(@RequestBody BillInfoPDTO billInfoPDTO) throws Exception { + public HXResponse invoiceIssuance(@RequestBody BillInfoPDTO billInfoPDTO) throws Exception { return addService.invoiceIssuance(billInfoPDTO); } diff --git a/jianshui-income/src/main/java/com/jianshui/income/service/impl/EleCheckInvoiceImpl.java b/jianshui-income/src/main/java/com/jianshui/income/service/impl/EleCheckInvoiceImpl.java index e9ed800..3ce1df5 100644 --- a/jianshui-income/src/main/java/com/jianshui/income/service/impl/EleCheckInvoiceImpl.java +++ b/jianshui-income/src/main/java/com/jianshui/income/service/impl/EleCheckInvoiceImpl.java @@ -182,15 +182,16 @@ public class EleCheckInvoiceImpl implements ICheckInvoice { return new AjaxResult(Integer.parseInt(invoiceCheck.getCyjg()),invoiceCheck.getCyjgxx()); } + // TODO: 2023/6/7 测试关闭 // :校验是否查询本企业发票 - String xhfsbh = StrUtil.blankToDefault(invoiceCheck.getXhfsbh(), ""); + /*String xhfsbh = StrUtil.blankToDefault(invoiceCheck.getXhfsbh(), ""); String xhfmc = StrUtil.blankToDefault(invoiceCheck.getXhfmc(), ""); String sellerTax = companyservice.getSellertax(); String sellerName = companyservice.getSellername(); if (!sellerTax.equals(xhfsbh) || !StrUtil.equalsIgnoreCase(sellerName, xhfmc)) { log.info("单个发票校验非本企业发票:companyId=" + companyId + ",errorCode=" + invoiceCheck.getCyjg() + ",returnMessage=" + invoiceCheck.getCyjgxx()); return new AjaxResult(34,"授权企业与所查询发票的购方不一致,请进行核实"); - } + }*/ // 更新成功处理返回数据 return AjaxResult.success(result); diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/enums/ChannelSource.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/enums/ChannelSource.java new file mode 100644 index 0000000..3201557 --- /dev/null +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/enums/ChannelSource.java @@ -0,0 +1,29 @@ +package com.jianshui.invoice.enums; + +/** +* @Author: kk +* @Description: 上游通道选择枚举 +* @DateTime: 2023/6/8 9:39 +* @Params: +* @Return +*/ + +public enum ChannelSource { + PLATFORM("2", "简税产品平台"); + + private final String code; + private final String desc; + + ChannelSource(String code, String desc) { + this.code = code; + this.desc = desc; + } + + public String getCode() { + return code; + } + + public String getDesc() { + return desc; + } +} diff --git a/jianshui-platform/src/main/java/com/jianshui/platform/service/InvoiceAddService.java b/jianshui-platform/src/main/java/com/jianshui/platform/service/InvoiceAddService.java index 398e756..5ea571c 100644 --- a/jianshui-platform/src/main/java/com/jianshui/platform/service/InvoiceAddService.java +++ b/jianshui-platform/src/main/java/com/jianshui/platform/service/InvoiceAddService.java @@ -1,7 +1,7 @@ package com.jianshui.platform.service; -import com.jianshui.common.core.domain.AjaxResult; +import com.jianshui.invoice.domain.dto.HXResponse; import com.jianshui.platform.dto.InvoiceAdd.BillInfoPDTO; /** @@ -29,7 +29,7 @@ public interface InvoiceAddService { * @Params: * @Return */ - AjaxResult invoiceIssuance(BillInfoPDTO billInfoPDTO); + HXResponse invoiceIssuance(BillInfoPDTO billInfoPDTO); diff --git a/jianshui-platform/src/main/java/com/jianshui/platform/service/impl/InvoiceAddServiceImpl.java b/jianshui-platform/src/main/java/com/jianshui/platform/service/impl/InvoiceAddServiceImpl.java index 3f59e50..af53028 100644 --- a/jianshui-platform/src/main/java/com/jianshui/platform/service/impl/InvoiceAddServiceImpl.java +++ b/jianshui-platform/src/main/java/com/jianshui/platform/service/impl/InvoiceAddServiceImpl.java @@ -1,34 +1,49 @@ package com.jianshui.platform.service.impl; import cn.hutool.core.bean.BeanUtil; -import com.alibaba.fastjson.JSONObject; -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.SecurityUtils; import com.jianshui.common.utils.ValidateUtils; import com.jianshui.invoice.domain.BillInfo; import com.jianshui.invoice.domain.dto.HXResponse; +import com.jianshui.invoice.enums.ChannelSource; +import com.jianshui.invoice.factory.IInvoiceServiceFactory; import com.jianshui.invoice.mapper.BillInfoMapper; import com.jianshui.invoice.service.IInvoiceApiService; -import com.jianshui.invoice.service.IInvoiceRequestService; -import com.jianshui.invoice.service.IInvoiceResponseService; import com.jianshui.platform.dto.InvoiceAdd.BillInfoPDTO; import com.jianshui.platform.service.InvoiceAddService; +import com.jianshui.platform.utils.InvoiceAllYhdjUtils; +import com.jianshui.system.domain.InvoiceAllYhdj; +import com.jianshui.system.mapper.CompanyserviceMapper; +import com.jianshui.system.service.IServiceManageService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Optional; + /** * 发票录入 - * */ @Service +@Slf4j public class InvoiceAddServiceImpl implements InvoiceAddService { @Autowired private static BillInfoMapper billInfoMapper; + @Autowired + private IServiceManageService serviceManageService; + + @Autowired + private IInvoiceServiceFactory invoiceServiceFactory; + + @Autowired + private CompanyserviceMapper companyServiceMapper; + + @Override public int invoiceSave(BillInfoPDTO billInfoPDTO) { ValidateUtils.validate(billInfoPDTO); @@ -41,16 +56,48 @@ public class InvoiceAddServiceImpl implements InvoiceAddService { } @Override - public AjaxResult invoiceIssuance(BillInfoPDTO billInfoPDTO) { - - - - + public HXResponse invoiceIssuance(BillInfoPDTO billInfoPDTO) { + BillInfo billInfo = BeanUtil.copyProperties(billInfoPDTO, BillInfo.class); + billInfo.setSource(ChannelSource.PLATFORM.getCode()); + + // 获取用户信息 + Long companyId = Optional.ofNullable(SecurityUtils.getLoginUser()) + .map(loginUser -> loginUser.getCompanyId()) + .orElse(0L); + if (companyId == 0L) { + return new HXResponse("未获取到用户服务信息,请联系管理员配置!"); + } + Companyservice companyservice = companyServiceMapper.selectCompanyserviceByCompanyid(companyId); + if (BeanUtil.isEmpty(companyservice)) { + return new HXResponse(("未获取到用户服务信息,请联系管理员配置!")); + } + + // TODO: 2023/6/8 这里看看多通道的时候怎么处理 + InvoiceAllYhdjUtils invoiceAllYhdjUtils = new InvoiceAllYhdjUtils(); + InvoiceAllYhdj userInfo = invoiceAllYhdjUtils.getUserInfo(companyservice); + + if (BeanUtil.isEmpty(userInfo)) { + return new HXResponse(("未查询到登记信息!")); + } + + // 获得请求实例,并且进行扣费 + String serviceKey = null; + try { + serviceKey = serviceManageService.getCompanyServiceSupplier("invoice", companyservice.getCompanyid()); + + serviceManageService.companyConsume("invoice", companyId); + billInfo.setServiceSupplierKey(serviceKey); + IInvoiceApiService invoiceService = invoiceServiceFactory.getService(serviceKey); + + return invoiceService.addInvoice(billInfo, companyservice); + } catch (Exception e) { + log.error("简税产品端,发票开具失败,请求报文={},企业税号={},servicekey={}",billInfoPDTO.toString(),companyservice.toString(),serviceKey); + throw new JianshuiServiceException("发票开具系统异常!"); + } - return null; } @@ -61,8 +108,4 @@ public class InvoiceAddServiceImpl implements InvoiceAddService { - - - - }