From 403c385eaed7fbd9b362457994588f027bc697e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Thu, 26 Feb 2026 14:56:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A7=94=E6=89=98=E5=8A=A0=E5=B7=A5=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=8F=90=E4=BA=A4erp=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contractorder/api/OrderApiImpl.java | 2 +- .../OriginalMaterialProcessingController.java | 16 +-- ...inalMaterialProcessingDetailPageReqVO.java | 2 +- ...riginalMaterialProcessingDetailRespVO.java | 2 +- ...inalMaterialProcessingDetailSaveReqVO.java | 2 +- .../OriginalMaterialProcessingDetailDO.java | 2 +- .../dataobject/salesorder/SalesOrderDO.java | 2 +- .../PurchaseOrderServiceImpl.java | 119 ++++++++++++++---- 8 files changed, 110 insertions(+), 37 deletions(-) diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/OrderApiImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/OrderApiImpl.java index 701cc93d..f875121a 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/OrderApiImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/OrderApiImpl.java @@ -506,7 +506,7 @@ public class OrderApiImpl implements OrderApi { ordDtlDTO.setElementAbbreviation(o.getElementAbbreviation()); ordDtlDTO.setElementName(o.getElementName()); ordDtlDTO.setElementCode(o.getElementNumber()); - ordDtlDTO.setIsEnable(o.getIsEnable() ? "1" : "0"); + ordDtlDTO.setIsEnable(o.getIsEnable()); ordDtlDTO.setTaxNum(o.getTaxNumber()); // ordDtlDTO.setLstQty(o.getForecastQuantity()); ordDtlDTO.setRmk(o.getRemark()); diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/OriginalMaterialProcessingController.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/OriginalMaterialProcessingController.java index d9f5675d..392f378d 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/OriginalMaterialProcessingController.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/OriginalMaterialProcessingController.java @@ -44,21 +44,21 @@ public class OriginalMaterialProcessingController { @PostMapping("/create") @Operation(summary = "创建来料加工订单") - @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:create')") + @PreAuthorize("@ss.hasAnyPermissions('base:original-material-processing-order:create','entedOrder:add')") public CommonResult createOriginalMaterialProcessingOrder(@Valid @RequestBody OriginalMaterialProcessingSaveReqVO createReqVO) { return success(originalMaterialProcessingService.createOriginalMaterialProcessing(createReqVO)); } @PostMapping("/create-batch") @Operation(summary = "批量创建来料加工订单") - @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:create','entedOrder:add')") + @PreAuthorize("@ss.hasAnyPermissions('base:original-material-processing-order:create','entedOrder:add')") public CommonResult> createBatchOriginalMaterialProcessingOrder(@Valid @RequestBody List createReqVOS) { return success(originalMaterialProcessingService.createBatchOriginalMaterialProcessing(createReqVOS)); } @PutMapping("/update") @Operation(summary = "更新来料加工订单") - @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:update','entedOrder:add')") + @PreAuthorize("@ss.hasAnyPermissions('base:original-material-processing-order:update','entedOrder:add')") public CommonResult updateOriginalMaterialProcessingOrder(@Valid @RequestBody OriginalMaterialProcessingSaveReqVO updateReqVO) { originalMaterialProcessingService.updateOriginalMaterialProcessing(updateReqVO); return success(true); @@ -67,7 +67,7 @@ public class OriginalMaterialProcessingController { @DeleteMapping("/delete") @Operation(summary = "删除来料加工订单") @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:delete','entedOrder:edit')") + @PreAuthorize("@ss.hasAnyPermissions('base:original-material-processing-order:delete','entedOrder:edit')") public CommonResult deleteOriginalMaterialProcessingOrder(@RequestParam("id") Long id) { originalMaterialProcessingService.deleteOriginalMaterialProcessing(id); return success(true); @@ -76,7 +76,7 @@ public class OriginalMaterialProcessingController { @DeleteMapping("/delete-list") @Parameter(name = "ids", description = "编号", required = true) @Operation(summary = "批量删除来料加工订单") - @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:delete','entedOrder:edit')") + @PreAuthorize("@ss.hasAnyPermissions('base:original-material-processing-order:delete','entedOrder:edit')") public CommonResult deleteOriginalMaterialProcessingOrderList(@RequestBody BatchDeleteReqVO req) { originalMaterialProcessingService.deleteOriginalMaterialProcessingListByIds(req.getIds()); return success(true); @@ -85,7 +85,7 @@ public class OriginalMaterialProcessingController { @GetMapping("/get") @Operation(summary = "获得来料加工订单") @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:query')") + @PreAuthorize("@ss.hasAnyPermissions('base:original-material-processing-order:query')") public CommonResult getOriginalMaterialProcessingOrder(@RequestParam("id") Long id) { OriginalMaterialProcessingDO originalMaterialProcessingDO = originalMaterialProcessingService.getOriginalMaterialProcessing(id); OriginalMaterialProcessingRespVO bean = BeanUtils.toBean(originalMaterialProcessingDO, OriginalMaterialProcessingRespVO.class); @@ -105,7 +105,7 @@ public class OriginalMaterialProcessingController { @GetMapping("/page") @Operation(summary = "获得来料加工订单分页") - @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:query')") + @PreAuthorize("@ss.hasAnyPermissions('base:original-material-processing-order:query')") public CommonResult> getOriginalMaterialProcessingOrderPage(@Valid OriginalMaterialProcessingPageReqVO pageReqVO) { PageResult pageResult = originalMaterialProcessingService.getOriginalMaterialProcessingPage(pageReqVO); PageResult bean = BeanUtils.toBean(pageResult, OriginalMaterialProcessingRespVO.class); @@ -119,7 +119,7 @@ public class OriginalMaterialProcessingController { @GetMapping("/export-excel") @Operation(summary = "导出来料加工订单 Excel") - @PreAuthorize("@ss.hasPermission('base:original-material-processing-order:export')") + @PreAuthorize("@ss.hasAnyPermissions('base:original-material-processing-order:export')") @ApiAccessLog(operateType = EXPORT) public void exportOriginalMaterialProcessingOrderExcel(@Valid OriginalMaterialProcessingPageReqVO pageReqVO, HttpServletResponse response) throws IOException { diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailPageReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailPageReqVO.java index 51f9feae..7fb8f2af 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailPageReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailPageReqVO.java @@ -69,7 +69,7 @@ public class OriginalMaterialProcessingDetailPageReqVO extends PageParam { private LocalDateTime[] deliveryCargoEndDate; @Schema(description = "是否启用") - private Boolean isEnable; + private String isEnable; @Schema(description = "短文本") private String shortText; diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailRespVO.java index f44ab887..9db35b18 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailRespVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailRespVO.java @@ -87,7 +87,7 @@ public class OriginalMaterialProcessingDetailRespVO { @Schema(description = "是否启用") @ExcelProperty("是否启用") - private Boolean isEnable; + private String isEnable; @Schema(description = "短文本") @ExcelProperty("短文本") diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailSaveReqVO.java index 3dc4f15b..46814bf4 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailSaveReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/originalmaterialprocessing/vo/OriginalMaterialProcessingDetailSaveReqVO.java @@ -72,7 +72,7 @@ public class OriginalMaterialProcessingDetailSaveReqVO { private LocalDateTime deliveryCargoEndDate; @Schema(description = "是否启用") - private Boolean isEnable; + private String isEnable; @Schema(description = "短文本") private String shortText; diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/originalmaterialprocessing/OriginalMaterialProcessingDetailDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/originalmaterialprocessing/OriginalMaterialProcessingDetailDO.java index 0bee201d..f2bdac09 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/originalmaterialprocessing/OriginalMaterialProcessingDetailDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/originalmaterialprocessing/OriginalMaterialProcessingDetailDO.java @@ -125,7 +125,7 @@ public class OriginalMaterialProcessingDetailDO extends BusinessBaseDO { * 是否启用 */ @TableField("IS_ENB") - private Boolean isEnable; + private String isEnable; /** * 短文本 */ diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/salesorder/SalesOrderDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/salesorder/SalesOrderDO.java index 24eae23c..1dd48996 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/salesorder/SalesOrderDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/salesorder/SalesOrderDO.java @@ -63,7 +63,7 @@ public class SalesOrderDO extends BusinessBaseDO { @TableField("SPLR_NAME") private String supplierName; /** - * 订单类型(字典:PRCH_ORD_TP);推送ERP(必须) + * 订单类型(字典:SALE_ORD_TP);推送ERP(必须) */ @TableField("TP") private String type; diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderServiceImpl.java index 8d283c09..1af9ab5c 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderServiceImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderServiceImpl.java @@ -956,6 +956,52 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { return purchaseOrderMapper.selectLinkPage(pageReqVO); } +// @Override +// @CompanyDataPermissionIgnore +// @DeptDataPermissionIgnore +// @TenantIgnore +// @Transactional(rollbackFor = Exception.class) +// public void boundOrder(BoundOrderReqVO reqVO) { +// log.info("开始执行绑定订单操作,请求参数:{}", reqVO); +// //查询当前订单是否已经绑定订单 +// PurchaseOrderDO orderDO = purchaseOrderMapper.selectById(reqVO.getId()); +// PurchaseOrderDO boundOrder = purchaseOrderMapper.selectById(reqVO.getBoundId()); +// if (boundOrder == null || orderDO == null) { +// throw exception(PURCHASE_ORDER_NOT_EXISTS); +// } +// //判断当前订单是否是来料加工销售订单(来料加工消费订单不允许绑定订单) +// if (OrderTypeEnum.ENTED_SALE.getCode().equals(orderDO.getSplyBsnTp())) { +// throw exception(PURCHASE_ORDER_NOT_ALLOW_BIND); +// } +// if (orderDO.getRelatedOrderId() != null) { +// //将已绑定的订单置空 +// LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); +// updateWrapper.eq(PurchaseOrderDO::getId, orderDO.getRelatedOrderId()) +// .set(PurchaseOrderDO::getRelatedOrderId, null); +// int update = purchaseOrderMapper.update(updateWrapper); +// log.info("已绑定的订单已解绑,订单ID:{},影响行数:{}",orderDO.getRelatedOrderId(),update); +// } +// LambdaUpdateWrapper boundUpdateWrapper = new LambdaUpdateWrapper<>(); +// boundUpdateWrapper.eq(PurchaseOrderDO::getId, reqVO.getId()) +// .set(PurchaseOrderDO::getRelatedOrderId, reqVO.getBoundId()); +// purchaseOrderMapper.update(boundUpdateWrapper); +// log.info("订单ID:{} 已绑定订单ID:{}", reqVO.getId(), reqVO.getBoundId()); +// //修改已绑定的的订单 +// if (boundOrder.getRelatedOrderId() != null){ +// LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); +// updateWrapper.eq(PurchaseOrderDO::getId, boundOrder.getRelatedOrderId()) +// .set(PurchaseOrderDO::getRelatedOrderId, null); +// int update = purchaseOrderMapper.update(updateWrapper); +// log.info("已绑定的订单已解绑,订单ID:{},影响行数:{}",boundOrder.getRelatedOrderId(),update); +// } +// +// LambdaUpdateWrapper bindUpdateWrapper = new LambdaUpdateWrapper<>(); +// bindUpdateWrapper.eq(PurchaseOrderDO::getId, reqVO.getBoundId()) +// .set(PurchaseOrderDO::getRelatedOrderId, reqVO.getId()); +// purchaseOrderMapper.update(bindUpdateWrapper); +// log.info("绑定订单操作完成,订单ID:{}", reqVO.getId()); +// } + @Override @CompanyDataPermissionIgnore @DeptDataPermissionIgnore @@ -963,40 +1009,67 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { @Transactional(rollbackFor = Exception.class) public void boundOrder(BoundOrderReqVO reqVO) { log.info("开始执行绑定订单操作,请求参数:{}", reqVO); - //查询当前订单是否已经绑定订单 - PurchaseOrderDO orderDO = purchaseOrderMapper.selectById(reqVO.getId()); - PurchaseOrderDO boundOrder = purchaseOrderMapper.selectById(reqVO.getBoundId()); - if (boundOrder == null || orderDO == null) { - throw exception(PURCHASE_ORDER_NOT_EXISTS); + Long mainOrderId = reqVO.getId(); + Long boundOrderId = reqVO.getBoundId(); + + // 1. 基础校验:自绑定直接返回 + if (mainOrderId.equals(boundOrderId)) { + log.warn("绑定订单跳过:订单ID{}不能与自身绑定", mainOrderId); + return; } - //判断当前订单是否是来料加工销售订单(来料加工消费订单不允许绑定订单) - if (OrderTypeEnum.ENTED_SALE.getCode().equals(orderDO.getSplyBsnTp())) { + + // 2. 查询订单信息 + PurchaseOrderDO mainOrder = purchaseOrderMapper.selectById(mainOrderId); + PurchaseOrderDO boundOrder = purchaseOrderMapper.selectById(boundOrderId); + if (mainOrder == null || boundOrder == null) { + log.warn("绑定订单失败:订单ID{}或绑定订单ID{}不存在", mainOrderId, boundOrderId); + return; + } + + // 3. 校验订单类型:来料加工销售订单不处理 + if (OrderTypeEnum.ENTED_SALE.getCode().equals(mainOrder.getSplyBsnTp())) { + log.warn("绑定订单跳过:订单ID{}是来料加工销售订单,不允许绑定", mainOrderId); + throw exception(PURCHASE_ORDER_NOT_ALLOW_BIND); + + } + if (OrderTypeEnum.ENTED_SALE.getCode().equals(boundOrder.getSplyBsnTp())) { + log.warn("绑定订单跳过:被绑定订单ID{}是来料加工销售订单,不允许被绑定", boundOrderId); throw exception(PURCHASE_ORDER_NOT_ALLOW_BIND); } - if (orderDO.getRelatedOrderId() != null) { - //将已绑定的订单置空 + + // 4. 解绑主订单原有绑定关系 + if (mainOrder.getRelatedOrderId() != null) { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(PurchaseOrderDO::getId, orderDO.getRelatedOrderId()) + updateWrapper.eq(PurchaseOrderDO::getId, mainOrder.getRelatedOrderId()) .set(PurchaseOrderDO::getRelatedOrderId, null); - int update = purchaseOrderMapper.update(updateWrapper); - log.info("已绑定的订单已解绑,订单ID:{},影响行数:{}",orderDO.getRelatedOrderId(),update); + int update = purchaseOrderMapper.update(null, updateWrapper); + log.info("已解绑主订单原有绑定,订单ID:{},影响行数:{}", mainOrder.getRelatedOrderId(), update); } + + // 5. 绑定主订单到被绑定订单 LambdaUpdateWrapper boundUpdateWrapper = new LambdaUpdateWrapper<>(); - boundUpdateWrapper.eq(PurchaseOrderDO::getId, reqVO.getId()) - .set(PurchaseOrderDO::getRelatedOrderId, reqVO.getBoundId()); - purchaseOrderMapper.update(boundUpdateWrapper); - log.info("订单ID:{} 已绑定订单ID:{}", reqVO.getId(), reqVO.getBoundId()); - //修改已绑定的的订单 - if (boundOrder.getRelatedOrderId() != null){ + boundUpdateWrapper.eq(PurchaseOrderDO::getId, mainOrderId) + .set(PurchaseOrderDO::getRelatedOrderId, boundOrderId); + int mainBindCount = purchaseOrderMapper.update(null, boundUpdateWrapper); + log.info("订单ID:{} 绑定到{},影响行数:{}", mainOrderId, boundOrderId, mainBindCount); + + // 6. 解绑被绑定订单原有绑定关系 + if (boundOrder.getRelatedOrderId() != null) { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(PurchaseOrderDO::getId, boundOrder.getRelatedOrderId()) .set(PurchaseOrderDO::getRelatedOrderId, null); - int update = purchaseOrderMapper.update(updateWrapper); - log.info("已绑定的订单已解绑,订单ID:{},影响行数:{}",boundOrder.getRelatedOrderId(),update); + int update = purchaseOrderMapper.update(null, updateWrapper); + log.info("已解绑被绑定订单原有绑定,订单ID:{},影响行数:{}", boundOrder.getRelatedOrderId(), update); } - boundOrder.setRelatedOrderId(reqVO.getId()); - purchaseOrderMapper.updateById(boundOrder); - log.info("绑定订单操作完成,订单ID:{}", reqVO.getId()); + + // 7. 绑定被绑定订单到主订单 + LambdaUpdateWrapper bindUpdateWrapper = new LambdaUpdateWrapper<>(); + bindUpdateWrapper.eq(PurchaseOrderDO::getId, boundOrderId) + .set(PurchaseOrderDO::getRelatedOrderId, mainOrderId); + int boundBindCount = purchaseOrderMapper.update(null, bindUpdateWrapper); + log.info("订单ID:{} 绑定到{},影响行数:{}", boundOrderId, mainOrderId, boundBindCount); + + log.info("绑定订单操作完成,主订单ID:{},被绑定订单ID:{}", mainOrderId, boundOrderId); } @Override