From 8e4eee5ad4d74e1a4e6ab4de3a9c28000700dce0 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 03 十一月 2026 13:49:04 +0800
Subject: [PATCH] 修复采购退货页面 ERP 模块已禁用报错

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderServiceImpl.java |   57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 54 insertions(+), 3 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderServiceImpl.java
index c824d07..ea97b01 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderServiceImpl.java
@@ -2,8 +2,10 @@
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjUtil;
+import cn.iocoder.yudao.framework.common.exception.ServiceException;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.mes.controller.admin.pro.workorder.vo.MesProWorkOrderPageReqVO;
 import cn.iocoder.yudao.module.mes.controller.admin.pro.workorder.vo.MesProWorkOrderSaveReqVO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemBatchConfigDO;
@@ -13,6 +15,7 @@
 import cn.iocoder.yudao.module.mes.enums.wm.BarcodeBizTypeEnum;
 import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemBatchConfigService;
 import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.common.bpm.MesBpmProcessService;
 import cn.iocoder.yudao.module.mes.controller.admin.pro.workorder.vo.MesProWorkOrderProgressRespVO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO;
 import cn.iocoder.yudao.module.mes.dal.dataobject.pro.process.MesProProcessDO;
@@ -46,6 +49,11 @@
 @Service
 @Validated
 public class MesProWorkOrderServiceImpl implements MesProWorkOrderService {
+
+    @Resource
+    private MesBpmProcessService mesBpmProcessService;
+
+    private static final String BPM_PROCESS_DEFINITION_CATEGORY_CODE = "mes_pro_feedback_audit";
 
     @Resource
     private MesProWorkOrderMapper workOrderMapper;
@@ -150,6 +158,13 @@
     }
 
     @Override
+    public List<Map<String, Object>> getWorkOrderApproveProcessDefinitionList() {
+        return mesBpmProcessService.getApproveProcessDefinitionList(BPM_PROCESS_DEFINITION_CATEGORY_CODE);
+    }
+
+
+
+    @Override
     public MesProWorkOrderDO getWorkOrder(Long id) {
         return workOrderMapper.selectById(id);
     }
@@ -161,9 +176,12 @@
 
     @Override
     public PageResult<MesProWorkOrderDO> getWorkOrderPage(MesProWorkOrderPageReqVO pageReqVO) {
-        // 鑾峰彇鐢ㄦ埛鏈夋潈闄愮殑瀹㈡埛 ID 鍒楄〃
-        List<Long> permittedClientIds = customerApi.getPermittedCustomerIds();
-        return workOrderMapper.selectPage(pageReqVO, permittedClientIds);
+        return workOrderMapper.selectPage(pageReqVO, (List<Long>) null);
+    }
+
+    @Override
+    public PageResult<MesProWorkOrderDO> getWorkOrderSchedulePage(MesProWorkOrderPageReqVO pageReqVO) {
+        return workOrderMapper.selectSchedulePage(pageReqVO, (List<Long>) null);
     }
 
     @Override
@@ -198,6 +216,39 @@
     }
 
     @Override
+    public void startWorkOrder(Long id) {
+        // 1. 鏍¢獙瀛樺湪 + 鍙湁宸茬‘璁ょ姸鎬佹墠鑳藉紑宸�
+        MesProWorkOrderDO workOrder = validateWorkOrderExists(id);
+        if (ObjUtil.notEqual(workOrder.getStatus(), MesProWorkOrderStatusEnum.CONFIRMED.getStatus())) {
+            throw exception(PRO_WORK_ORDER_NOT_CONFIRMED);
+        }
+        // 2. 宸插紑宸ョ殑涓嶅厑璁搁噸澶嶅惎鍔紝閬垮厤寮�宸ユ椂闂磋瑕嗙洊
+        if (workOrder.getActualStartTime() != null) {
+            throw exception(PRO_WORK_ORDER_ALREADY_STARTED);
+        }
+        // 3. 鍐欏叆寮�宸ユ椂闂翠笌寮�宸ヤ汉锛屽伐鍗曠敱姝よ繘鍏ャ�岀敓浜т腑銆�
+        workOrderMapper.updateById(new MesProWorkOrderDO().setId(id)
+                .setActualStartTime(LocalDateTime.now())
+                .setStartUserId(SecurityFrameworkUtils.getLoginUserId()));
+    }
+
+    @Override
+    public void updateWorkOrderBatch(Long id, String batchCode) {
+        // 1. 鏍¢獙瀛樺湪
+        MesProWorkOrderDO workOrder = validateWorkOrderExists(id);
+        // 2. 宸插畬鎴�/宸插彇娑堢殑宸ュ崟涓嶅厑璁稿啀鏀规壒娆�
+        if (MesProWorkOrderStatusEnum.FINISHED.getStatus().equals(workOrder.getStatus())
+                || MesProWorkOrderStatusEnum.CANCELED.getStatus().equals(workOrder.getStatus())) {
+            throw new ServiceException(PRO_WORK_ORDER_BATCH_NOT_EDITABLE.getCode(),
+                    String.format("宸ュ崟[%s]褰撳墠鐘舵�佷负[%s]锛屽彧鏈夋湭瀹屽伐鐨勫伐鍗曞彲浠ョ鐞嗘壒娆°�傝纭宸ュ崟鐘舵�佸悗閲嶈瘯銆�",
+                            workOrder.getCode(),
+                            MesProWorkOrderStatusEnum.FINISHED.getStatus().equals(workOrder.getStatus()) ? "宸插畬鎴�" : "宸插彇娑�"));
+        }
+        // 3. 鏇存柊鎵规鍙�
+        workOrderMapper.updateById(new MesProWorkOrderDO().setId(id).setBatchCode(batchCode));
+    }
+
+    @Override
     @Transactional(rollbackFor = Exception.class)
     public void finishWorkOrder(Long id) {
         // 1. 鏍¢獙瀛樺湪 + 鍙湁宸茬‘璁ょ姸鎬佹墠鑳藉畬鎴�

--
Gitblit v1.9.3