From cbadfd8e691ab335965202a984db16e55ac8e42c Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 30 十月 2026 17:51:06 +0800
Subject: [PATCH] 诚发五金:按技术方案重构业务功能并补齐库结构

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workorder/MesProWorkOrderServiceImpl.java |   43 +++++++++++++++++++++++++++++++++++++------
 1 files changed, 37 insertions(+), 6 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 eee7b86..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;
@@ -174,16 +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) {
-        // 鑾峰彇鐢ㄦ埛鏈夋潈闄愮殑瀹㈡埛 ID 鍒楄〃
-        List<Long> permittedClientIds = customerApi.getPermittedCustomerIds();
-        return workOrderMapper.selectSchedulePage(pageReqVO, permittedClientIds);
+        return workOrderMapper.selectSchedulePage(pageReqVO, (List<Long>) null);
     }
 
     @Override
@@ -218,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