From aa33e56e37cd19b88ae8eea69c5ebc7c6da8b1d2 Mon Sep 17 00:00:00 2001
From: Administrator <pjb>
Date: 星期四, 05 六月 2025 17:59:47 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/glccwcs' into glccwcs

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  276 +++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 199 insertions(+), 77 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index aa40e13..fd462e2 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -7,12 +7,17 @@
 import com.core.exception.CoolException;
 import com.zy.asrs.controller.CrnController;
 import com.zy.asrs.domain.enums.TaskStatusType;
+import com.zy.asrs.domain.enums.WorkNoType;
 import com.zy.asrs.domain.param.CrnOperatorParam;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.wms.StorageEscalationParam;
-import com.zy.asrs.mapper.*;
+import com.zy.asrs.mapper.BasCrnErrorMapper;
+import com.zy.asrs.mapper.StaDescMapper;
+import com.zy.asrs.mapper.TaskWrkMapper;
+import com.zy.asrs.mapper.WrkMastMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.Utils;
+import com.zy.common.service.CommonService;
 import com.zy.core.CrnThread;
 import com.zy.core.DevpThread;
 import com.zy.core.cache.MessageQueue;
@@ -29,6 +34,7 @@
 import com.zy.core.thread.SiemensDevpThread;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
@@ -36,6 +42,7 @@
 import java.io.IOException;
 import java.util.Date;
 import java.util.List;
+import java.util.Random;
 
 /**
  * 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔�
@@ -55,6 +62,8 @@
     @Autowired
     private LocMastService locMastService;
     @Autowired
+    private LocDetlService locDetlService;
+    @Autowired
     private BasCrnpService basCrnpService;
     @Autowired
     private BasDevpService basDevpService;
@@ -66,10 +75,9 @@
     private TaskWrkMapper taskWrkMapper;
 
     @Autowired
-    private DevpTaskMapper devpTaskMapper;
-    @Autowired
     private TaskWrkService taskWrkService;
-
+    @Autowired
+    private CommonService commonService;
     @Autowired
     private StaDescMapper staDescMapper;
 
@@ -88,7 +96,17 @@
     @Autowired
     private TransferTaskService transferTaskService;
 
-    public void generateStoreWrkFile() throws IOException, InterruptedException {
+    @Autowired
+    private WrkMastService wrkMastService;
+
+    @Autowired
+    private WrkDetlService wrkDetlService;
+
+    @Value("${loc-move.enable}")
+    private boolean enable;
+
+
+    public synchronized void generateStoreWrkFile() {
         try {
             // 鏍规嵁杈撻�佺嚎plc閬嶅巻
             for (DevpSlave devp : slaveProperties.getDevp()) {
@@ -137,57 +155,51 @@
                         back = true;
                     }
                     // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-                    if (staProtocol.isAutoing() && staProtocol.isLoading()
-                            && staProtocol.isInEnable()
-                            && !staProtocol.isEmptyMk() && workNo >= 9790
-                            && staProtocol.isPakMk()) {
+                    if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
+                            && !staProtocol.isEmptyMk() && workNo >= 9000 && staProtocol.isPakMk()) {
                         // 鑾峰彇鏉$爜鎵弿浠俊鎭�
                         BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
                         if (barcodeThread == null) {
                             continue;
                         }
                         String BoxNo = barcodeThread.getBarcode();
+                        if (Cools.isEmpty(BoxNo)) {
+                            log.error("{}鍙锋潯鐮佹壂鎻忓け璐ワ紝鍊硷細{}",inSta.getBarcode(),BoxNo);
+                            continue;
+                        }
                         TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode", BoxNo));
                         if (!Cools.isEmpty(taskWrk1)) {
                             log.info("鎵樼洏鐮侊細" + BoxNo + "浠诲姟妗e瓨鍦�");
-                            if (taskWrk1.getIoType() == 1 && taskWrk1.getStartPoint().equals(staProtocol.getSiteId().toString())) {
-                                StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
-                                        .eq("crn_no", taskWrk1.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
-                                if (Cools.isEmpty(staDesc)) {
-                                    return;
-                                } else {
-                                    continue;
-                                }
-                            }
+                            continue;
                         }
                         if (back) {
                             storageEscalationParam.setWCSStatus(1);
                             storageEscalationParam.setWCSErrorMessage(storageEscalationParam.getWCSErrorMessage() + errMsg);
                         }
                         storageEscalationParam.setBarcode(BoxNo);
+                        storageEscalationParam.setMatIdList(staProtocol.getMatIdList());
                         log.info("缁勬墭鍏ュ簱={}", storageEscalationParam);
                         TaskWrk taskWrk = toWmsService.getLocNoFromWms(storageEscalationParam);
+                        if (taskWrk == null) {
+                            log.error("鍏ュ簱璇锋眰wms鍒涘缓浠诲姟宸ヤ綔妗d负绌猴細{}",storageEscalationParam);
+                            continue;
+                        }
                         if (back) {
-                            log.info("鎵樼洏閫�鍥�==>{}锛寋}", BoxNo, errMsg);
                             staProtocol.setStaNo(inSta.getBackSta().shortValue());
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
                             MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                            log.info("缁勬墭鍏ュ簱鎵樼洏閫�鍥炲懡浠ゆ帹閫佽緭閫佺嚎闃熷垪鎴愬姛==>{}锛寋}", BoxNo, errMsg);
                         } else {
-                            if (!Cools.isEmpty(taskWrk)) {
-                                StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
-                                        .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
-                                staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
-                                staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
-                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                                //娣诲姞涓婃姤鏃ュ織
-                                toWmsService.addReportLog(taskWrk);
-                            } else {
-                                log.info("鍒涘缓宸ヤ綔妗eけ璐�==>{}", taskWrk.getTaskNo());
-                                staProtocol.setStaNo(inSta.getBackSta().shortValue());
-                                devpThread.setPakMk(staProtocol.getSiteId(), false);
-                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                            StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
+                                    .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
+                            if (staDesc == null) {
+                                log.error("缁勬墭鍏ュ簱璺緞涓嶅瓨鍦紝wrkNo={},crn={},stn_no={}",taskWrk.getWrkNo(),taskWrk.getCrnNo(),staProtocol.getSiteId());
+                                continue;
                             }
-
+                            staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
+                            staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
+                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                            log.info("缁勬墭鍏ュ簱鍛戒护鎺ㄩ�佽緭閫佺嚎闃熷垪鎴愬姛:{}",staProtocol);
                         }
 
                     }
@@ -207,8 +219,6 @@
         for (CrnSlave crnSlave : slaveProperties.getCrn()) {
             // 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯
             for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) {
-                List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", crnSlave.getId()).eq("crn_stn", crnStn.getStaNo()));
-                for (StaDesc staDesc : staDescs) {
                     try {
                         // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
                         DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
@@ -220,34 +230,36 @@
                         }
                         if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0)) {
                             // 鏌ヨ宸ヤ綔妗�
-                            TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnSlave.getId(), staDesc.getStnNo().toString());
+                            TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnSlave.getId(), String.valueOf(crnStn.getStaNo()-1));
                             if (taskWrk == null) {
                                 continue;
                             }
-                            log.info("涓嬪彂杈撻�佺嚎浠诲姟锛歵askWrk:" + JSON.toJSONString(taskWrk));
-                            staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
-                            staProtocol.setStaNo(staDesc.getStnNo().shortValue());
-                            boolean offer = false;
-                            try {
-                                offer = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
-                            } catch (Exception e) {
-                                log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:" + e);
-                                log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:offer:" + offer);
-                            }
-                            if (offer) {
-                                log.info("涓嬪彂杈撻�佺嚎浠诲姟鎴愬姛锛歵askWrk:" + JSON.toJSONString(taskWrk));
-                                taskWrk.setStatus(5);
-                                taskWrk.setWrkSts(14);
-                                taskWrkService.updateById(taskWrk);
+                                log.info("涓嬪彂杈撻�佺嚎浠诲姟锛歵askWrk:" + JSON.toJSONString(taskWrk));
+                                staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
+                                staProtocol.setStaNo(Short.valueOf(taskWrk.getTargetPoint()));
+                                boolean offer = false;
+                                try {
+                                    offer = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+                                } catch (Exception e) {
+                                    log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:" + e);
+                                    log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:offer:" + offer);
+                                }
+                                if (offer) {
+                                    log.info("涓嬪彂杈撻�佺嚎浠诲姟鎴愬姛锛歵askWrk:" + JSON.toJSONString(taskWrk));
+                                    taskWrk.setStatus(5);
+                                    taskWrk.setWrkSts(14);
+                                    taskWrk.setCompleteTime(new Date());
+                                    taskWrkService.updateById(taskWrk);
 
-                            } else {
-                                log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛歵askWrk:" + JSON.toJSONString(taskWrk));
-                            }
+                                } else {
+                                    log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛歵askWrk:" + JSON.toJSONString(taskWrk));
+                                }
+//                            }
                         }
                     } catch (Exception e) {
                         log.error("鍑哄簱鍒板嚭搴撶珯寮傚父:寮傚父淇℃伅锛�" + e);
                     }
-                }
+//                }
 
             }
         }
@@ -336,6 +348,15 @@
                     continue;
                 }
 
+                LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());
+                if(!locMast.getLocSts().equals("O") && taskWrk.getWrkSts() == 2) {
+                    log.error("鍏ュ簱WMS鍒嗛厤搴撲綅{}鏈夎锛屽簱浣嶇姸鎬佷负{}",locMast.getLocNo(),locMast.getLocSts());
+                    taskWrk.setWrkSts(5);
+                    taskWrk.setMemo("WMS鍒嗛厤搴撲綅鏈夎");
+                    taskWrkService.updateById(taskWrk);
+                    continue;
+                }
+
                 // 鍫嗗灈鏈烘帶鍒惰繃婊�
                 if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
                     continue;
@@ -349,11 +370,12 @@
 //                int workNo = commonService.getWorkNo(WorkNoType.PAKIN.type);//鑾峰彇鍏ュ簱宸ヤ綔鍙�
 //                taskWrk.setWrkNo(workNo);//宸ヤ綔鍙�
                 taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//娲惧彂鐘舵��
-                taskWrk.setAssignTime(new Date());//娲惧彂鏃堕棿
+                taskWrk.setExecuteTime(new Date());
+//                taskWrk.setAssignTime(new Date());//娲惧彂鏃堕棿
                 taskWrk.setWrkSts(3);//宸ヤ綔鐘舵�� 3.鍚婅溅鍏ュ簱
                 taskWrk.setCrnNo(staDesc.getCrnNo());//鍫嗗灈鏈哄彿
-                taskWrk.setModiTime(new Date());
-                taskWrk.setModiUser(9988L);
+//                taskWrk.setModiTime(new Date());
+//                taskWrk.setModiUser(9988L);
 
                 // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
                 CrnCommand crnCommand = new CrnCommand();
@@ -374,6 +396,8 @@
                     throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
                 } else {
                     try {
+                        // 涓婃姤鎵ц鐘舵��
+                        toWmsService.executionStatusReport(taskWrk.getTaskNo(), taskWrk.getWrkSts());
                         taskWrkService.updateById(taskWrk);
                     } catch (Exception e) {
                         log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
@@ -410,24 +434,24 @@
 
                     LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
                     //鍒ゆ柇鍏跺簱浣嶆槸鍚︿负娣卞簱浣嶏紝濡傛灉涓烘繁搴撲綅鎵惧叾娴呭簱浣嶆槸閮芥湁璐�
-                    boolean flag = false;
+                    int flag = 0;
                     if (locMast.getRow1() == 1 || locMast.getRow1() == 5 || locMast.getRow1() == 9) {
-                        flag = true;
+                        flag = 1;
                     } else if (locMast.getRow1() == 4 || locMast.getRow1() == 8 || locMast.getRow1() == 12) {
-                        flag = true;
+                        flag = 2;
                     }
-                    if (flag) {
+                    if (flag == 1) {
                         LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
-                                .eq("row1", (locMast.getRow1() - 1))
+                                .eq("row1", (locMast.getRow1() + 1))
                                 .eq("bay1", locMast.getBay1())
                                 .eq("lev1", locMast.getLev1()).eq("loc_sts", "F"));
                         if (!Cools.isEmpty(locMast1)) {
                             log.info(locMast.getLocNo() + "鍑烘繁搴撲綅锛屾祬搴撲綅鏈夎揣");
                             continue;
                         }
-                    } else {
+                    } else if (flag == 2){
                         LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
-                                .eq("row1", (locMast.getRow1() + 1))
+                                .eq("row1", (locMast.getRow1() - 1))
                                 .eq("bay1", locMast.getBay1())
                                 .eq("lev1", locMast.getLev1()).eq("loc_sts", "F"));
                         if (!Cools.isEmpty(locMast1)) {
@@ -494,10 +518,12 @@
                                 Date now = new Date();
                                 taskWrk.setWrkSts(12);
                                 taskWrk.setStatus(2);
-                                taskWrk.setModiTime(now);
+                                taskWrk.setExecuteTime(now);
                                 if (taskWrkMapper.updateById(taskWrk) == 0) {
                                     log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
                                 }
+                                // 涓婃姤鎵ц鐘舵��
+                                toWmsService.executionStatusReport(taskWrk.getTaskNo(), taskWrk.getWrkSts());
                             } catch (Exception e) {
                                 log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
                                 log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽紓甯革細" + e);
@@ -565,6 +591,7 @@
                     Date now = new Date();
                     taskWrk.setWrkSts(12);
                     taskWrk.setStatus(2);
+                    taskWrk.setExecuteTime(now);
                     taskWrk.setModiTime(now);
                     if (taskWrkMapper.updateById(taskWrk) == 0) {
                         log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
@@ -645,6 +672,7 @@
                         locMast1.setModiUser(9999L);
                         locMastService.updateById(locMast1);
                     }
+                    taskWrk.setCompleteTime(new Date());
                     taskWrkService.updateById(taskWrk);
                 }
 
@@ -838,7 +866,7 @@
         try {
             // 鏍规嵁杈撻�佺嚎plc閬嶅巻
             for (DevpSlave devp : slaveProperties.getDevp()) {
-                if (devp.getId() == 2){
+                if (devp.getId() == 2) {
                     continue;
                 }
                 SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
@@ -1003,23 +1031,117 @@
     /**
      * 璺戝簱绋嬪簭
      */
-    public void debug() {
-        //棣栧厛搴撲綅鏈変竴涓湪搴撶殑搴撲綅
-        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "F"));
-        if (locMast != null) {
-            // 鍐嶇敓鎴愪竴涓Щ搴撲换鍔�
-            LocMast mk = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "O").ne("mk", 1));
-
+    public void debug(String sts, Long modiUser, Integer loc_type1) {
+        if (!enable) {
+            return;
         }
-
+        List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>());
+        if (basCrnps.isEmpty()) {
+            return;
+        }
+        for (BasCrnp basCrnp : basCrnps) {
+            if (!basCrnp.getInEnable().equals("N") || !basCrnp.getOutEnable().equals("Y")) {
+                continue;
+            }
+            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no", basCrnp.getCrnNo()).eq("io_type", 11));
+            if (Cools.isEmpty(wrkMasts) || wrkMasts.isEmpty()) {
+                int i = locMastService.selectCount(new EntityWrapper<LocMast>().eq("loc_sts", sts).eq("loc_type1", loc_type1).ne("modi_user", modiUser));
+                LocMast locMastStart = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", sts).eq("loc_type1", loc_type1).ne("modi_user", modiUser));
+                if (locMastStart == null || i > 1) {
+                    continue;
+                }
+                List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+                        .eq("loc_sts", "O")
+                        .eq("crn_no", basCrnp.getCrnNo())
+                        .eq("loc_type1", locMastStart.getLocType1())
+                        .ne("modi_user", 77));
+                if (Cools.isEmpty(locMasts)) {
+                    continue;
+                }
+                Random random = new Random();
+                LocMast locMastEnd = locMasts.get(random.nextInt(locMasts.size()));
+                locMove(locMastStart, locMastEnd, Long.parseLong(basCrnp.getCrnNo().toString()));
+            }
+        }
     }
 
+
+    public void locMove(LocMast sourceLoc, LocMast locNo, Long userId) {
+        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLoc.getLocNo()));
+        LocMast loc = locMastService.selectById(locNo);
+        if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) {
+            throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�");
+        }
+        Date now = new Date();
+        // 鑾峰彇宸ヤ綔鍙�
+        int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
+        // 淇濆瓨宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setIoTime(now);
+        wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+        wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+        wrkMast.setIoPri(10D);
+        wrkMast.setCrnNo(sourceLoc.getCrnNo());
+        wrkMast.setSourceLocNo(sourceLoc.getLocNo()); // 婧愬簱浣�
+        wrkMast.setLocNo(locNo.getLocNo()); // 鐩爣搴撲綅
+        wrkMast.setFullPlt(Cools.isEmpty(locDetls) ? "N" : "Y"); // 婊℃澘锛歒
+        wrkMast.setPicking("N"); // 鎷f枡
+        wrkMast.setExitMk("N"); // 閫�鍑�
+        wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
+        wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮�
+        wrkMast.setLinkMis("N");
+        wrkMast.setAppeUser(userId);
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiUser(userId);
+        wrkMast.setModiTime(now);
+        boolean res = wrkMastService.insert(wrkMast);
+        if (!res) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+        }
+        // 宸ヤ綔妗f槑缁嗕繚瀛�
+        for (LocDetl locDetl : locDetls) {
+            WrkDetl wrkDetl = new WrkDetl();
+            wrkDetl.sync(locDetl);
+            wrkDetl.setWrkNo(workNo);
+            wrkDetl.setIoTime(now);
+            wrkDetl.setAnfme(locDetl.getAnfme());
+            wrkDetl.setAppeTime(now);
+            wrkDetl.setAppeUser(userId);
+            wrkDetl.setModiTime(now);
+            wrkDetl.setModiUser(userId);
+            if (!wrkDetlService.insert(wrkDetl)) {
+                throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+            }
+        }
+        // 淇敼婧愬簱浣嶇姸鎬�
+        if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) {
+            sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害
+            sourceLoc.setModiUser(userId);
+            sourceLoc.setModiTime(now);
+            if (!locMastService.updateById(sourceLoc)) {
+                throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+            }
+        } else {
+            throw new CoolException("婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細" + sourceLoc.getLocSts$());
+        }
+        // 淇敼鐩爣搴撲綅鐘舵��
+        if (loc.getLocSts().equals("O")) {
+            loc.setLocSts("S"); // S.鍏ュ簱棰勭害
+            loc.setModiTime(now);
+            loc.setModiUser(userId);
+            if (!locMastService.updateById(loc)) {
+                throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+            }
+        } else {
+            throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + loc.getLocSts$());
+        }
+    }
 
     /**
      * 杞Щ浠诲姟涓嬪彂
      */
     public void transferTaskStart() {
-
         for (DevpSlave.Sta sta : slaveProperties.getDevp().get(1).getInSta()) {
             try {
                 // 鑾峰彇鍏ュ簱绔欎俊鎭�
@@ -1082,7 +1204,7 @@
                         continue;
                     }
                     log.info("杞Щ浠诲姟瀹屾垚锛歵ransferTask:" + JSON.toJSONString(transferTask));
-                    transferTask.setStatus(5);
+                    transferTask.setStatus(3);
                     transferTaskService.updateById(transferTask);
                 }
             } catch (Exception e) {

--
Gitblit v1.9.1