From 596ec6d7fd3e67b737bc1f8d54a5ac845440923d Mon Sep 17 00:00:00 2001 From: shenyifei Date: Tue, 30 Dec 2025 17:10:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(invoice):=20=E6=B7=BB=E5=8A=A0=E7=93=9C?= =?UTF-8?q?=E5=86=9C=E5=8F=91=E7=A5=A8=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除订单供应商批量上传发票功能 - 创建新的供应商发票控制器(SupplierInvoiceController) - 添加供应商发票服务接口(SupplierInvoiceServiceI)及实现 - 创建供应商发票相关的DTO类(创建、更新、删除命令及查询类) - 添加供应商发票VO和实体类 - 创建供应商发票执行器类(查询和命令执行器) - 修改订单供应商相关类以支持发票ID字段 - 添加供应商发票组装器用于VO转换 --- .../controller/OrderSupplierController.java | 11 -- .../controller/SupplierInvoiceController.java | 79 ++++++++++ .../assembler/SupplierInvoiceAssembler.java | 15 ++ ...OrderSupplierBatchInvoiceUploadCmdExe.java | 29 ---- .../cmd/SupplierInvoiceCreateCmdExe.java | 29 ++++ .../cmd/SupplierInvoiceDestroyCmdExe.java | 22 +++ .../cmd/SupplierInvoiceUpdateCmdExe.java | 27 ++++ .../query/SupplierInvoiceListQryExe.java | 30 ++++ .../query/SupplierInvoicePageQryExe.java | 29 ++++ .../query/SupplierInvoiceShowQryExe.java | 29 ++++ .../app/service/OrderSupplierServiceImpl.java | 8 - .../service/SupplierInvoiceServiceImpl.java | 71 +++++++++ .../biz/domain/entity/OrderSupplier.java | 7 +- .../biz/domain/entity/SupplierInvoice.java | 73 +++++++++ .../domain/gateway/OrderSupplierGateway.java | 3 - .../gateway/SupplierInvoiceGateway.java | 30 ++++ .../convert/SupplierInvoiceConvert.java | 32 ++++ .../entity/OrderSupplierDO.java | 8 +- .../entity/SupplierInvoiceDO.java | 81 ++++++++++ .../gateway/OrderGatewayImpl.java | 145 +++++++++++++++++- .../gateway/OrderSupplierGatewayImpl.java | 15 -- .../gateway/SupplierInvoiceGatewayImpl.java | 110 +++++++++++++ .../mapper/SupplierInvoiceMapper.java | 13 ++ .../resources/mapper/OrderSupplierMapper.xml | 5 +- .../mapper/SupplierInvoiceMapper.xml | 22 +++ .../api/biz/api/OrderSupplierServiceI.java | 8 - .../api/biz/api/SupplierInvoiceServiceI.java | 30 ++++ .../OrderSupplierBatchInvoiceUploadCmd.java | 39 ----- .../biz/dto/cmd/OrderSupplierUpdateCmd.java | 8 +- .../biz/dto/cmd/SupplierInvoiceCreateCmd.java | 51 ++++++ .../dto/cmd/SupplierInvoiceDestroyCmd.java | 19 +++ .../biz/dto/cmd/SupplierInvoiceUpdateCmd.java | 18 +++ .../api/biz/dto/common/OrderSupplier.java | 10 +- .../biz/dto/common/OrderSupplierInvoice.java | 72 +++++++++ .../dto/enums/SupplierInvoiceTypeEnum.java | 23 +++ .../api/biz/dto/qry/OrderSupplierPageQry.java | 2 +- .../biz/dto/qry/SupplierInvoiceListQry.java | 19 +++ .../biz/dto/qry/SupplierInvoicePageQry.java | 19 +++ .../biz/dto/qry/SupplierInvoiceShowQry.java | 19 +++ .../turbo/api/biz/dto/vo/OrderSupplierVO.java | 10 +- .../api/biz/dto/vo/SupplierInvoiceVO.java | 83 ++++++++++ 41 files changed, 1223 insertions(+), 130 deletions(-) create mode 100644 erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/SupplierInvoiceController.java create mode 100644 erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/assembler/SupplierInvoiceAssembler.java delete mode 100644 erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/OrderSupplierBatchInvoiceUploadCmdExe.java create mode 100644 erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/SupplierInvoiceCreateCmdExe.java create mode 100644 erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/SupplierInvoiceDestroyCmdExe.java create mode 100644 erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/SupplierInvoiceUpdateCmdExe.java create mode 100644 erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/SupplierInvoiceListQryExe.java create mode 100644 erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/SupplierInvoicePageQryExe.java create mode 100644 erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/SupplierInvoiceShowQryExe.java create mode 100644 erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/SupplierInvoiceServiceImpl.java create mode 100644 erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/SupplierInvoice.java create mode 100644 erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/SupplierInvoiceGateway.java create mode 100644 erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/convert/SupplierInvoiceConvert.java create mode 100644 erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/SupplierInvoiceDO.java create mode 100644 erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/SupplierInvoiceGatewayImpl.java create mode 100644 erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/SupplierInvoiceMapper.java create mode 100644 erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/SupplierInvoiceMapper.xml create mode 100644 erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/SupplierInvoiceServiceI.java delete mode 100644 erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/OrderSupplierBatchInvoiceUploadCmd.java create mode 100644 erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/SupplierInvoiceCreateCmd.java create mode 100644 erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/SupplierInvoiceDestroyCmd.java create mode 100644 erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/SupplierInvoiceUpdateCmd.java create mode 100644 erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/common/OrderSupplierInvoice.java create mode 100644 erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/SupplierInvoiceTypeEnum.java create mode 100644 erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/SupplierInvoiceListQry.java create mode 100644 erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/SupplierInvoicePageQry.java create mode 100644 erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/SupplierInvoiceShowQry.java create mode 100644 erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/SupplierInvoiceVO.java diff --git a/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/OrderSupplierController.java b/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/OrderSupplierController.java index 3a700cf..dfae8d0 100644 --- a/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/OrderSupplierController.java +++ b/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/OrderSupplierController.java @@ -2,10 +2,8 @@ package com.xunhong.erp.turbo.admin.controller; import cn.dev33.satoken.annotation.SaCheckLogin; import com.alibaba.cola.dto.PageResponse; -import com.alibaba.cola.dto.Response; import com.alibaba.cola.dto.SingleResponse; import com.xunhong.erp.turbo.api.biz.api.OrderSupplierServiceI; -import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierBatchInvoiceUploadCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierUpdateCmd; import com.xunhong.erp.turbo.api.biz.dto.qry.OrderSupplierPageQry; import com.xunhong.erp.turbo.api.biz.dto.vo.OrderSupplierVO; @@ -62,13 +60,4 @@ public class OrderSupplierController { public SingleResponse updateOrderSupplier(@RequestBody @Validated OrderSupplierUpdateCmd orderSupplierUpdateCmd) { return SingleResponse.of(orderSupplierService.update(orderSupplierUpdateCmd)); } - - @SaCheckLogin -// @SaCheckPermission(value = {PermissionConstant.MDB_BUSINESS_ORDER_SUPPLIER_BATCH_INVOICE_UPLOAD}) - @PostMapping("batchUploadInvoice") - @Operation(summary = "批量上传供应商发票", method = "POST") - public Response batchUploadInvoice(@RequestBody @Validated OrderSupplierBatchInvoiceUploadCmd batchInvoiceUploadCmd) { - orderSupplierService.batchUploadInvoice(batchInvoiceUploadCmd); - return SingleResponse.buildSuccess(); - } } diff --git a/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/SupplierInvoiceController.java b/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/SupplierInvoiceController.java new file mode 100644 index 0000000..0935f4d --- /dev/null +++ b/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/SupplierInvoiceController.java @@ -0,0 +1,79 @@ +package com.xunhong.erp.turbo.admin.controller; + +import cn.dev33.satoken.annotation.SaCheckLogin; +import com.alibaba.cola.dto.MultiResponse; +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.Response; +import com.alibaba.cola.dto.SingleResponse; +import com.xunhong.erp.turbo.api.biz.api.SupplierInvoiceServiceI; +import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierInvoiceCreateCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierInvoiceDestroyCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierInvoiceUpdateCmd; +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierInvoiceListQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierInvoicePageQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierInvoiceShowQry; +import com.xunhong.erp.turbo.api.biz.dto.vo.SupplierInvoiceVO; +import com.xunhong.erp.turbo.base.dto.PageDTO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * @author shenyifei + */ +@Tag(name = "SupplierInvoice", description = "瓜农发票管理") +@RestController("operationSupplierInvoiceController") +@RequestMapping(value = "/operation") +@RequiredArgsConstructor +public class SupplierInvoiceController { + + @DubboReference(version = "1.0.0") + private final SupplierInvoiceServiceI supplierInvoiceService; + + @SaCheckLogin + @GetMapping("listSupplierInvoice") + @Operation(summary = "瓜农发票列表", method = "GET") + public MultiResponse listSupplierInvoice(@ModelAttribute @Validated SupplierInvoiceListQry supplierInvoiceListQry) { + return MultiResponse.of(supplierInvoiceService.list(supplierInvoiceListQry)); + } + + @SaCheckLogin + @PostMapping("createSupplierInvoice") + @Operation(summary = "创建发票", method = "POST") + public SingleResponse createSupplierInvoice(@RequestBody @Validated SupplierInvoiceCreateCmd supplierInvoiceCreateCmd) { + return SingleResponse.of(supplierInvoiceService.create(supplierInvoiceCreateCmd)); + } + + @SaCheckLogin + @GetMapping("showSupplierInvoice") + @Operation(summary = "瓜农发票详情", method = "GET") + public SingleResponse showSupplierInvoice(@ModelAttribute @Validated SupplierInvoiceShowQry supplierInvoiceShowQry) { + return SingleResponse.of(supplierInvoiceService.show(supplierInvoiceShowQry)); + } + + @SaCheckLogin + @GetMapping("pageSupplierInvoice") + @Operation(summary = "瓜农发票列表", method = "GET") + public PageResponse pageSupplierInvoice(@ModelAttribute @Validated SupplierInvoicePageQry supplierInvoicePageQry) { + PageDTO page = supplierInvoiceService.page(supplierInvoicePageQry); + return PageResponse.of(page.getRecords(), (int) page.getTotal(), (int) page.getSize(), (int) page.getCurrent()); + } + + @SaCheckLogin + @RequestMapping(value = "updateSupplierInvoice", method = {RequestMethod.PATCH, RequestMethod.PUT}) + @Operation(summary = "瓜农发票更新", method = "PATCH") + public SingleResponse updateSupplierInvoice(@RequestBody @Validated SupplierInvoiceUpdateCmd invoiceUpdateCmd) { + return SingleResponse.of(supplierInvoiceService.update(invoiceUpdateCmd)); + } + + @SaCheckLogin + @DeleteMapping("destroySupplierInvoice") + @Operation(summary = "瓜农发票删除", method = "DELETE") + public Response destroySupplierInvoice(@RequestBody @Validated SupplierInvoiceDestroyCmd supplierInvoiceDestroyCmd) { + supplierInvoiceService.destroy(supplierInvoiceDestroyCmd); + return Response.buildSuccess(); + } +} diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/assembler/SupplierInvoiceAssembler.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/assembler/SupplierInvoiceAssembler.java new file mode 100644 index 0000000..e2f5650 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/assembler/SupplierInvoiceAssembler.java @@ -0,0 +1,15 @@ +package com.xunhong.erp.turbo.biz.app.assembler; + +import com.xunhong.erp.turbo.api.biz.dto.vo.SupplierInvoiceVO; +import com.xunhong.erp.turbo.biz.domain.entity.SupplierInvoice; +import org.mapstruct.Mapper; +import org.mapstruct.NullValueCheckStrategy; + +/** + * @author shenyifei + */ +@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS) +public interface SupplierInvoiceAssembler { + + SupplierInvoiceVO toInvoiceVO(SupplierInvoice supplierInvoice); +} diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/OrderSupplierBatchInvoiceUploadCmdExe.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/OrderSupplierBatchInvoiceUploadCmdExe.java deleted file mode 100644 index 0188dad..0000000 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/OrderSupplierBatchInvoiceUploadCmdExe.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.xunhong.erp.turbo.biz.app.executor.cmd; - -import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierBatchInvoiceUploadCmd; -import com.xunhong.erp.turbo.biz.domain.gateway.OrderSupplierGateway; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * 订单供应商批量上传发票执行器 - * - * @author claude - */ -@Slf4j -@Component -@RequiredArgsConstructor -public class OrderSupplierBatchInvoiceUploadCmdExe { - - private final OrderSupplierGateway orderSupplierGateway; - - /** - * 执行批量上传发票 - * - * @param orderSupplierBatchInvoiceUploadCmd 批量上传发票命令 - */ - public void execute(OrderSupplierBatchInvoiceUploadCmd orderSupplierBatchInvoiceUploadCmd) { - orderSupplierGateway.batchInvoiceUpload(orderSupplierBatchInvoiceUploadCmd); - } -} diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/SupplierInvoiceCreateCmdExe.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/SupplierInvoiceCreateCmdExe.java new file mode 100644 index 0000000..7638cf7 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/SupplierInvoiceCreateCmdExe.java @@ -0,0 +1,29 @@ +package com.xunhong.erp.turbo.biz.app.executor.cmd; + +import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierInvoiceCreateCmd; +import com.xunhong.erp.turbo.api.biz.dto.vo.SupplierInvoiceVO; +import com.xunhong.erp.turbo.biz.app.assembler.SupplierInvoiceAssembler; +import com.xunhong.erp.turbo.biz.domain.entity.SupplierInvoice; +import com.xunhong.erp.turbo.biz.domain.gateway.SupplierInvoiceGateway; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author shenyifei + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class SupplierInvoiceCreateCmdExe { + + private final SupplierInvoiceAssembler supplierInvoiceAssembler; + private final SupplierInvoiceGateway supplierInvoiceGateway; + + public SupplierInvoiceVO execute(SupplierInvoiceCreateCmd supplierInvoiceCreateCmd) { + SupplierInvoice supplierInvoice = supplierInvoiceGateway.save(supplierInvoiceCreateCmd); + + return supplierInvoiceAssembler.toInvoiceVO(supplierInvoice); + } +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/SupplierInvoiceDestroyCmdExe.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/SupplierInvoiceDestroyCmdExe.java new file mode 100644 index 0000000..453c4c1 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/SupplierInvoiceDestroyCmdExe.java @@ -0,0 +1,22 @@ +package com.xunhong.erp.turbo.biz.app.executor.cmd; + +import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierInvoiceDestroyCmd; +import com.xunhong.erp.turbo.biz.domain.gateway.SupplierInvoiceGateway; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author shenyifei + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class SupplierInvoiceDestroyCmdExe { + private final SupplierInvoiceGateway supplierInvoiceGateway; + + public void execute(SupplierInvoiceDestroyCmd supplierInvoiceDestroyCmd) { + supplierInvoiceGateway.destroy(supplierInvoiceDestroyCmd); + } +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/SupplierInvoiceUpdateCmdExe.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/SupplierInvoiceUpdateCmdExe.java new file mode 100644 index 0000000..ed5297e --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/SupplierInvoiceUpdateCmdExe.java @@ -0,0 +1,27 @@ +package com.xunhong.erp.turbo.biz.app.executor.cmd; + +import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierInvoiceUpdateCmd; +import com.xunhong.erp.turbo.api.biz.dto.vo.SupplierInvoiceVO; +import com.xunhong.erp.turbo.biz.app.assembler.SupplierInvoiceAssembler; +import com.xunhong.erp.turbo.biz.domain.entity.SupplierInvoice; +import com.xunhong.erp.turbo.biz.domain.gateway.SupplierInvoiceGateway; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author shenyifei + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class SupplierInvoiceUpdateCmdExe { + + private final SupplierInvoiceAssembler supplierInvoiceAssembler; + private final SupplierInvoiceGateway supplierInvoiceGateway; + + public SupplierInvoiceVO execute(SupplierInvoiceUpdateCmd invoiceUpdateCmd) { + SupplierInvoice supplierInvoice = supplierInvoiceGateway.update(invoiceUpdateCmd); + return supplierInvoiceAssembler.toInvoiceVO(supplierInvoice); + } +} diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/SupplierInvoiceListQryExe.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/SupplierInvoiceListQryExe.java new file mode 100644 index 0000000..dee9c67 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/SupplierInvoiceListQryExe.java @@ -0,0 +1,30 @@ +package com.xunhong.erp.turbo.biz.app.executor.query; + +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierInvoiceListQry; +import com.xunhong.erp.turbo.api.biz.dto.vo.SupplierInvoiceVO; +import com.xunhong.erp.turbo.biz.app.assembler.SupplierInvoiceAssembler; +import com.xunhong.erp.turbo.biz.domain.entity.SupplierInvoice; +import com.xunhong.erp.turbo.biz.domain.gateway.SupplierInvoiceGateway; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author shenyifei + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class SupplierInvoiceListQryExe { + + private final SupplierInvoiceGateway supplierInvoiceGateway; + private final SupplierInvoiceAssembler supplierInvoiceAssembler; + + public List execute(SupplierInvoiceListQry supplierInvoiceListQry) { + List supplierInvoiceList = supplierInvoiceGateway.list(supplierInvoiceListQry); + return supplierInvoiceList.stream().map(supplierInvoiceAssembler::toInvoiceVO).toList(); + } +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/SupplierInvoicePageQryExe.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/SupplierInvoicePageQryExe.java new file mode 100644 index 0000000..73f5628 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/SupplierInvoicePageQryExe.java @@ -0,0 +1,29 @@ +package com.xunhong.erp.turbo.biz.app.executor.query; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierInvoicePageQry; +import com.xunhong.erp.turbo.api.biz.dto.vo.SupplierInvoiceVO; +import com.xunhong.erp.turbo.biz.app.assembler.SupplierInvoiceAssembler; +import com.xunhong.erp.turbo.biz.domain.entity.SupplierInvoice; +import com.xunhong.erp.turbo.biz.domain.gateway.SupplierInvoiceGateway; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author shenyifei + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class SupplierInvoicePageQryExe { + + private final SupplierInvoiceGateway supplierInvoiceGateway; + private final SupplierInvoiceAssembler supplierInvoiceAssembler; + + public IPage execute(SupplierInvoicePageQry supplierInvoicePageQry) { + IPage page = supplierInvoiceGateway.page(supplierInvoicePageQry); + return page.convert(supplierInvoiceAssembler::toInvoiceVO); + } +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/SupplierInvoiceShowQryExe.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/SupplierInvoiceShowQryExe.java new file mode 100644 index 0000000..a5118ee --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/SupplierInvoiceShowQryExe.java @@ -0,0 +1,29 @@ +package com.xunhong.erp.turbo.biz.app.executor.query; + +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierInvoiceShowQry; +import com.xunhong.erp.turbo.api.biz.dto.vo.SupplierInvoiceVO; +import com.xunhong.erp.turbo.biz.app.assembler.SupplierInvoiceAssembler; +import com.xunhong.erp.turbo.biz.domain.entity.SupplierInvoice; +import com.xunhong.erp.turbo.biz.domain.gateway.SupplierInvoiceGateway; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author shenyifei + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class SupplierInvoiceShowQryExe { + + private final SupplierInvoiceAssembler supplierInvoiceAssembler; + private final SupplierInvoiceGateway supplierInvoiceGateway; + + public SupplierInvoiceVO execute(SupplierInvoiceShowQry supplierInvoiceShowQry) { + SupplierInvoice supplierInvoice = supplierInvoiceGateway.show(supplierInvoiceShowQry); + + return supplierInvoiceAssembler.toInvoiceVO(supplierInvoice); + } +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/OrderSupplierServiceImpl.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/OrderSupplierServiceImpl.java index 7fbe15c..f7ecdb2 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/OrderSupplierServiceImpl.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/OrderSupplierServiceImpl.java @@ -1,12 +1,10 @@ package com.xunhong.erp.turbo.biz.app.service; import com.xunhong.erp.turbo.api.biz.api.OrderSupplierServiceI; -import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierBatchInvoiceUploadCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierUpdateCmd; import com.xunhong.erp.turbo.api.biz.dto.qry.OrderSupplierPageQry; import com.xunhong.erp.turbo.api.biz.dto.vo.OrderSupplierVO; import com.xunhong.erp.turbo.base.dto.PageDTO; -import com.xunhong.erp.turbo.biz.app.executor.cmd.OrderSupplierBatchInvoiceUploadCmdExe; import com.xunhong.erp.turbo.biz.app.executor.cmd.OrderSupplierUpdateCmdExe; import com.xunhong.erp.turbo.biz.app.executor.query.OrderSupplierPageQryExe; import lombok.RequiredArgsConstructor; @@ -24,7 +22,6 @@ import org.springframework.stereotype.Service; public class OrderSupplierServiceImpl implements OrderSupplierServiceI { private final OrderSupplierUpdateCmdExe orderSupplierUpdateCmdExe; - private final OrderSupplierBatchInvoiceUploadCmdExe orderSupplierBatchInvoiceUploadCmdExe; private final OrderSupplierPageQryExe orderSupplierPageQryExe; @@ -38,10 +35,5 @@ public class OrderSupplierServiceImpl implements OrderSupplierServiceI { public OrderSupplierVO update(OrderSupplierUpdateCmd orderSupplierUpdateCmd) { return orderSupplierUpdateCmdExe.execute(orderSupplierUpdateCmd); } - - @Override - public void batchUploadInvoice(OrderSupplierBatchInvoiceUploadCmd batchInvoiceUploadCmd) { - orderSupplierBatchInvoiceUploadCmdExe.execute(batchInvoiceUploadCmd); - } } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/SupplierInvoiceServiceImpl.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/SupplierInvoiceServiceImpl.java new file mode 100644 index 0000000..2ebde1d --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/SupplierInvoiceServiceImpl.java @@ -0,0 +1,71 @@ +package com.xunhong.erp.turbo.biz.app.service; + +import com.xunhong.erp.turbo.api.biz.api.SupplierInvoiceServiceI; +import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierInvoiceCreateCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierInvoiceDestroyCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierInvoiceUpdateCmd; +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierInvoiceListQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierInvoicePageQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierInvoiceShowQry; +import com.xunhong.erp.turbo.api.biz.dto.vo.SupplierInvoiceVO; +import com.xunhong.erp.turbo.base.dto.PageDTO; +import com.xunhong.erp.turbo.biz.app.executor.cmd.SupplierInvoiceCreateCmdExe; +import com.xunhong.erp.turbo.biz.app.executor.cmd.SupplierInvoiceDestroyCmdExe; +import com.xunhong.erp.turbo.biz.app.executor.cmd.SupplierInvoiceUpdateCmdExe; +import com.xunhong.erp.turbo.biz.app.executor.query.SupplierInvoiceListQryExe; +import com.xunhong.erp.turbo.biz.app.executor.query.SupplierInvoicePageQryExe; +import com.xunhong.erp.turbo.biz.app.executor.query.SupplierInvoiceShowQryExe; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.config.annotation.DubboService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author shenyifei + */ +@Slf4j +@Service +@DubboService(interfaceClass = SupplierInvoiceServiceI.class, version = "1.0.0") +@RequiredArgsConstructor +public class SupplierInvoiceServiceImpl implements SupplierInvoiceServiceI { + + private final SupplierInvoiceCreateCmdExe supplierInvoiceCreateCmdExe; + private final SupplierInvoiceUpdateCmdExe supplierInvoiceUpdateCmdExe; + private final SupplierInvoicePageQryExe supplierInvoicePageQryExe; + private final SupplierInvoiceListQryExe supplierInvoiceListQryExe; + private final SupplierInvoiceShowQryExe supplierInvoiceShowQryExe; + private final SupplierInvoiceDestroyCmdExe supplierInvoiceDestroyCmdExe; + + @Override + public SupplierInvoiceVO create(SupplierInvoiceCreateCmd supplierInvoiceCreateCmd) { + return supplierInvoiceCreateCmdExe.execute(supplierInvoiceCreateCmd); + } + + @Override + public PageDTO page(SupplierInvoicePageQry supplierInvoicePageQry) { + return PageDTO.of(supplierInvoicePageQryExe.execute(supplierInvoicePageQry)); + } + + @Override + public List list(SupplierInvoiceListQry supplierInvoiceListQry) { + return supplierInvoiceListQryExe.execute(supplierInvoiceListQry); + } + + @Override + public SupplierInvoiceVO update(SupplierInvoiceUpdateCmd invoiceUpdateCmd) { + return supplierInvoiceUpdateCmdExe.execute(invoiceUpdateCmd); + } + + @Override + public SupplierInvoiceVO show(SupplierInvoiceShowQry supplierInvoiceShowQry) { + return supplierInvoiceShowQryExe.execute(supplierInvoiceShowQry); + } + + @Override + public void destroy(SupplierInvoiceDestroyCmd supplierInvoiceDestroyCmd) { + supplierInvoiceDestroyCmdExe.execute(supplierInvoiceDestroyCmd); + } +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/OrderSupplier.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/OrderSupplier.java index 05c31c2..6df1a83 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/OrderSupplier.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/OrderSupplier.java @@ -156,7 +156,12 @@ public class OrderSupplier extends DTO { private Boolean invoiceUpload; /** - * 发票 + * 供应商发票ID + */ + private Long invoiceId; + + /** + * 发票图片(支持多张) */ private List invoiceImg; diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/SupplierInvoice.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/SupplierInvoice.java new file mode 100644 index 0000000..c730584 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/SupplierInvoice.java @@ -0,0 +1,73 @@ +package com.xunhong.erp.turbo.biz.domain.entity; + +import com.alibaba.cola.domain.Entity; +import com.alibaba.cola.dto.DTO; +import com.xunhong.erp.turbo.api.biz.dto.common.OrderSupplierInvoice; +import com.xunhong.erp.turbo.api.biz.dto.common.UploadFileItem; +import com.xunhong.erp.turbo.api.biz.dto.enums.SupplierInvoiceTypeEnum; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * @author shenyifei + */ +@Data +@Entity +@EqualsAndHashCode(callSuper = true) +public class SupplierInvoice extends DTO { + + /** + * 发票ID + */ + private Long supplierInvoiceId; + + /** + * 发票类型:1_瓜农 + */ + private SupplierInvoiceTypeEnum type; + + /** + * 发票开具人 + */ + private Long supplierId; + + /** + * 发票开具人名称 + */ + private String supplierName; + + /** + * 代开发票人的信息 + */ + private List orderSupplierInvoiceList; + + /** + * 发票图片(支持多张) + */ + private List invoiceImg; + + /** + * 登记时间 + */ + private LocalDateTime registrationTime; + + /** + * 创建人ID + */ + private Long createdBy; + + /** + * 创建人姓名 + */ + private String createdByName; + + /** + * 创建时间 + */ + private LocalDateTime createdAt; + +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/OrderSupplierGateway.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/OrderSupplierGateway.java index c8ed168..c76f9dc 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/OrderSupplierGateway.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/OrderSupplierGateway.java @@ -1,7 +1,6 @@ package com.xunhong.erp.turbo.biz.domain.gateway; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierBatchInvoiceUploadCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierUpdateCmd; import com.xunhong.erp.turbo.api.biz.dto.qry.OrderSupplierPageQry; import com.xunhong.erp.turbo.biz.domain.entity.OrderSupplier; @@ -13,7 +12,5 @@ public interface OrderSupplierGateway { IPage page(OrderSupplierPageQry orderSupplierPageQry); OrderSupplier update(OrderSupplierUpdateCmd orderSupplierUpdateCmd); - - void batchInvoiceUpload(OrderSupplierBatchInvoiceUploadCmd cmd); } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/SupplierInvoiceGateway.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/SupplierInvoiceGateway.java new file mode 100644 index 0000000..767c3ff --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/SupplierInvoiceGateway.java @@ -0,0 +1,30 @@ +package com.xunhong.erp.turbo.biz.domain.gateway; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierInvoiceCreateCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierInvoiceDestroyCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierInvoiceUpdateCmd; +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierInvoiceListQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierInvoicePageQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierInvoiceShowQry; +import com.xunhong.erp.turbo.biz.domain.entity.SupplierInvoice; + +import java.util.List; + +/** + * @author shenyifei + */ +public interface SupplierInvoiceGateway { + SupplierInvoice save(SupplierInvoiceCreateCmd supplierInvoiceCreateCmd); + + IPage page(SupplierInvoicePageQry supplierInvoicePageQry); + + List list(SupplierInvoiceListQry supplierInvoiceListQry); + + SupplierInvoice update(SupplierInvoiceUpdateCmd invoiceUpdateCmd); + + SupplierInvoice show(SupplierInvoiceShowQry supplierInvoiceShowQry); + + void destroy(SupplierInvoiceDestroyCmd supplierInvoiceDestroyCmd); +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/convert/SupplierInvoiceConvert.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/convert/SupplierInvoiceConvert.java new file mode 100644 index 0000000..0869184 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/convert/SupplierInvoiceConvert.java @@ -0,0 +1,32 @@ +package com.xunhong.erp.turbo.biz.infrastructure.convert; + +import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierInvoiceCreateCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierInvoiceUpdateCmd; +import com.xunhong.erp.turbo.biz.domain.entity.SupplierInvoice; +import com.xunhong.erp.turbo.biz.infrastructure.entity.SupplierInvoiceDO; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingTarget; +import org.mapstruct.NullValueCheckStrategy; + +/** + * @author shenyifei + */ +@Mapper(componentModel = "spring", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS) +public interface SupplierInvoiceConvert { + + SupplierInvoice toInvoice(SupplierInvoiceDO supplierInvoiceDO); + + @Mapping(target = "version", ignore = true) + @Mapping(target = "updatedAt", ignore = true) + @Mapping(target = "isDelete", ignore = true) + @Mapping(target = "createdAt", ignore = true) + SupplierInvoiceDO toInvoiceDO(SupplierInvoiceCreateCmd supplierInvoiceCreateCmd); + + @Mapping(target = "version", ignore = true) + @Mapping(target = "updatedAt", ignore = true) + @Mapping(target = "isDelete", ignore = true) + @Mapping(target = "createdAt", ignore = true) + void toInvoiceDO(@MappingTarget SupplierInvoiceDO supplierInvoiceDO, SupplierInvoiceUpdateCmd invoiceUpdateCmd); +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/OrderSupplierDO.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/OrderSupplierDO.java index c6050fe..0aa6780 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/OrderSupplierDO.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/OrderSupplierDO.java @@ -183,10 +183,10 @@ public class OrderSupplierDO extends BaseDO { private Boolean invoiceUpload; /** - * 发票 + * 票证ID */ - @TableField(value = "invoice_img", typeHandler = JacksonTypeHandler.class) - private List invoiceImg; + @TableField(value = "invoice_id") + private Long invoiceId; /** * 是否上传合同 @@ -254,4 +254,6 @@ public class OrderSupplierDO extends BaseDO { @TableField(exist = false) private OrderStateEnum poState; + @TableField(exist = false) + private List invoiceImg; } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/SupplierInvoiceDO.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/SupplierInvoiceDO.java new file mode 100644 index 0000000..593423e --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/SupplierInvoiceDO.java @@ -0,0 +1,81 @@ +package com.xunhong.erp.turbo.biz.infrastructure.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import com.xunhong.erp.turbo.api.biz.dto.common.OrderSupplierInvoice; +import com.xunhong.erp.turbo.api.biz.dto.common.UploadFileItem; +import com.xunhong.erp.turbo.api.biz.dto.enums.SupplierInvoiceTypeEnum; +import com.xunhong.erp.turbo.datasource.domain.entity.BaseDO; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * @author shenyifei + */ +@Data +@TableName(value = "supplier_invoice", autoResultMap = true) +@EqualsAndHashCode(callSuper = true) +public class SupplierInvoiceDO extends BaseDO { + + /** + * 发票ID + */ + @TableId(value = "supplier_invoice_id", type = IdType.ASSIGN_ID) + private Long supplierInvoiceId; + + /** + * 发票类型:1_瓜农 + */ + @TableField(value = "type") + private SupplierInvoiceTypeEnum type; + + /** + * 发票开具人 + */ + @TableField(value = "supplier_id") + private Long supplierId; + + /** + * 发票开具人名称 + */ + @TableField(value = "supplier_name") + private String supplierName; + + /** + * 代开发票人的信息 + */ + @TableField(value = "order_supplier_invoice", typeHandler = JacksonTypeHandler.class) + private List orderSupplierInvoiceList; + + /** + * 发票图片(支持多张) + */ + @TableField(value = "invoice_img", typeHandler = JacksonTypeHandler.class) + private List invoiceImg; + + /** + * 登记时间 + */ + @TableField(value = "registration_time") + private LocalDateTime registrationTime; + + /** + * 创建人ID + */ + @TableField(value = "created_by") + private Long createdBy; + + /** + * 创建人姓名 + */ + @TableField(value = "created_by_name") + private String createdByName; + +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderGatewayImpl.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderGatewayImpl.java index 6b9cca7..85ffebc 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderGatewayImpl.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderGatewayImpl.java @@ -23,10 +23,7 @@ import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -69,6 +66,7 @@ public class OrderGatewayImpl implements OrderGateway { private final SupplierConvert supplierConvert; private final DealerMapper dealerMapper; + private final SupplierInvoiceMapper supplierInvoiceMapper; @Override @Transactional @@ -174,8 +172,15 @@ public class OrderGatewayImpl implements OrderGateway { orderDO.setOrderPackageDOList(orderPackageDOList.stream().filter(orderPackageDO -> Objects.isNull(orderPackageDO.getOrderSupplierId())).toList()); + Set invoiceIdList = orderSupplierDOList.stream().map(OrderSupplierDO::getInvoiceId).collect(Collectors.toSet()); + List supplierInvoiceDOList = supplierInvoiceMapper.selectByIds(invoiceIdList); + Map supplierInvoiceDOMap = supplierInvoiceDOList.stream().collect(Collectors.toMap(SupplierInvoiceDO::getSupplierInvoiceId, Function.identity())); + if (CollUtil.isNotEmpty(orderSupplierIdList)) { orderSupplierDOList.forEach(orderSupplierDO -> { + if (Objects.nonNull(orderSupplierDO.getInvoiceId())) { + orderSupplierDO.setInvoiceImg(supplierInvoiceDOMap.get(orderSupplierDO.getInvoiceId()).getInvoiceImg()); + } orderSupplierDO.setOrderPackageDOList(orderPackageDOList.stream().filter(orderPackageDO -> orderSupplierDO.getOrderSupplierId().equals(orderPackageDO.getOrderSupplierId())).toList()); }); } @@ -855,6 +860,22 @@ public class OrderGatewayImpl implements OrderGateway { } } + // 第四步处理发票 + if (orderStep2Cmd.getActive() == 5) { + // 查找对应的更新数据 + OrderSupplier updatedSupplier = updatedSuppliers.stream() + .filter(s -> (s.getOrderSupplierId() != null && s.getOrderSupplierId().equals(supplierDO.getOrderSupplierId())) + || (s.getOrderSupplierId() == null && supplierDO.getOrderSupplierId() != null + && s.getSupplierId().equals(supplierDO.getSupplierId()))) + .findFirst() + .orElse(null); + + if (updatedSupplier != null) { + // 处理发票信息 + handleInvoiceInfo(supplierDO, updatedSupplier, orderStep2Cmd); + } + } + if (LoadingModeEnum.FRAME_WITH_NET.equals(supplierDO.getLoadingMode())) { // 如果是搭架子+网垫,则删除所有包材信息 LambdaQueryWrapper packageDeleteWrapper = Wrappers.lambdaQuery(OrderPackageDO.class); @@ -864,6 +885,122 @@ public class OrderGatewayImpl implements OrderGateway { } } + /** + * 处理供应商发票信息 + * 逻辑: + * 1. 如果前端传了invoiceId且与数据库不一致 → 删除旧发票记录 + * 2. 如果前端传了invoiceImg → 更新/新增发票记录 + * 3. 如果前端既没传invoiceId也没传invoiceImg且数据库有发票 → 删除发票记录 + * + * @param supplierDO 数据库中的供应商信息 + * @param updatedSupplier 前端传来的供应商信息 + * @param orderStep2Cmd 订单第二步命令 + */ + private void handleInvoiceInfo(OrderSupplierDO supplierDO, OrderSupplier updatedSupplier, OrderStep2Cmd orderStep2Cmd) { + Long dbInvoiceId = supplierDO.getInvoiceId(); + Long frontendInvoiceId = updatedSupplier.getInvoiceId(); + List frontendInvoiceImg = updatedSupplier.getInvoiceImg(); + + // 判断是否有发票图片传入 + boolean hasInvoiceImg = CollUtil.isNotEmpty(frontendInvoiceImg); + + // 场景1:前端传了invoiceId,且与数据库中的invoiceId不一致 + if (frontendInvoiceId != null && !frontendInvoiceId.equals(dbInvoiceId)) { + // 删除旧的发票记录 + if (dbInvoiceId != null) { + supplierInvoiceMapper.deleteById(dbInvoiceId); + } + // 更新OrderSupplierDO的invoiceId为新的 + supplierDO.setInvoiceId(frontendInvoiceId); + } + // 场景2:前端传了发票图片 + else if (hasInvoiceImg) { + // 如果没有invoiceId,需要新增SupplierInvoice记录 + if (frontendInvoiceId == null) { + // 创建新的发票记录 + SupplierInvoiceDO newInvoice = new SupplierInvoiceDO(); + newInvoice.setType(SupplierInvoiceTypeEnum.FARMER); + newInvoice.setSupplierId(supplierDO.getSupplierId()); + newInvoice.setSupplierName(supplierDO.getName()); + newInvoice.setInvoiceImg(frontendInvoiceImg); + newInvoice.setCreatedBy(orderStep2Cmd.getCreatedBy()); + newInvoice.setCreatedByName(orderStep2Cmd.getCreatedByName()); + + // 构建 orderSupplierInvoice 列表 + List orderSupplierInvoiceList = buildOrderSupplierInvoiceList(supplierDO); + newInvoice.setOrderSupplierInvoiceList(orderSupplierInvoiceList); + + supplierInvoiceMapper.insert(newInvoice); + + // 更新OrderSupplierDO的invoiceId + supplierDO.setInvoiceId(newInvoice.getSupplierInvoiceId()); + } else { + // 如果有invoiceId,更新对应的SupplierInvoice记录 + SupplierInvoiceDO existingInvoice = supplierInvoiceMapper.selectById(frontendInvoiceId); + if (existingInvoice != null) { + existingInvoice.setInvoiceImg(frontendInvoiceImg); + supplierInvoiceMapper.updateById(existingInvoice); + } + } + } + // 场景3:前端既没传invoiceId也没传invoiceImg,且数据库有发票 + else if (frontendInvoiceId == null && !hasInvoiceImg && dbInvoiceId != null) { + // 删除原发票记录 + supplierInvoiceMapper.deleteById(dbInvoiceId); + // 将OrderSupplierDO的invoiceId设为null + supplierDO.setInvoiceId(null); + } + + // 最后更新OrderSupplierDO + orderSupplierMapper.updateById(supplierDO); + } + + /** + * 构建供应商发票信息列表 + * 从 OrderSupplierDO 中提取相关信息构建 OrderSupplierInvoice + * + * @param supplierDO 供应商信息 + * @return OrderSupplierInvoice 列表 + */ + private List buildOrderSupplierInvoiceList(OrderSupplierDO supplierDO) { + List invoiceList = new ArrayList<>(); + + // 查询订单车辆信息获取车次号 + OrderVehicleDO orderVehicleDO = orderVehicleMapper.selectOne( + Wrappers.lambdaQuery(OrderVehicleDO.class) + .eq(OrderVehicleDO::getOrderId, supplierDO.getOrderId()) + ); + + // 查询订单经销商信息 + OrderDealerDO orderDealerDO = orderDealerMapper.selectOne( + Wrappers.lambdaQuery(OrderDealerDO.class) + .eq(OrderDealerDO::getOrderId, supplierDO.getOrderId()) + ); + + // 构建 OrderSupplierInvoice 对象 + OrderSupplierInvoice invoice = new OrderSupplierInvoice(); + invoice.setOrderSupplierId(supplierDO.getOrderSupplierId()); + invoice.setOrderId(supplierDO.getOrderId()); + invoice.setSupplierId(supplierDO.getSupplierId()); + invoice.setName(supplierDO.getName()); + invoice.setType(supplierDO.getType()); + invoice.setInvoiceAmount(supplierDO.getInvoiceAmount()); + + // 设置车辆信息 + if (orderVehicleDO != null) { + invoice.setVehicleNo(orderVehicleDO.getVehicleNo()); + } + + // 设置经销商信息 + if (orderDealerDO != null) { + invoice.setDealerId(orderDealerDO.getDealerId()); + invoice.setDealerName(orderDealerDO.getShortName()); + } + + invoiceList.add(invoice); + return invoiceList; + } + @Override @Transactional public void saveStep3(OrderStep3Cmd orderStep3Cmd) { diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderSupplierGatewayImpl.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderSupplierGatewayImpl.java index 9bcd6de..c99fc51 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderSupplierGatewayImpl.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/OrderSupplierGatewayImpl.java @@ -1,13 +1,10 @@ package com.xunhong.erp.turbo.biz.infrastructure.gateway; import cn.hutool.core.collection.CollUtil; -import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierBatchInvoiceUploadCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierUpdateCmd; import com.xunhong.erp.turbo.api.biz.dto.qry.OrderSupplierPageQry; import com.xunhong.erp.turbo.biz.domain.entity.OrderSupplier; @@ -96,17 +93,5 @@ public class OrderSupplierGatewayImpl implements OrderSupplierGateway { return orderSupplierConvert.toOrderSupplier(orderSupplierDO); } - - @Override - public void batchInvoiceUpload(OrderSupplierBatchInvoiceUploadCmd orderSupplierBatchInvoiceUploadCmd) { - // 构建更新条件 - LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(OrderSupplierDO.class); - updateWrapper.in(OrderSupplierDO::getOrderSupplierId, orderSupplierBatchInvoiceUploadCmd.getOrderSupplierIdList()) - .set(OrderSupplierDO::getInvoiceUpload, true) - .set(OrderSupplierDO::getInvoiceImg, JSONObject.toJSONString(orderSupplierBatchInvoiceUploadCmd.getInvoiceImg())); - - // 执行更新 - orderSupplierMapper.update(updateWrapper); - } } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/SupplierInvoiceGatewayImpl.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/SupplierInvoiceGatewayImpl.java new file mode 100644 index 0000000..ef21759 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/SupplierInvoiceGatewayImpl.java @@ -0,0 +1,110 @@ +package com.xunhong.erp.turbo.biz.infrastructure.gateway; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierInvoiceCreateCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierInvoiceDestroyCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierInvoiceUpdateCmd; +import com.xunhong.erp.turbo.api.biz.dto.common.OrderSupplierInvoice; +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierInvoiceListQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierInvoicePageQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierInvoiceShowQry; +import com.xunhong.erp.turbo.biz.domain.entity.SupplierInvoice; +import com.xunhong.erp.turbo.biz.domain.gateway.SupplierInvoiceGateway; +import com.xunhong.erp.turbo.biz.infrastructure.convert.SupplierInvoiceConvert; +import com.xunhong.erp.turbo.biz.infrastructure.entity.OrderSupplierDO; +import com.xunhong.erp.turbo.biz.infrastructure.entity.SupplierInvoiceDO; +import com.xunhong.erp.turbo.biz.infrastructure.mapper.OrderSupplierMapper; +import com.xunhong.erp.turbo.biz.infrastructure.mapper.SupplierInvoiceMapper; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * @author shenyifei + */ +@Repository +@RequiredArgsConstructor +public class SupplierInvoiceGatewayImpl implements SupplierInvoiceGateway { + private final SupplierInvoiceMapper supplierInvoiceMapper; + private final SupplierInvoiceConvert supplierInvoiceConvert; + + private final OrderSupplierMapper orderSupplierMapper; + + @Override + @Transactional + public SupplierInvoice save(SupplierInvoiceCreateCmd supplierInvoiceCreateCmd) { + SupplierInvoiceDO supplierInvoiceDO = supplierInvoiceConvert.toInvoiceDO(supplierInvoiceCreateCmd); + supplierInvoiceMapper.insert(supplierInvoiceDO); + + List orderSupplierIdList = supplierInvoiceCreateCmd.getOrderSupplierInvoiceList().stream().map(OrderSupplierInvoice::getOrderSupplierId).toList(); + if (CollUtil.isNotEmpty(orderSupplierIdList)) { + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(OrderSupplierDO.class); + updateWrapper.in(OrderSupplierDO::getOrderSupplierId, orderSupplierIdList); + updateWrapper.set(OrderSupplierDO::getInvoiceUpload, Boolean.TRUE); + updateWrapper.set(OrderSupplierDO::getInvoiceId, supplierInvoiceDO.getSupplierInvoiceId()); + orderSupplierMapper.update(null, updateWrapper); + } + + return supplierInvoiceConvert.toInvoice(supplierInvoiceDO); + } + + @Override + public IPage page(SupplierInvoicePageQry supplierInvoicePageQry) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(SupplierInvoiceDO.class); + queryWrapper.orderByDesc(SupplierInvoiceDO::getCreatedAt); + + IPage page = new Page<>(supplierInvoicePageQry.getPageIndex(), supplierInvoicePageQry.getPageSize()); + page = supplierInvoiceMapper.selectPage(page, queryWrapper); + + return page.convert(supplierInvoiceConvert::toInvoice); + } + + @Override + public List list(SupplierInvoiceListQry supplierInvoiceListQry) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(SupplierInvoiceDO.class); + List supplierInvoiceDOList = supplierInvoiceMapper.selectList(queryWrapper); + return supplierInvoiceDOList.stream().map(supplierInvoiceConvert::toInvoice).toList(); + } + + @Override + public SupplierInvoice update(SupplierInvoiceUpdateCmd invoiceUpdateCmd) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(SupplierInvoiceDO.class); + queryWrapper.eq(SupplierInvoiceDO::getSupplierInvoiceId, invoiceUpdateCmd.getSupplierInvoiceId()); + queryWrapper.last("limit 1"); + + SupplierInvoiceDO supplierInvoiceDO = supplierInvoiceMapper.selectOne(queryWrapper); + + supplierInvoiceConvert.toInvoiceDO(supplierInvoiceDO, invoiceUpdateCmd); + supplierInvoiceMapper.updateById(supplierInvoiceDO); + + return supplierInvoiceConvert.toInvoice(supplierInvoiceDO); + } + + @Override + public SupplierInvoice show(SupplierInvoiceShowQry supplierInvoiceShowQry) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(SupplierInvoiceDO.class); + queryWrapper.eq(SupplierInvoiceDO::getSupplierInvoiceId, supplierInvoiceShowQry.getSupplierInvoiceId()); + queryWrapper.last("limit 1"); + + SupplierInvoiceDO supplierInvoiceDO = supplierInvoiceMapper.selectOne(queryWrapper); + return supplierInvoiceConvert.toInvoice(supplierInvoiceDO); + } + + @Override + public void destroy(SupplierInvoiceDestroyCmd supplierInvoiceDestroyCmd) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(SupplierInvoiceDO.class); + queryWrapper.eq(SupplierInvoiceDO::getSupplierInvoiceId, supplierInvoiceDestroyCmd.getSupplierInvoiceId()); + queryWrapper.last("limit 1"); + + SupplierInvoiceDO supplierInvoiceDO = supplierInvoiceMapper.selectOne(queryWrapper); + supplierInvoiceDO.deleteById(); + } +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/SupplierInvoiceMapper.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/SupplierInvoiceMapper.java new file mode 100644 index 0000000..529ea5c --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/SupplierInvoiceMapper.java @@ -0,0 +1,13 @@ +package com.xunhong.erp.turbo.biz.infrastructure.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xunhong.erp.turbo.biz.infrastructure.entity.SupplierInvoiceDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 发票记录表Mapper + * @author shenyifei + */ +@Mapper +public interface SupplierInvoiceMapper extends BaseMapper { +} diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderSupplierMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderSupplierMapper.xml index 579cf92..d1100bb 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderSupplierMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderSupplierMapper.xml @@ -28,14 +28,13 @@ - - + + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/SupplierInvoiceMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/SupplierInvoiceMapper.xml new file mode 100644 index 0000000..9be195d --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/SupplierInvoiceMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/OrderSupplierServiceI.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/OrderSupplierServiceI.java index 1fff74f..b7b4f35 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/OrderSupplierServiceI.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/OrderSupplierServiceI.java @@ -1,6 +1,5 @@ package com.xunhong.erp.turbo.api.biz.api; -import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierBatchInvoiceUploadCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.OrderSupplierUpdateCmd; import com.xunhong.erp.turbo.api.biz.dto.qry.OrderSupplierPageQry; import com.xunhong.erp.turbo.api.biz.dto.vo.OrderSupplierVO; @@ -13,12 +12,5 @@ public interface OrderSupplierServiceI { PageDTO page(OrderSupplierPageQry orderSupplierPageQry); OrderSupplierVO update(OrderSupplierUpdateCmd orderSupplierUpdateCmd); - - /** - * 批量上传供应商发票 - * - * @param batchInvoiceUploadCmd 批量上传发票命令 - */ - void batchUploadInvoice(OrderSupplierBatchInvoiceUploadCmd batchInvoiceUploadCmd); } diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/SupplierInvoiceServiceI.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/SupplierInvoiceServiceI.java new file mode 100644 index 0000000..15a1488 --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/SupplierInvoiceServiceI.java @@ -0,0 +1,30 @@ +package com.xunhong.erp.turbo.api.biz.api; + +import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierInvoiceCreateCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierInvoiceDestroyCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierInvoiceUpdateCmd; +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierInvoiceListQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierInvoicePageQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierInvoiceShowQry; +import com.xunhong.erp.turbo.api.biz.dto.vo.SupplierInvoiceVO; +import com.xunhong.erp.turbo.base.dto.PageDTO; + +import java.util.List; + +/** + * @author shenyifei + */ +public interface SupplierInvoiceServiceI { + SupplierInvoiceVO create(SupplierInvoiceCreateCmd supplierInvoiceCreateCmd); + + PageDTO page(SupplierInvoicePageQry supplierInvoicePageQry); + + List list(SupplierInvoiceListQry supplierInvoiceListQry); + + SupplierInvoiceVO update(SupplierInvoiceUpdateCmd invoiceIdUpdateCmd); + + SupplierInvoiceVO show(SupplierInvoiceShowQry supplierInvoiceShowQry); + + void destroy(SupplierInvoiceDestroyCmd supplierInvoiceDestroyCmd); +} + diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/OrderSupplierBatchInvoiceUploadCmd.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/OrderSupplierBatchInvoiceUploadCmd.java deleted file mode 100644 index 03c2836..0000000 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/OrderSupplierBatchInvoiceUploadCmd.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.xunhong.erp.turbo.api.biz.dto.cmd; - -import com.xunhong.erp.turbo.api.biz.dto.common.UploadFileItem; -import com.xunhong.erp.turbo.base.dto.Command; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.List; - -/** - * 订单供应商批量上传发票命令 - * - * @author claude - */ -@Data -@EqualsAndHashCode(callSuper = true) -@Schema(description = "订单供应商批量上传发票命令") -public class OrderSupplierBatchInvoiceUploadCmd extends Command { - - /** - * 供应商ID列表 - */ - @Schema(description = "供应商ID列表", requiredMode = Schema.RequiredMode.REQUIRED) - private List orderSupplierIdList; - - /** - * 是否上传票证 - */ - @Schema(title = "是否上传票证") - private Boolean invoiceUpload; - - /** - * 发票照片 - */ - @Schema(title = "发票照片") - private List invoiceImg; - -} diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/OrderSupplierUpdateCmd.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/OrderSupplierUpdateCmd.java index 6372a28..e737007 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/OrderSupplierUpdateCmd.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/OrderSupplierUpdateCmd.java @@ -27,10 +27,16 @@ public class OrderSupplierUpdateCmd extends Command { @Schema(title = "是否上传票证") private Boolean invoiceUpload; + /** + * 票证ID + */ + @Schema(title = "发票ID", requiredMode = Schema.RequiredMode.REQUIRED) + private Long invoiceId; + /** * 发票照片 */ - @Schema(title = "发票照片") + @Schema(title = "瓜农发票照片") private List invoiceImg; /** diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/SupplierInvoiceCreateCmd.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/SupplierInvoiceCreateCmd.java new file mode 100644 index 0000000..2f6ba97 --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/SupplierInvoiceCreateCmd.java @@ -0,0 +1,51 @@ +package com.xunhong.erp.turbo.api.biz.dto.cmd; + +import com.xunhong.erp.turbo.api.biz.dto.common.OrderSupplierInvoice; +import com.xunhong.erp.turbo.api.biz.dto.common.UploadFileItem; +import com.xunhong.erp.turbo.api.biz.dto.enums.SupplierInvoiceTypeEnum; +import com.xunhong.erp.turbo.base.dto.Command; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * @author shenyifei + */ +@Data +@Schema(title = "瓜农发票创建") +@EqualsAndHashCode(callSuper = true) +public class SupplierInvoiceCreateCmd extends Command { + + /** + * 发票类型:1_瓜农 + */ + @Schema(title = "瓜农发票类型:1_瓜农") + private SupplierInvoiceTypeEnum type; + + /** + * 发票开具人 + */ + @Schema(title = "瓜农发票开具人", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) + private Long supplierId; + + /** + * 发票开具人名称 + */ + @Schema(title = "瓜农发票开具人名称", requiredMode = Schema.RequiredMode.REQUIRED) + private String supplierName; + + /** + * 代开发票人的信息 + */ + @Schema(title = "代开发票人的信息") + private List orderSupplierInvoiceList; + + /** + * 发票图片(支持多张) + */ + @Schema(title = "瓜农发票图片(支持多张)") + private List invoiceImg; +} + diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/SupplierInvoiceDestroyCmd.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/SupplierInvoiceDestroyCmd.java new file mode 100644 index 0000000..e447275 --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/SupplierInvoiceDestroyCmd.java @@ -0,0 +1,19 @@ +package com.xunhong.erp.turbo.api.biz.dto.cmd; + +import com.xunhong.erp.turbo.base.dto.Command; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author shenyifei + */ +@Data +@Schema(title = "删除发票") +@EqualsAndHashCode(callSuper = true) +public class SupplierInvoiceDestroyCmd extends Command { + + @Schema(title = "瓜农发票ID", requiredMode = Schema.RequiredMode.REQUIRED, type = "string") + private Long supplierInvoiceId; +} + diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/SupplierInvoiceUpdateCmd.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/SupplierInvoiceUpdateCmd.java new file mode 100644 index 0000000..e725089 --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/SupplierInvoiceUpdateCmd.java @@ -0,0 +1,18 @@ +package com.xunhong.erp.turbo.api.biz.dto.cmd; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author shenyifei + */ +@Data +@Schema(title = "瓜农发票更新") +@EqualsAndHashCode(callSuper = true) +public class SupplierInvoiceUpdateCmd extends SupplierInvoiceCreateCmd { + + @Schema(title = "瓜农发票ID", requiredMode = Schema.RequiredMode.REQUIRED, type = "string") + private Long supplierInvoiceId; +} + diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/common/OrderSupplier.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/common/OrderSupplier.java index f38a00a..5005c0c 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/common/OrderSupplier.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/common/OrderSupplier.java @@ -156,7 +156,7 @@ public class OrderSupplier extends Command { /** * 发票金额 */ - @Schema(title = "发票金额", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(title = "瓜农发票金额", requiredMode = Schema.RequiredMode.REQUIRED) private BigDecimal invoiceAmount; /** @@ -177,10 +177,16 @@ public class OrderSupplier extends Command { @Schema(title = "是否上传票证", requiredMode = Schema.RequiredMode.REQUIRED) private Boolean invoiceUpload; + /** + * 瓜农发票ID + */ + @Schema(title = "瓜农发票ID") + private Long invoiceId; + /** * 发票 */ - @Schema(title = "发票") + @Schema(title = "瓜农发票") private List invoiceImg; /** diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/common/OrderSupplierInvoice.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/common/OrderSupplierInvoice.java new file mode 100644 index 0000000..62b3065 --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/common/OrderSupplierInvoice.java @@ -0,0 +1,72 @@ +package com.xunhong.erp.turbo.api.biz.dto.common; + +import com.alibaba.cola.dto.DTO; +import com.xunhong.erp.turbo.api.biz.dto.enums.SupplierTypeEnum; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * @author shenyifei + */ +@Data +@Schema(title = "供应商发票信息") +@EqualsAndHashCode(callSuper = true) +public class OrderSupplierInvoice extends DTO { + + /** + * 记录ID + */ + @Schema(title = "记录ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) + private Long orderSupplierId; + + /** + * 订单ID + */ + @Schema(title = "订单ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) + private Long orderId; + + /** + * 供应商ID + */ + @Schema(title = "供应商ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) + private Long supplierId; + + /** + * 供应商姓名 + */ + @Schema(title = "供应商姓名", requiredMode = Schema.RequiredMode.REQUIRED) + private String name; + + /** + * 供应商类型:1_瓜农;2_自家档口;3_其他家档口 + */ + @Schema(title = "供应商类型:1_瓜农;2_自家档口;3_其他家档口", requiredMode = Schema.RequiredMode.REQUIRED) + private SupplierTypeEnum type; + + /** + * 发票金额 + */ + @Schema(title = "瓜农发票金额", requiredMode = Schema.RequiredMode.REQUIRED) + private BigDecimal invoiceAmount; + + /** + * 经销商Id + */ + @Schema(title = "经销商Id", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) + private Long dealerId; + + /** + * 经销航名称 + */ + @Schema(title = "经销航名称", requiredMode = Schema.RequiredMode.REQUIRED) + private String dealerName; + + /** + * 车次号 + */ + @Schema(title = "车次号", requiredMode = Schema.RequiredMode.REQUIRED) + private String vehicleNo; +} diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/SupplierInvoiceTypeEnum.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/SupplierInvoiceTypeEnum.java new file mode 100644 index 0000000..f5b66ce --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/SupplierInvoiceTypeEnum.java @@ -0,0 +1,23 @@ +package com.xunhong.erp.turbo.api.biz.dto.enums; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +/** + * 发票类型枚举 + */ +@Getter +@RequiredArgsConstructor +public enum SupplierInvoiceTypeEnum { + /** + * 发票类型:1_瓜农发票 + */ + FARMER(1, "瓜农发票"), + ; + + @EnumValue + private final int type; + + private final String message; +} diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/OrderSupplierPageQry.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/OrderSupplierPageQry.java index 5c3474b..b56577e 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/OrderSupplierPageQry.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/OrderSupplierPageQry.java @@ -33,7 +33,7 @@ public class OrderSupplierPageQry extends PageQuery { @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private List deliveryTime; - @Schema(title = "发票上传", type = "boolean") + @Schema(title = "瓜农发票上传", type = "boolean") private Boolean invoiceUpload; @Schema(title = "订单状态") diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/SupplierInvoiceListQry.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/SupplierInvoiceListQry.java new file mode 100644 index 0000000..393895e --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/SupplierInvoiceListQry.java @@ -0,0 +1,19 @@ +package com.xunhong.erp.turbo.api.biz.dto.qry; + +import com.xunhong.erp.turbo.base.dto.Query; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author shenyifei + */ +@Data +@Schema(title = "瓜农发票列表查询") +@EqualsAndHashCode(callSuper = true) +public class SupplierInvoiceListQry extends Query { + + @Schema(title = "瓜农发票ID", type = "string") + private Long supplierInvoiceId; +} + diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/SupplierInvoicePageQry.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/SupplierInvoicePageQry.java new file mode 100644 index 0000000..0f8cf30 --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/SupplierInvoicePageQry.java @@ -0,0 +1,19 @@ +package com.xunhong.erp.turbo.api.biz.dto.qry; + +import com.xunhong.erp.turbo.base.dto.PageQuery; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author shenyifei + */ +@Data +@Schema(title = "瓜农发票分页查询") +@EqualsAndHashCode(callSuper = true) +public class SupplierInvoicePageQry extends PageQuery { + + @Schema(title = "瓜农发票ID", type = "string") + private Long supplierInvoiceId; +} + diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/SupplierInvoiceShowQry.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/SupplierInvoiceShowQry.java new file mode 100644 index 0000000..6b1bfbc --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/SupplierInvoiceShowQry.java @@ -0,0 +1,19 @@ +package com.xunhong.erp.turbo.api.biz.dto.qry; + +import com.xunhong.erp.turbo.base.dto.Query; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author shenyifei + */ +@Data +@Schema(title = "瓜农发票查询") +@EqualsAndHashCode(callSuper = true) +public class SupplierInvoiceShowQry extends Query { + + @Schema(title = "瓜农发票ID", type = "string") + private Long supplierInvoiceId; +} + diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/OrderSupplierVO.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/OrderSupplierVO.java index 0edcac7..1fdaf87 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/OrderSupplierVO.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/OrderSupplierVO.java @@ -164,7 +164,7 @@ public class OrderSupplierVO extends DTO { /** * 发票金额 */ - @Schema(title = "发票金额", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(title = "瓜农发票金额", requiredMode = Schema.RequiredMode.REQUIRED) private BigDecimal invoiceAmount; /** @@ -203,10 +203,16 @@ public class OrderSupplierVO extends DTO { @Schema(title = "是否上传票证", requiredMode = Schema.RequiredMode.REQUIRED) private Boolean invoiceUpload; + /** + * 票证ID + */ + @Schema(title = "发票ID", requiredMode = Schema.RequiredMode.REQUIRED) + private Long invoiceId; + /** * 发票照片 */ - @Schema(title = "发票照片", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(title = "瓜农发票照片", requiredMode = Schema.RequiredMode.REQUIRED) private List invoiceImg; /** diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/SupplierInvoiceVO.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/SupplierInvoiceVO.java new file mode 100644 index 0000000..e9ec955 --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/SupplierInvoiceVO.java @@ -0,0 +1,83 @@ +package com.xunhong.erp.turbo.api.biz.dto.vo; + +import com.alibaba.cola.dto.DTO; +import com.xunhong.erp.turbo.api.biz.dto.common.OrderSupplierInvoice; +import com.xunhong.erp.turbo.api.biz.dto.common.UploadFileItem; +import com.xunhong.erp.turbo.api.biz.dto.enums.SupplierInvoiceTypeEnum; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * @author shenyifei + */ +@Data +@Schema(title = "瓜农发票") +@EqualsAndHashCode(callSuper = true) +public class SupplierInvoiceVO extends DTO { + + /** + * 发票ID + */ + @Schema(title = "瓜农发票ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) + private Long supplierInvoiceId; + + /** + * 发票类型:1_瓜农 + */ + @Schema(title = "瓜农发票类型:1_瓜农") + private SupplierInvoiceTypeEnum type; + + /** + * 发票开具人 + */ + @Schema(title = "瓜农发票开具人", type = "string", requiredMode = Schema.RequiredMode.REQUIRED) + private Long supplierId; + + /** + * 发票开具人名称 + */ + @Schema(title = "瓜农发票开具人名称", requiredMode = Schema.RequiredMode.REQUIRED) + private String supplierName; + + /** + * 代开发票人的信息 + */ + @Schema(title = "代开发票人的信息") + private List orderSupplierInvoiceList; + + /** + * 发票图片(支持多张) + */ + @Schema(title = "瓜农发票图片(支持多张)") + private List invoiceImg; + + /** + * 登记时间 + */ + @Schema(title = "登记时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime registrationTime; + + /** + * 创建人ID + */ + @Schema(title = "创建人ID", type = "string") + private Long createdBy; + + /** + * 创建人姓名 + */ + @Schema(title = "创建人姓名") + private String createdByName; + + /** + * 创建时间 + */ + @Schema(title = "创建时间") + private LocalDateTime createdAt; + +} +