From 2ac765420398569af63388536775445585a8f83d Mon Sep 17 00:00:00 2001 From: shenyifei Date: Mon, 10 Nov 2025 16:45:29 +0800 Subject: [PATCH] =?UTF-8?q?feat(admin):=20=E6=96=B0=E5=A2=9E=E8=B4=B9?= =?UTF-8?q?=E7=94=A8=E9=A1=B9=E7=9B=AE=E6=8B=96=E6=8B=BD=E6=8E=92=E5=BA=8F?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 CostItemController 中新增 dragCostItem 接口,支持 PATCH 和 PUT 方法 - 引入 CostItemDragCmd 参数校验和权限注解 - 实现费用项目的拖拽排序逻辑,更新 sort 字段 - 优化查询逻辑,按 sort 升序和 createdAt 降序排列 - 添加事务管理确保排序操作的原子性 - 提供计算新排序值及重置排序的方法 - 支持插入到开头、中间、末尾三种场景 - 增加间隙耗尽时的批量重置排序机制 --- erp-turbo-admin/pom.xml | 12 ---- .../admin/controller/CostItemController.java | 12 +++- .../controller/ExtractionController.java | 28 ++++++++- .../admin/controller/SupplierController.java | 8 +++ .../biz/app/assembler/DealerAssembler.java | 2 +- .../executor/query/CostItemDragCmdExe.java | 21 +++++++ .../executor/query/SupplierCheckQryExe.java | 30 ++++++++++ .../biz/app/service/CostItemServiceImpl.java | 9 ++- .../biz/app/service/SupplierServiceImpl.java | 8 +++ .../erp/turbo/biz/domain/entity/CostItem.java | 6 +- .../erp/turbo/biz/domain/entity/Dealer.java | 20 +++++++ .../domain/entity/DealerRebateCustomer.java | 17 ++++++ .../biz/domain/gateway/CostItemGateway.java | 4 +- .../biz/domain/gateway/SupplierGateway.java | 3 + .../biz/infrastructure/entity/CostItemDO.java | 7 ++- .../biz/infrastructure/entity/DealerDO.java | 26 ++++++++- .../entity/DealerRebateCustomerDO.java | 21 +++++++ .../gateway/CostItemGatewayImpl.java | 54 +++++++++++++++++- .../gateway/SupplierGatewayImpl.java | 19 ++++++ .../infrastructure/mapper/CostItemMapper.java | 12 +++- .../main/resources/mapper/DealerMapper.xml | 4 ++ .../executor/cmd/VehicleExtractionCmdExe.java | 10 +++- .../turbo/api/biz/api/CostItemServiceI.java | 4 +- .../turbo/api/biz/api/SupplierServiceI.java | 3 + .../api/biz/dto/cmd/CostItemDragCmd.java | 33 +++++++++++ .../api/biz/dto/cmd/DealerCreateCmd.java | 24 ++++++++ .../cmd/DealerRebateCustomerCreateCmd.java | 21 +++++++ .../biz/dto/enums/RebateCalcMethodEnum.java | 21 +++++++ .../dto/qry/DealerRebateCustomerListQry.java | 7 +++ .../dto/qry/DealerRebateCustomerPageQry.java | 7 +++ .../api/biz/dto/qry/SupplierCheckQry.java | 28 +++++++++ .../biz/dto/vo/DealerRebateCustomerVO.java | 20 +++++++ .../erp/turbo/api/biz/dto/vo/DealerVO.java | 24 ++++++++ .../facade/dto/cmd/VehicleExtractionCmd.java | 3 + .../facade/dto/vo/VehicleExtractionVO.java | 10 ++++ .../erp/turbo/ErpTurboSvcApplication.java | 16 ++++++ .../src/main/resources/application.yml | 34 +++++++++++ .../src/main/resources/bootstrap.yml | 7 +++ output.pdf | Bin 3865 -> 0 bytes pom.xml | 7 --- webpage.pdf | 0 41 files changed, 569 insertions(+), 33 deletions(-) create mode 100644 erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/CostItemDragCmdExe.java create mode 100644 erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/SupplierCheckQryExe.java create mode 100644 erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/CostItemDragCmd.java create mode 100644 erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/RebateCalcMethodEnum.java create mode 100644 erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/SupplierCheckQry.java create mode 100644 erp-turbo-svc/src/main/java/com/xunhong/erp/turbo/ErpTurboSvcApplication.java create mode 100644 erp-turbo-svc/src/main/resources/application.yml create mode 100644 erp-turbo-svc/src/main/resources/bootstrap.yml delete mode 100644 output.pdf delete mode 100644 webpage.pdf diff --git a/erp-turbo-admin/pom.xml b/erp-turbo-admin/pom.xml index 469dcf2..c2a711b 100644 --- a/erp-turbo-admin/pom.xml +++ b/erp-turbo-admin/pom.xml @@ -97,18 +97,6 @@ mybatis-mate-annotation 1.3.4 - - - com.itextpdf - itext7-core - 8.0.3 - pom - - - com.itextpdf - html2pdf - 5.0.3 - diff --git a/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/CostItemController.java b/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/CostItemController.java index f92559c..7b04b78 100644 --- a/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/CostItemController.java +++ b/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/CostItemController.java @@ -9,6 +9,7 @@ import com.xunhong.erp.turbo.api.biz.api.CostItemServiceI; import com.xunhong.erp.turbo.api.biz.dto.cmd.CostItemCreateCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.CostItemDestroyCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.CostItemUpdateCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.CostItemDragCmd; import com.xunhong.erp.turbo.api.biz.dto.qry.CostItemListQry; import com.xunhong.erp.turbo.api.biz.dto.qry.CostItemPageQry; import com.xunhong.erp.turbo.api.biz.dto.qry.CostItemShowQry; @@ -82,4 +83,13 @@ public class CostItemController { costItemService.destroy(costItemDestroyCmd); return Response.buildSuccess(); } -} + + @SaCheckLogin +// @SaCheckPermission(value = {PermissionConstant.MDB_BUSINESS_COST_ITEM_UPDATE}) + @RequestMapping(value = "dragCostItem", method = {RequestMethod.PATCH, RequestMethod.PUT}) + @Operation(summary = "费用项目拖拽排序", method = "PATCH") + public Response dragCostItem(@RequestBody @Validated CostItemDragCmd costItemDragCmd) { + costItemService.drag(costItemDragCmd); + return Response.buildSuccess(); + } +} \ No newline at end of file diff --git a/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/ExtractionController.java b/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/ExtractionController.java index 5c7bc24..30000ab 100644 --- a/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/ExtractionController.java +++ b/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/ExtractionController.java @@ -2,6 +2,9 @@ package com.xunhong.erp.turbo.admin.controller; import cn.dev33.satoken.annotation.SaCheckLogin; import com.alibaba.cola.dto.SingleResponse; +import com.xunhong.erp.turbo.api.biz.api.DealerServiceI; +import com.xunhong.erp.turbo.api.biz.dto.qry.DealerListQry; +import com.xunhong.erp.turbo.api.biz.dto.vo.DealerVO; import com.xunhong.erp.turbo.api.facade.api.DeepSeekServiceI; import com.xunhong.erp.turbo.api.facade.dto.cmd.VehicleExtractionCmd; import com.xunhong.erp.turbo.api.facade.dto.vo.VehicleExtractionVO; @@ -16,6 +19,9 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; +import java.util.stream.Collectors; + /** * 聊天 */ @@ -29,10 +35,30 @@ public class ExtractionController { @DubboReference(version = "1.0.0") private final DeepSeekServiceI deepSeekService; + @DubboReference(version = "1.0.0") + private final DealerServiceI dealerService; + @SaCheckLogin @PostMapping("/extraction/vehicle") @Operation(summary = "智能提取物流信息", method = "POST") public SingleResponse vehicleExtraction(@RequestBody @Validated VehicleExtractionCmd vehicleExtractionCmd) { - return SingleResponse.of(deepSeekService.vehicleExtraction(vehicleExtractionCmd)); + DealerListQry dealerListQry = new DealerListQry(); + dealerListQry.setStatus(Boolean.TRUE); + List dealerVOList = dealerService.list(dealerListQry); + String dealerNames = dealerVOList.stream().map(DealerVO::getShortName).collect(Collectors.joining(",")); + vehicleExtractionCmd.setDealerNames(dealerNames); + + VehicleExtractionVO vehicleExtractionVO = deepSeekService.vehicleExtraction(vehicleExtractionCmd); + String dealerName = vehicleExtractionVO.getDealerName(); + if (dealerName != null) { + dealerVOList.stream() + .filter(dealerVO -> dealerVO.getShortName().equals(dealerName)) + .findFirst() + .ifPresent(dealerVO -> { + vehicleExtractionVO.setDealerId(dealerVO.getDealerId()); + vehicleExtractionVO.setDealerVO(dealerVO); + }); + } + return SingleResponse.of(vehicleExtractionVO); } } diff --git a/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/SupplierController.java b/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/SupplierController.java index db52548..d79a45f 100644 --- a/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/SupplierController.java +++ b/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/SupplierController.java @@ -1,6 +1,7 @@ package com.xunhong.erp.turbo.admin.controller; import cn.dev33.satoken.annotation.SaCheckLogin; +import cn.dev33.satoken.annotation.SaCheckPermission; import com.alibaba.cola.dto.MultiResponse; import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.Response; @@ -9,6 +10,7 @@ import com.xunhong.erp.turbo.api.biz.api.SupplierServiceI; import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierCreateCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierDestroyCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierUpdateCmd; +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierCheckQry; import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierListQry; import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierPageQry; import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierShowQry; @@ -82,4 +84,10 @@ public class SupplierController { supplierService.destroy(supplierDestroyCmd); return Response.buildSuccess(); } + @SaCheckLogin + @GetMapping("/checkSupplier") + @Operation(summary = "检查供应商", method = "GET") + public SingleResponse checkSupplier(@ModelAttribute @Validated SupplierCheckQry supplierCheckQry) { + return SingleResponse.of(supplierService.checkSupplier(supplierCheckQry)); + } } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/assembler/DealerAssembler.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/assembler/DealerAssembler.java index d50bade..d40be27 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/assembler/DealerAssembler.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/assembler/DealerAssembler.java @@ -14,4 +14,4 @@ public interface DealerAssembler { @Mapping(target = "dealerPaymentAccountVOList", source = "dealerPaymentAccountList") DealerVO toDealerVO(Dealer dealer); -} +} \ No newline at end of file diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/CostItemDragCmdExe.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/CostItemDragCmdExe.java new file mode 100644 index 0000000..c1140d7 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/CostItemDragCmdExe.java @@ -0,0 +1,21 @@ +package com.xunhong.erp.turbo.biz.app.executor.query; + +import com.xunhong.erp.turbo.api.biz.dto.cmd.CostItemDragCmd; +import com.xunhong.erp.turbo.biz.domain.gateway.CostItemGateway; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author shenyifei + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class CostItemDragCmdExe { + private final CostItemGateway costItemGateway; + + public void execute(CostItemDragCmd costItemDragCmd) { + costItemGateway.drag(costItemDragCmd); + } +} \ No newline at end of file diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/SupplierCheckQryExe.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/SupplierCheckQryExe.java new file mode 100644 index 0000000..7ae5863 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/SupplierCheckQryExe.java @@ -0,0 +1,30 @@ +package com.xunhong.erp.turbo.biz.app.executor.query; + +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierCheckQry; +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierShowQry; +import com.xunhong.erp.turbo.api.biz.dto.vo.SupplierVO; +import com.xunhong.erp.turbo.biz.app.assembler.SupplierAssembler; +import com.xunhong.erp.turbo.biz.domain.entity.Supplier; +import com.xunhong.erp.turbo.biz.domain.gateway.SupplierGateway; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author shenyifei + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class SupplierCheckQryExe { + + private final SupplierAssembler supplierAssembler; + private final SupplierGateway supplierGateway; + + public SupplierVO execute(SupplierCheckQry supplierCheckQry) { + Supplier supplier = supplierGateway.check(supplierCheckQry); + + return supplierAssembler.toSupplierVO(supplier); + } +} + diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/CostItemServiceImpl.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/CostItemServiceImpl.java index 8102b56..7c52107 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/CostItemServiceImpl.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/CostItemServiceImpl.java @@ -4,6 +4,7 @@ import com.xunhong.erp.turbo.api.biz.api.CostItemServiceI; import com.xunhong.erp.turbo.api.biz.dto.cmd.CostItemCreateCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.CostItemDestroyCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.CostItemUpdateCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.CostItemDragCmd; import com.xunhong.erp.turbo.api.biz.dto.qry.CostItemListQry; import com.xunhong.erp.turbo.api.biz.dto.qry.CostItemPageQry; import com.xunhong.erp.turbo.api.biz.dto.qry.CostItemShowQry; @@ -15,6 +16,7 @@ import com.xunhong.erp.turbo.biz.app.executor.cmd.CostItemUpdateCmdExe; import com.xunhong.erp.turbo.biz.app.executor.query.CostItemListQryExe; import com.xunhong.erp.turbo.biz.app.executor.query.CostItemPageQryExe; import com.xunhong.erp.turbo.biz.app.executor.query.CostItemShowQryExe; +import com.xunhong.erp.turbo.biz.app.executor.query.CostItemDragCmdExe; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboService; @@ -37,6 +39,7 @@ public class CostItemServiceImpl implements CostItemServiceI { private final CostItemListQryExe costItemListQryExe; private final CostItemShowQryExe costItemShowQryExe; private final CostItemDestroyCmdExe costItemDestroyCmdExe; + private final CostItemDragCmdExe costItemDragCmdExe; @Override public CostItemVO create(CostItemCreateCmd costItemCreateCmd) { @@ -67,5 +70,9 @@ public class CostItemServiceImpl implements CostItemServiceI { public void destroy(CostItemDestroyCmd costItemDestroyCmd) { costItemDestroyCmdExe.execute(costItemDestroyCmd); } -} + @Override + public void drag(CostItemDragCmd costItemDragCmd) { + costItemDragCmdExe.execute(costItemDragCmd); + } +} \ No newline at end of file diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/SupplierServiceImpl.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/SupplierServiceImpl.java index 93f19a3..245c835 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/SupplierServiceImpl.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/SupplierServiceImpl.java @@ -4,6 +4,7 @@ import com.xunhong.erp.turbo.api.biz.api.SupplierServiceI; import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierCreateCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierDestroyCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierUpdateCmd; +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierCheckQry; import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierListQry; import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierPageQry; import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierShowQry; @@ -12,6 +13,7 @@ import com.xunhong.erp.turbo.base.dto.PageDTO; import com.xunhong.erp.turbo.biz.app.executor.cmd.SupplierCreateCmdExe; import com.xunhong.erp.turbo.biz.app.executor.cmd.SupplierDestroyCmdExe; import com.xunhong.erp.turbo.biz.app.executor.cmd.SupplierUpdateCmdExe; +import com.xunhong.erp.turbo.biz.app.executor.query.SupplierCheckQryExe; import com.xunhong.erp.turbo.biz.app.executor.query.SupplierListQryExe; import com.xunhong.erp.turbo.biz.app.executor.query.SupplierPageQryExe; import com.xunhong.erp.turbo.biz.app.executor.query.SupplierShowQryExe; @@ -37,6 +39,7 @@ public class SupplierServiceImpl implements SupplierServiceI { private final SupplierListQryExe supplierListQryExe; private final SupplierShowQryExe supplierShowQryExe; private final SupplierDestroyCmdExe supplierDestroyCmdExe; + private final SupplierCheckQryExe supplierCheckQryExe; @Override public SupplierVO create(SupplierCreateCmd supplierCreateCmd) { @@ -67,5 +70,10 @@ public class SupplierServiceImpl implements SupplierServiceI { public void destroy(SupplierDestroyCmd supplierDestroyCmd) { supplierDestroyCmdExe.execute(supplierDestroyCmd); } + + @Override + public SupplierVO checkSupplier(SupplierCheckQry supplierCheckQry) { + return supplierCheckQryExe.execute(supplierCheckQry); + } } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/CostItem.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/CostItem.java index 7df40b8..ffb6991 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/CostItem.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/CostItem.java @@ -62,5 +62,9 @@ public class CostItem extends DTO { */ private LocalDateTime createdAt; -} + /** + * 排序 + */ + private BigDecimal sort; +} \ No newline at end of file diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/Dealer.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/Dealer.java index f1b7389..32457a4 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/Dealer.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/Dealer.java @@ -103,4 +103,24 @@ public class Dealer extends DTO { */ private List dealerPaymentAccountList; + /** + * 是否开启计提税金 + */ + private Boolean enableAccrualTax; + + /** + * 计提税金比例 + */ + private BigDecimal accrualTaxRatio; + + /** + * 是否开启公司返点 + */ + private Boolean enableCompanyRebate; + + /** + * 公司返点比例 + */ + private BigDecimal companyRebateRatio; + } \ No newline at end of file diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/DealerRebateCustomer.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/DealerRebateCustomer.java index d211157..e783dc4 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/DealerRebateCustomer.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/DealerRebateCustomer.java @@ -2,9 +2,11 @@ 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.enums.RebateCalcMethodEnum; import lombok.Data; import lombok.EqualsAndHashCode; +import java.math.BigDecimal; import java.time.LocalDateTime; /** @@ -45,6 +47,21 @@ public class DealerRebateCustomer extends DTO { */ private LocalDateTime createdAt; + /** + * 返点计算方式:1_按净重计算;2_固定金额;3_不固定 + */ + private RebateCalcMethodEnum calcMethod; + + /** + * 返点单价 + */ + private BigDecimal unitPrice; + + /** + * 返点金额 + */ + private BigDecimal amount; + private Dealer dealer; } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/CostItemGateway.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/CostItemGateway.java index 275bc37..dc5dca4 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/CostItemGateway.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/CostItemGateway.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.xunhong.erp.turbo.api.biz.dto.cmd.CostItemCreateCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.CostItemDestroyCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.CostItemUpdateCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.CostItemDragCmd; import com.xunhong.erp.turbo.api.biz.dto.qry.CostItemListQry; import com.xunhong.erp.turbo.api.biz.dto.qry.CostItemPageQry; import com.xunhong.erp.turbo.api.biz.dto.qry.CostItemShowQry; @@ -26,5 +27,6 @@ public interface CostItemGateway { CostItem show(CostItemShowQry costItemShowQry); void destroy(CostItemDestroyCmd costItemDestroyCmd); -} + void drag(CostItemDragCmd costItemDragCmd); +} \ No newline at end of file diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/SupplierGateway.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/SupplierGateway.java index 940eb51..352e608 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/SupplierGateway.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/SupplierGateway.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierCreateCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierDestroyCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierUpdateCmd; +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierCheckQry; import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierListQry; import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierPageQry; import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierShowQry; @@ -26,5 +27,7 @@ public interface SupplierGateway { Supplier show(SupplierShowQry supplierShowQry); void destroy(SupplierDestroyCmd supplierDestroyCmd); + + Supplier check(SupplierCheckQry supplierCheckQry); } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/CostItemDO.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/CostItemDO.java index 1f266d6..28c5438 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/CostItemDO.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/CostItemDO.java @@ -67,5 +67,10 @@ public class CostItemDO extends BaseDO { @TableField(value = "status") private Boolean status; -} + /** + * 排序 + */ + @TableField(value = "sort") + private BigDecimal sort; +} \ No newline at end of file diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/DealerDO.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/DealerDO.java index 76a861b..94bab0b 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/DealerDO.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/DealerDO.java @@ -110,9 +110,33 @@ public class DealerDO extends BaseDO { @TableField(value = "sort") private BigDecimal sort; + /** + * 是否开启计提税金 + */ + @TableField(value = "enable_accrual_tax") + private Boolean enableAccrualTax; + + /** + * 计提税金比例 + */ + @TableField(value = "accrual_tax_ratio") + private BigDecimal accrualTaxRatio; + + /** + * 是否开启公司返点 + */ + @TableField(value = "enable_company_rebate") + private Boolean enableCompanyRebate; + + /** + * 公司返点比例 + */ + @TableField(value = "company_rebate_ratio") + private BigDecimal companyRebateRatio; + /** * 付款账户列表 */ @TableField(exist = false) private List dealerPaymentAccountDOList; -} \ No newline at end of file +} diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/DealerRebateCustomerDO.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/DealerRebateCustomerDO.java index 3cc678d..4643484 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/DealerRebateCustomerDO.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/DealerRebateCustomerDO.java @@ -4,10 +4,13 @@ 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.xunhong.erp.turbo.api.biz.dto.enums.RebateCalcMethodEnum; import com.xunhong.erp.turbo.datasource.domain.entity.BaseDO; import lombok.Data; import lombok.EqualsAndHashCode; +import java.math.BigDecimal; + /** * @author shenyifei */ @@ -46,6 +49,24 @@ public class DealerRebateCustomerDO extends BaseDO { @TableField(value = "remark") private String remark; + /** + * 返点计算方式:1_按净重计算;2_固定金额;3_不固定 + */ + @TableField(value = "calc_method") + private RebateCalcMethodEnum calcMethod; + + /** + * 返点单价 + */ + @TableField(value = "unit_price") + private BigDecimal unitPrice; + + /** + * 返点金额 + */ + @TableField(value = "amount") + private BigDecimal amount; + @TableField(exist = false) private DealerDO dealerDO; } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/CostItemGatewayImpl.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/CostItemGatewayImpl.java index 3472992..a7e7e31 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/CostItemGatewayImpl.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/CostItemGatewayImpl.java @@ -2,12 +2,14 @@ package com.xunhong.erp.turbo.biz.infrastructure.gateway; import cn.hutool.core.util.StrUtil; 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.CostItemCreateCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.CostItemDestroyCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.CostItemUpdateCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.CostItemDragCmd; import com.xunhong.erp.turbo.api.biz.dto.qry.CostItemListQry; import com.xunhong.erp.turbo.api.biz.dto.qry.CostItemPageQry; import com.xunhong.erp.turbo.api.biz.dto.qry.CostItemShowQry; @@ -18,9 +20,11 @@ import com.xunhong.erp.turbo.biz.infrastructure.entity.CostItemDO; import com.xunhong.erp.turbo.biz.infrastructure.mapper.CostItemMapper; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Objects; +import java.util.Optional; /** * @author shenyifei @@ -46,6 +50,7 @@ public class CostItemGatewayImpl implements CostItemGateway { queryWrapper.like(StrUtil.isNotBlank(costItemPageQry.getRemark()), CostItemDO::getRemark, costItemPageQry.getRemark()); queryWrapper.eq(Objects.nonNull(costItemPageQry.getStatus()), CostItemDO::getStatus, costItemPageQry.getStatus()); queryWrapper.eq(Objects.nonNull(costItemPageQry.getCostType()), CostItemDO::getCostType, costItemPageQry.getCostType()); + queryWrapper.orderByAsc(CostItemDO::getSort); queryWrapper.orderByDesc(CostItemDO::getCreatedAt); IPage page = new Page<>(costItemPageQry.getPageIndex(), costItemPageQry.getPageSize()); @@ -60,6 +65,8 @@ public class CostItemGatewayImpl implements CostItemGateway { queryWrapper.eq(Objects.nonNull(costItemListQry.getShowInEntry()), CostItemDO::getStatus, costItemListQry.getShowInEntry()); queryWrapper.eq(Objects.nonNull(costItemListQry.getStatus()), CostItemDO::getStatus, costItemListQry.getStatus()); queryWrapper.eq(Objects.nonNull(costItemListQry.getCostType()), CostItemDO::getCostType, costItemListQry.getCostType()); + queryWrapper.orderByAsc(CostItemDO::getSort); + queryWrapper.orderByDesc(CostItemDO::getCreatedAt); List costItemDOList = costItemMapper.selectList(queryWrapper); return costItemDOList.stream().map(costItemConvert::toCostItem).toList(); } @@ -97,5 +104,50 @@ public class CostItemGatewayImpl implements CostItemGateway { CostItemDO costItemDO = costItemMapper.selectOne(queryWrapper); costItemDO.deleteById(); } -} + @Override + @Transactional + public void drag(CostItemDragCmd costItemDragCmd) { + reorderTask(costItemDragCmd.getCurrentId(), costItemDragCmd.getPrevId(), costItemDragCmd.getNextId()); + } + + // 拖拽排序核心方法 + public void reorderTask(Long currentId, Long prevId, Long nextId) { + // 获取相邻元素的sort值 + Double prevSort = Optional.ofNullable(prevId) + .map(id -> costItemMapper.selectById(id).getSort().doubleValue()) + .orElse(null); + Double nextSort = Optional.ofNullable(nextId) + .map(id -> costItemMapper.selectById(id).getSort().doubleValue()) + .orElse(null); + // 计算新sort值 + Double newSort = calculateNewSort(prevSort, nextSort); + // 检查是否需要重整排序 + if (needResetSort(prevSort, nextSort)) { + costItemMapper.batchResetSort(costItemMapper.selectById(currentId).getItemId()); + } else { + // 更新当前任务sort值 + costItemMapper.update(null, new LambdaUpdateWrapper() + .eq(CostItemDO::getItemId, currentId) + .set(CostItemDO::getSort, newSort) + ); + } + } + + private Double calculateNewSort(Double prevSort, Double nextSort) { + if (prevSort == null && nextSort != null) { + return nextSort - 1000; // 插入到开头 + } else if (nextSort == null && prevSort != null) { + return prevSort + 1000; // 插入到末尾 + } else if (prevSort == null && nextSort == null) { + return 0.0; + } else { + return (prevSort + nextSort) / 2; // 插入中间 + } + } + + private boolean needResetSort(Double prevSort, Double nextSort) { + return prevSort != null && nextSort != null + && (nextSort - prevSort) < 1.0; // 判断间隙是否耗尽 + } +} \ No newline at end of file diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/SupplierGatewayImpl.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/SupplierGatewayImpl.java index 44b09dd..5c48d92 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/SupplierGatewayImpl.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/SupplierGatewayImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierCreateCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierDestroyCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierUpdateCmd; +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierCheckQry; import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierListQry; import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierPageQry; import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierShowQry; @@ -15,6 +16,7 @@ import com.xunhong.erp.turbo.biz.domain.gateway.SupplierGateway; import com.xunhong.erp.turbo.biz.infrastructure.convert.SupplierConvert; import com.xunhong.erp.turbo.biz.infrastructure.entity.SupplierDO; import com.xunhong.erp.turbo.biz.infrastructure.mapper.SupplierMapper; +import com.xunhong.erp.turbo.datasource.util.AesUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; @@ -98,5 +100,22 @@ public class SupplierGatewayImpl implements SupplierGateway { SupplierDO supplierDO = supplierMapper.selectOne(queryWrapper); supplierDO.deleteById(); } + + @Override + public Supplier check(SupplierCheckQry supplierCheckQry) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(SupplierDO.class); + queryWrapper.eq(Objects.nonNull(supplierCheckQry.getPhone()), SupplierDO::getPhone, AesUtil.encrypt(supplierCheckQry.getPhone())); + queryWrapper.eq(Objects.nonNull(supplierCheckQry.getIdCard()), SupplierDO::getIdCard, AesUtil.encrypt(supplierCheckQry.getIdCard())); + queryWrapper.eq(Objects.nonNull(supplierCheckQry.getName()), SupplierDO::getName, supplierCheckQry.getName()); + queryWrapper.ne(Objects.nonNull(supplierCheckQry.getSupplierId()), SupplierDO::getSupplierId, supplierCheckQry.getSupplierId()); + + queryWrapper.last("limit 1"); + SupplierDO userDO = supplierMapper.selectOne(queryWrapper); + if (Objects.isNull(userDO)) { + return null; + } + + return supplierConvert.toSupplier(userDO); + } } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/CostItemMapper.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/CostItemMapper.java index 48310d8..59ada76 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/CostItemMapper.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/CostItemMapper.java @@ -3,11 +3,19 @@ package com.xunhong.erp.turbo.biz.infrastructure.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.xunhong.erp.turbo.biz.infrastructure.entity.CostItemDO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Update; /** * @author shenyifei */ @Mapper public interface CostItemMapper extends BaseMapper { -} - + // 批量更新排序值(用于间隙重整) + @Update("UPDATE cost_item t " + + "JOIN (SELECT item_id, (ROW_NUMBER() OVER (ORDER BY sort) - 1) * 1000 AS new_sort " + + "FROM cost_item WHERE item_id = #{itemId}) AS sorted_rows " + + "ON t.item_id = sorted_rows.item_id " + + "SET t.sort = sorted_rows.new_sort WHERE t.item_id = #{itemId}") + void batchResetSort(@Param("itemId") Long itemId); +} \ No newline at end of file diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/DealerMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/DealerMapper.xml index 97c2b4e..a82bf8e 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/DealerMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/DealerMapper.xml @@ -14,6 +14,10 @@ + + + + diff --git a/erp-turbo-business/erp-turbo-facade/src/main/java/com/xunhong/erp/turbo/facade/app/executor/cmd/VehicleExtractionCmdExe.java b/erp-turbo-business/erp-turbo-facade/src/main/java/com/xunhong/erp/turbo/facade/app/executor/cmd/VehicleExtractionCmdExe.java index dc60c51..c7db658 100644 --- a/erp-turbo-business/erp-turbo-facade/src/main/java/com/xunhong/erp/turbo/facade/app/executor/cmd/VehicleExtractionCmdExe.java +++ b/erp-turbo-business/erp-turbo-facade/src/main/java/com/xunhong/erp/turbo/facade/app/executor/cmd/VehicleExtractionCmdExe.java @@ -1,5 +1,6 @@ package com.xunhong.erp.turbo.facade.app.executor.cmd; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson2.JSONObject; import com.xunhong.erp.turbo.api.facade.dto.cmd.VehicleExtractionCmd; import com.xunhong.erp.turbo.api.facade.dto.vo.VehicleExtractionVO; @@ -26,9 +27,14 @@ public class VehicleExtractionCmdExe { public VehicleExtractionVO execute(VehicleExtractionCmd vehicleExtractionCmd) { SystemMessage systemMessage = SystemMessage.builder().text("# 角色\n" + "你是物流信息处理助手,可以快速提取和整理运单中的关键信息(车牌号、司机、电话、出发地、目的地、运费)。\n" + + "# 任务1\n" + + "请从运单信息中提取车牌、司机、电话、出发地、目的地、运费等信息,并返回一个JSON格式的字符串。\n" + + "# 任务2\n" + + "通过目的地去匹配经销商名称,待匹配列表如下" + + "\n" + vehicleExtractionCmd.getDealerNames() + "\n" + "# 限制\n" + - "只做信息提取,如果没有可提取的数据请返回 {}\n" + + "只做信息提取和匹配,如果没有可提取的数据请返回 {}\n" + "\n" + "## 输入示例\n" + "15号装车 9米6高栏 兴仁拉纸箱\n" + @@ -40,7 +46,7 @@ public class VehicleExtractionCmdExe { "工作上班时间,12小时内卸完货结运费,如遇雨天延迟装货不补运费\n" + "\n" + "## 输出示例\n" + - "{\"plate\":\"豫RFC220\",\"driver\":null,\"phone\":\"13937795142\",\"origin\":\"五合镇附近\",\"destination\":\"湖北襄阳\",\"price\":\"7000\"}").build(); + "{\"plate\":\"豫RFC220\",\"driver\":null,\"phone\":\"13937795142\",\"origin\":\"五合镇附近\",\"destination\":\"湖北襄阳\",\"price\":\"7000\",\"dealerName\":\"xxxx\"}").build(); UserMessage userMessage = UserMessage.builder().text(vehicleExtractionCmd.getMessage()).build(); Prompt prompt = Prompt.builder().messages(List.of(systemMessage, userMessage)).build(); diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/CostItemServiceI.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/CostItemServiceI.java index 53ae82d..0816450 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/CostItemServiceI.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/CostItemServiceI.java @@ -3,6 +3,7 @@ package com.xunhong.erp.turbo.api.biz.api; import com.xunhong.erp.turbo.api.biz.dto.cmd.CostItemCreateCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.CostItemDestroyCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.CostItemUpdateCmd; +import com.xunhong.erp.turbo.api.biz.dto.cmd.CostItemDragCmd; import com.xunhong.erp.turbo.api.biz.dto.qry.CostItemListQry; import com.xunhong.erp.turbo.api.biz.dto.qry.CostItemPageQry; import com.xunhong.erp.turbo.api.biz.dto.qry.CostItemShowQry; @@ -26,5 +27,6 @@ public interface CostItemServiceI { CostItemVO show(CostItemShowQry costItemShowQry); void destroy(CostItemDestroyCmd costItemDestroyCmd); -} + void drag(CostItemDragCmd costItemDragCmd); +} \ No newline at end of file diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/SupplierServiceI.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/SupplierServiceI.java index 759f489..3f536e7 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/SupplierServiceI.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/SupplierServiceI.java @@ -3,6 +3,7 @@ package com.xunhong.erp.turbo.api.biz.api; import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierCreateCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierDestroyCmd; import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierUpdateCmd; +import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierCheckQry; import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierListQry; import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierPageQry; import com.xunhong.erp.turbo.api.biz.dto.qry.SupplierShowQry; @@ -26,5 +27,7 @@ public interface SupplierServiceI { SupplierVO show(SupplierShowQry supplierShowQry); void destroy(SupplierDestroyCmd supplierDestroyCmd); + + SupplierVO checkSupplier(SupplierCheckQry supplierCheckQry); } diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/CostItemDragCmd.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/CostItemDragCmd.java new file mode 100644 index 0000000..c84812b --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/CostItemDragCmd.java @@ -0,0 +1,33 @@ +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 CostItemDragCmd extends Command { + + /** + * 相邻元素 + */ + @Schema(title = "相邻元素前") + private Long prevId; + + /** + * 相邻元素 + */ + @Schema(title = "相邻元素后") + private Long nextId; + + /** + * 当前元素 + */ + @Schema(title = "当前元素") + private Long currentId; +} \ No newline at end of file diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/DealerCreateCmd.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/DealerCreateCmd.java index 224ee83..f785504 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/DealerCreateCmd.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/DealerCreateCmd.java @@ -94,5 +94,29 @@ public class DealerCreateCmd extends Command { @Schema(title = "状态:1_启用;0_禁用;", requiredMode = Schema.RequiredMode.REQUIRED) private Boolean status; + /** + * 是否开启计提税金 + */ + @Schema(title = "是否开启计提税金") + private Boolean enableAccrualTax; + + /** + * 计提税金比例 + */ + @Schema(title = "计提税金比例") + private BigDecimal accrualTaxRatio; + + /** + * 是否开启公司返点 + */ + @Schema(title = "是否开启公司返点") + private Boolean enableCompanyRebate; + + /** + * 公司返点比例 + */ + @Schema(title = "公司返点比例") + private BigDecimal companyRebateRatio; + } diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/DealerRebateCustomerCreateCmd.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/DealerRebateCustomerCreateCmd.java index 00693a8..5187903 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/DealerRebateCustomerCreateCmd.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/DealerRebateCustomerCreateCmd.java @@ -1,10 +1,13 @@ package com.xunhong.erp.turbo.api.biz.dto.cmd; +import com.xunhong.erp.turbo.api.biz.dto.enums.RebateCalcMethodEnum; import com.xunhong.erp.turbo.base.dto.Command; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; +import java.math.BigDecimal; + /** * @author shenyifei */ @@ -43,5 +46,23 @@ public class DealerRebateCustomerCreateCmd extends Command { @Schema(title = "备注") private String remark; + /** + * 返点计算方式:1_按净重计算;2_固定金额;3_不固定 + */ + @Schema(title = "返点计算方式:1_按净重计算;2_固定金额;3_不固定") + private RebateCalcMethodEnum calcMethod; + + /** + * 返点单价 + */ + @Schema(title = "返点单价") + private BigDecimal unitPrice; + + /** + * 返点金额 + */ + @Schema(title = "返点金额") + private BigDecimal amount; + } diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/RebateCalcMethodEnum.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/RebateCalcMethodEnum.java new file mode 100644 index 0000000..0bb9795 --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/RebateCalcMethodEnum.java @@ -0,0 +1,21 @@ +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 RebateCalcMethodEnum { + /** + * 返点计算方式:1_按净重计算;2_固定金额;3_不固定 + */ + NET_WEIGHT(1, "按净重计算"), + FIXED_AMOUNT(2, "固定金额"), + NOT_FIXED(3, "不固定"); + + @EnumValue + private final int type; + + private final String message; +} \ No newline at end of file diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/DealerRebateCustomerListQry.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/DealerRebateCustomerListQry.java index ba56f75..2a5ac17 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/DealerRebateCustomerListQry.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/DealerRebateCustomerListQry.java @@ -1,5 +1,6 @@ package com.xunhong.erp.turbo.api.biz.dto.qry; +import com.xunhong.erp.turbo.api.biz.dto.enums.RebateCalcMethodEnum; import com.xunhong.erp.turbo.base.dto.Query; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -18,5 +19,11 @@ public class DealerRebateCustomerListQry extends Query { @Schema(title = "客户名称", type = "string") private String name; + + /** + * 返点计算方式 + */ + @Schema(title = "返点计算方式") + private RebateCalcMethodEnum calcMethod; } diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/DealerRebateCustomerPageQry.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/DealerRebateCustomerPageQry.java index 798f94b..e921832 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/DealerRebateCustomerPageQry.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/DealerRebateCustomerPageQry.java @@ -1,5 +1,6 @@ package com.xunhong.erp.turbo.api.biz.dto.qry; +import com.xunhong.erp.turbo.api.biz.dto.enums.RebateCalcMethodEnum; import com.xunhong.erp.turbo.base.dto.PageQuery; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -18,5 +19,11 @@ public class DealerRebateCustomerPageQry extends PageQuery { @Schema(title = "客户名称", type = "string") private String name; + + /** + * 返点计算方式 + */ + @Schema(title = "返点计算方式") + private RebateCalcMethodEnum calcMethod; } diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/SupplierCheckQry.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/SupplierCheckQry.java new file mode 100644 index 0000000..7632cd5 --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/SupplierCheckQry.java @@ -0,0 +1,28 @@ +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 SupplierCheckQry extends PageQuery { + + @Schema(title = "供应商ID", type = "string") + private Long supplierId; + + @Schema(title = "供应商名称", type = "string") + private String name; + + @Schema(title = "身份证号", type = "string") + private String idCard; + + @Schema(title = "手机号", type = "string") + private String phone; +} + diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/DealerRebateCustomerVO.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/DealerRebateCustomerVO.java index c5540f7..344a0c1 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/DealerRebateCustomerVO.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/DealerRebateCustomerVO.java @@ -1,10 +1,12 @@ package com.xunhong.erp.turbo.api.biz.dto.vo; import com.alibaba.cola.dto.DTO; +import com.xunhong.erp.turbo.api.biz.dto.enums.RebateCalcMethodEnum; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; +import java.math.BigDecimal; import java.time.LocalDateTime; /** @@ -57,5 +59,23 @@ public class DealerRebateCustomerVO extends DTO { @Schema(title = "经销商信息") private DealerVO dealerVO; + /** + * 返点计算方式:1_按净重计算;2_固定金额;3_不固定 + */ + @Schema(title = "返点计算方式:1_按净重计算;2_固定金额;3_不固定") + private RebateCalcMethodEnum calcMethod; + + /** + * 返点单价 + */ + @Schema(title = "返点单价") + private BigDecimal unitPrice; + + /** + * 返点金额 + */ + @Schema(title = "返点金额") + private BigDecimal amount; + } diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/DealerVO.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/DealerVO.java index 102fbb1..4cb6586 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/DealerVO.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/DealerVO.java @@ -113,5 +113,29 @@ public class DealerVO extends DTO { */ @Schema(title = "经销商账户列表") private List dealerPaymentAccountVOList; + + /** + * 是否开启计提税金 + */ + @Schema(title = "是否开启计提税金") + private Boolean enableAccrualTax; + + /** + * 计提税金比例 + */ + @Schema(title = "计提税金比例") + private BigDecimal accrualTaxRatio; + + /** + * 是否开启公司返点 + */ + @Schema(title = "是否开启公司返点") + private Boolean enableCompanyRebate; + + /** + * 公司返点比例 + */ + @Schema(title = "公司返点比例") + private BigDecimal companyRebateRatio; } diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/facade/dto/cmd/VehicleExtractionCmd.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/facade/dto/cmd/VehicleExtractionCmd.java index 54fb1d1..e698818 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/facade/dto/cmd/VehicleExtractionCmd.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/facade/dto/cmd/VehicleExtractionCmd.java @@ -12,4 +12,7 @@ public class VehicleExtractionCmd extends Command { @Schema(title = "消息内容", requiredMode = Schema.RequiredMode.REQUIRED) private String message; + + @Schema(title = "经销商信息", requiredMode = Schema.RequiredMode.REQUIRED) + private String dealerNames; } diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/facade/dto/vo/VehicleExtractionVO.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/facade/dto/vo/VehicleExtractionVO.java index 81ce617..d8e8479 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/facade/dto/vo/VehicleExtractionVO.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/facade/dto/vo/VehicleExtractionVO.java @@ -1,5 +1,6 @@ package com.xunhong.erp.turbo.api.facade.dto.vo; +import com.xunhong.erp.turbo.api.biz.dto.vo.DealerVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -25,4 +26,13 @@ public class VehicleExtractionVO { @Schema(title = "价格") private BigDecimal price; + + @Schema(title = "经销商") + private String dealerName; + + @Schema(title = "经销商ID", requiredMode = Schema.RequiredMode.REQUIRED, type = "string") + private Long dealerId; + + @Schema(title = "经销商信息") + private DealerVO dealerVO; } diff --git a/erp-turbo-svc/src/main/java/com/xunhong/erp/turbo/ErpTurboSvcApplication.java b/erp-turbo-svc/src/main/java/com/xunhong/erp/turbo/ErpTurboSvcApplication.java new file mode 100644 index 0000000..478e728 --- /dev/null +++ b/erp-turbo-svc/src/main/java/com/xunhong/erp/turbo/ErpTurboSvcApplication.java @@ -0,0 +1,16 @@ +package com.xunhong.erp.turbo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * @author hollis + */ +@SpringBootApplication(scanBasePackages = {"com.xunhong.erp.turbo", "com.alibaba.cola"}) +public class ErpTurboSvcApplication { + + public static void main(String[] args) { + SpringApplication.run(ErpTurboSvcApplication.class, args); + } + +} diff --git a/erp-turbo-svc/src/main/resources/application.yml b/erp-turbo-svc/src/main/resources/application.yml new file mode 100644 index 0000000..862e175 --- /dev/null +++ b/erp-turbo-svc/src/main/resources/application.yml @@ -0,0 +1,34 @@ +spring: + profiles: + active: dev + application: + name: @application.name@ + config: + import: classpath:cache.yml,classpath:datasource.yml,classpath:sa-token.yml,classpath:openapi.yml + + oss: + enabled: true + roleArn: acs:ram::1405760424165296:role/ramoss + domain: https://img.qilincloud168.com/ + region: cn-beijing + ossEndpoint: https://oss-cn-beijing.aliyuncs.com + stsEndpoint: sts.cn-beijing.aliyuncs.com + access-secret: nQjR51pOeVggk1AgSyroj2svegAH2q + access-key: LTAI5tRk9oGxq7KYb5VtJbUm + bucket: qilincloud168 + policy: '{"Version": "1","Statement": [{"Effect": "Allow","Action": ["oss:PutObject"],"Resource": ["acs:oss:*:*:qilincloud168/*"],"Condition": {}}]}' + + iot: + huaweicloud: + enabled: true + ak: HPUA0UCCTWRVXLQSHYWV + sk: BkwHnQMONChjcQVWT8uLrSpOEMxPRcaMR8sEhtXl + region-id: cn-north-4 + project-id: 0a5e9001800025732fd4c01f007f4a89 + endpoint: a15f98504b.iotda.cn-north-4.myhuaweicloud.com + +server: + port: 38080 + +dubbo: + enabled: false diff --git a/erp-turbo-svc/src/main/resources/bootstrap.yml b/erp-turbo-svc/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..b374ac8 --- /dev/null +++ b/erp-turbo-svc/src/main/resources/bootstrap.yml @@ -0,0 +1,7 @@ +spring: + profiles: + active: dev + application: + name: @application.name@ + config: + import: classpath:base.yml,classpath:logging.yml diff --git a/output.pdf b/output.pdf deleted file mode 100644 index 0e3c8674bef39b5ffc5f307976483bb63f7a7180..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3865 zcmc&%2~-nV78O)PKm@UoMW7UsJ*iZ7#UP781Qn8i(gY++MS_rE5_S|7K~NTDQ$R!! zM3IhS07W(xMNm+&6>Jcf4$CN@EDDV_I0?sY?RI8PpXqaE{`sd;_4EFFuYTUU_r}D{ zk!+1Z;8je1mfrtS1qA{iz-I=i*w`S++&~d5K#~I)BG?gT@!2ra73OUh`2!dfi6j&W zU`CKi_;Je~h&Jnbfe0~s?(Df#7wQ^g)w!x#4r^3h;tFVDjCd_#Ry=#2hYHMNf8Haz zlZU|ml~4pM@vB%rWYzMzLAAIr+qm1IXO|!OFqEY@ ze{w5wr|dbAXJ;`bnUZdBS*dYdqpvfE6%svq^!B@V$!uWisT5XJwI`O8-MBhA!b(#t zQVA8;JKsI9`M!}+ees1+TyDG?#XOF+v#o*{%%(Vly3{URj{BfmIy3uJY|@HM*BO1eV??A)U1)CgMz?KFbCM1> zeS5T7Qb%wJ314vPuYrRIOATB(OVxjAvbkh#-*1ziW~H}JciKu#?j{*jwiTzsvYjy>2PQ21+FNlRN+R8_#E z_2NkBqh9x>lqQ+r+uZ(HQlz4^g; zmH5#l_VR)#C!FHE@Ku^^mN{oCkr%_}?P!$}DOm~dQhe!sDG_@_Oo+IUh(Wj9oiDjj zKGgTKN^8|osX=L`k;ap%*ovN4OU*4aV7<%HC+?LUAe6`WzSrQgk7;Tl)UwCaFR~m9 zBlJOLzj`B+aZ5G>?1Cn3wooZ3$IHzCU>?k|4uJ)?O?Z-=yDGE+$Zz)DT z?y@&q65moY@5u=C;QhE!jn$E;h$5?)V4)mT zWWMAdC;&I}9T@`f@*9$DAZY?_(7$m=iwK5gUbn*}k~~*AexOjYjsGL8BL0<7Cf$HaBtbEH2ZqC zMh-it^lV?Nu_Tl6(^{A=b)VI~S9r2GaaGbl*_hvR^m^Ug-eG2mdau;NsQU^3FhU`^ zK%I41gUhrZz2crp+t8|Uzms0vkf@PEGkpbGGj?B2e><1=d<{air9e67S+O7AQcY}; zq~Jl?q2p$%icsa;*gm9~pEKgs@QWMj(K!C%qgHCuu6 zlD;TX!BIJK@8QNQ^i5@V%?g%lp4CmO6E2SW>Ha+%7FFbmC4IXJ!dW897^zK4YWAX8 z?kb4TuHJk60Vb1f;eT#;ReM6JqgF|>3~ny%>{8W5BwH0N&!#pTD>b*2bR=h2yuBZ( z7ptkm6B4}!)ZCZl^&hSkKd?FLvR>mKVTBt%7>?dmdl;ea?AdrS(&to!8*9Q&UmM6f zUJ=@O_E?X<+WC&}at~m6hJ_F7Zx_}b6Rb?RGe3ICnpbyPrFtJV6cNFSXU$DT3)okc zUSo%qEF#l3OCGMJ)rWERM;0|@-n6@hngy<%9vv?zOet_B>D1*9g+zYnJd`GU?3xx* zNp5du3R|nG`UMkj7Iske56+2Os93%>uk?!5F&EP02XK$yl3(gttjw0t)?U!{GgU<% z;tY~rFcdU`L&u%fG9Ng{KWbKNxuJ_!A=Iw*kITb~_MJ^=s{GMco2h;OiExkhN5do2 z_;rr$X0uAsk%^`5&je}fwsIHWl7x%>bMBPV%5!3LJEERgT<{K5B(tkGRcKpEm)?pt#QK^ObmWO~5t|etE zo1I5+OeQhCo1%f z+NF$j*_l2x+a8;A5jp4%>Taw@Xx!_fI!mV_&v9Gy07AKS=fO?OrS*j-4eo+oy=V?$ z@-4`X96w;p_bQtZL|=Bbdyp2F>67@25xZWCG%sjmwf~OicHRS~*gDnZDv9OuNy(#A zffj}^by#ETuCPS|9b+--JG+ykKP8Fhq<%{`N1%a%TO^i}nm5ET>#qgdkXG zZO;#6BiHd{TAs_>j@-iK+3|$j-=C==Op%;s%~1`vKpDO><^R6qa)smM6884n#rU*r7q0`uUR`8io2c1`Z>WOMmo- zLZiNo0it9w>rZx&T=M+3CK52Xfv`aSPtDm8@V3EWK?Vj#AaWQ?0v=*xSxf>1a~Kee z2Qd&1jc4FFOeP)!6PYX!%Y<-P433TG;P4n62g~L_L_7y%;m{Doz{!pahVeu!p1@#& z93m6NhFMGq12b_b91bF~F?f(gU|^X<77+~-Fl;o0$6!&U|9=KPNM|0056D|xraJk2 v5io;1NGdlHmX(OCYD{K&)%tU*TFpom import - - com.itextpdf - itext7-core - 8.0.3 - pom - import - org.projectlombok diff --git a/webpage.pdf b/webpage.pdf deleted file mode 100644 index e69de29..0000000