From 7e68f81b38116bba40e70620c563168fcde66a37 Mon Sep 17 00:00:00 2001
From: L <L@132>
Date: 星期五, 05 十二月 2025 09:18:38 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  238 ++++++++++++++++++++++++++++++-----------------------------
 1 files changed, 122 insertions(+), 116 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 19c5bb7..646cd0a 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -4,13 +4,16 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
+import com.core.common.R;
 import com.core.common.SpringUtils;
 import com.core.exception.CoolException;
 import com.zy.asrs.controller.CrnController;
+import com.zy.asrs.controller.TaskWrkController;
 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.param.CarryParam;
 import com.zy.asrs.entity.param.TaskCreateParam;
 import com.zy.asrs.mapper.*;
 import com.zy.asrs.service.*;
@@ -70,6 +73,8 @@
     private TaskWrkMapper taskWrkMapper;
     @Autowired
     private TaskWrkService taskWrkService;
+    @Autowired
+    private TaskWrkController taskWrkController;
     @Autowired
     private StaDescMapper staDescMapper;
     @Autowired
@@ -2805,41 +2810,49 @@
                 continue;
             }
 
-//            CrnSlave crn = new CrnSlave(crnSlave);
-//            if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){
-//                CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍫嗗灈鏈哄贩閬撳彿寮傚父锛�");
-//                continue;
-//            }
-//
-//            if (!crnSlave.getId().equals(crnProtocol.getLaneNo())) {
-//                for (CrnSlave crnOther : slaveProperties.getCrn()) {
-//                    if (crnOther.getId().equals(crnProtocol.getLaneNo())) {
-//                        crn.updateCrnInStn(crnOther);
-//                    }
-//                }
-//            }
-
             // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
             if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO
                     && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0) {
                 // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
                 if (crnProtocol.getLastIo().equals("I")) {
                     if (basCrnp.getInEnable().equals("Y")) {
-                        this.crnStnToLocDemo(crnSlave, crnProtocol); //  鍏ュ簱
-                        crnProtocol.setLastIo("O");
+                        boolean crnStnToLocDemo = this.crnStnToLocDemo(crnSlave, crnProtocol);//  鍏ュ簱
+                        if (crnStnToLocDemo){
+                            crnProtocol.setLastIo("O");
+                        } else if (!crnProtocol.isSignIntOut()){
+                            crnProtocol.setLastIo("O");
+                        }
                     } else if (basCrnp.getOutEnable().equals("Y")) {
-                        this.locToCrnStnDemo(crnSlave, crnProtocol); //  鍑哄簱
-                        crnProtocol.setLastIo("I");
+                        boolean locToCrnStnDemo = this.locToCrnStnDemo(crnSlave, crnProtocol);//  鍑哄簱
+                        if (locToCrnStnDemo && crnProtocol.isSignIntOut()){
+                            crnProtocol.setLastIo("I");
+                        } else if (locToCrnStnDemo){
+                            crnProtocol.setLastIo("I");
+                            crnProtocol.setSignIntOut(true);
+                        } else if (!crnProtocol.isSignIntOut()){
+                            crnProtocol.setLastIo("I");
+                        }
                     }
                 }
                 // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
                 else if (crnProtocol.getLastIo().equals("O")) {
                     if (basCrnp.getOutEnable().equals("Y")) {
-                        this.locToCrnStnDemo(crnSlave, crnProtocol); //  鍑哄簱
-                        crnProtocol.setLastIo("I");
+                        boolean locToCrnStnDemo = this.locToCrnStnDemo(crnSlave, crnProtocol);//  鍑哄簱
+                        if (locToCrnStnDemo && crnProtocol.isSignIntOut()){
+                            crnProtocol.setLastIo("I");
+                        } else if (locToCrnStnDemo){
+                            crnProtocol.setLastIo("I");
+                            crnProtocol.setSignIntOut(true);
+                        } else if (!crnProtocol.isSignIntOut()){
+                            crnProtocol.setLastIo("I");
+                        }
                     } else if (basCrnp.getInEnable().equals("Y")) {
-                        this.crnStnToLocDemo(crnSlave, crnProtocol); //  鍏ュ簱
-                        crnProtocol.setLastIo("O");
+                        boolean crnStnToLocDemo = this.crnStnToLocDemo(crnSlave, crnProtocol);//  鍏ュ簱
+                        if (crnStnToLocDemo){
+                            crnProtocol.setLastIo("O");
+                        } else if (!crnProtocol.isSignIntOut()){
+                            crnProtocol.setLastIo("O");
+                        }
                     }
                 }
             }  else {
@@ -2861,7 +2874,8 @@
     /**
      * 鍏ュ簱  ===>>  鍫嗗灈鏈虹珯鍒板簱浣�
      */
-    public void crnStnToLocDemo(CrnSlave slave, CrnProtocol crnProtocol) throws IOException {
+    public boolean crnStnToLocDemo(CrnSlave slave, CrnProtocol crnProtocol) throws IOException {
+        boolean result = false;
         for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
             List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("CRN_NO", crnProtocol.getLaneNo()).eq("CRN_STN", crnStn.getStaNo()));
 
@@ -2897,7 +2911,7 @@
                     if (Cools.isEmpty(taskWrk1)){
                         continue;
                     }
-                    if (taskWrk1.getWrkSts() == 2){
+                    if (taskWrk1.getIoType() == 1 && taskWrk1.getWrkSts()<3){
                         taskWrk = taskWrk1;
                         break;
                     }
@@ -2953,6 +2967,7 @@
 
                     throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
                 } else {
+                    result = true;
                     try {
                         devpThread.setErrorDev(staProtocol.getSiteId(), "-");
                         CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "-");
@@ -2965,16 +2980,18 @@
                 }
             }
         }
+        return result;
     }
 
     /**
      * 鍑哄簱  ===>>  搴撲綅鍒板爢鍨涙満绔�
      * 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴�
      */
-    public void locToCrnStnDemo(CrnSlave slave, CrnProtocol crnProtocol) {
+    public boolean locToCrnStnDemo(CrnSlave slave, CrnProtocol crnProtocol) {
+        boolean result = false;
         List<TaskWrk> taskWrksInitial = taskWrkMapper.selectPakOut(crnProtocol.getLaneNo(), null);
         if (taskWrksInitial.size() == 0) {
-            return;
+            return result;
         }
         for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
             List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("CRN_NO", crnProtocol.getLaneNo()).eq("CRN_STN", crnStn.getStaNo()));
@@ -3007,7 +3024,7 @@
                     }
 
                     // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-                    if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
+                    if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
                         // 鍫嗗灈鏈烘帶鍒惰繃婊�
                         if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE)) {
                             devpThread.setErrorDev(staProtocol.getSiteId(), "鍫嗗灈鏈洪潪绌洪棽");
@@ -3047,6 +3064,7 @@
                             CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "杩愯鍛戒护涓嬪彂澶辫触");
                             throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
                         } else {
+                            result = true;
                             try {
                                 // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
                                 Date now = new Date();
@@ -3060,39 +3078,11 @@
                                 if (taskWrkMapper.updateById(taskWrk) == 0) {
                                     log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
                                 }
+
+
                             } catch (Exception e) {
                                 log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
                                 log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽紓甯革細" + e);
-                            }
-                            try {
-                                HashMap<String, Object> headParam = new HashMap<>();
-                                headParam.put("taskNo",taskWrk.getTaskNo());
-                                headParam.put("taskStatus",taskWrk.getStatusWms());
-                                headParam.put("ioType",taskWrk.getIoTypeWms());
-                                headParam.put("barCode",taskWrk.getBarcode());
-                                headParam.put("reportTime", LocalDateTime.now());
-                                headParam.put("weight",taskWrk.getScWeight().doubleValue());
-
-                                String response;
-                                response = new HttpHandler.Builder()
-                                        // .setHeaders(headParam)
-                                        .setUri(wmsUrl)
-                                        .setPath(taskStatusFeedbackPath)
-                                        .setJson(JSON.toJSONString(headParam))
-                                        .build()
-                                        .doPost();
-                                JSONObject jsonObject = JSON.parseObject(response);
-                                apiLogService.save("wcs娲惧彂鍑哄簱浠诲姟涓婃姤wms"
-                                        , wmsUrl + taskStatusFeedbackPath
-                                        , null
-                                        , "127.0.0.1"
-                                        , JSON.toJSONString(headParam)
-                                        , response
-                                        , true
-                                );
-                            } catch (Exception e) {
-                                log.error("wcs娲惧彂鍑哄簱浠诲姟涓婃姤wms澶辫触", JSON.toJSONString(taskWrk));
-//                                throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触");
                             }
                         }
                     } else {
@@ -3117,6 +3107,7 @@
                 }
             }
         }
+        return result;
     }
 
     /**
@@ -3185,10 +3176,23 @@
                             if (offer) {
                                 log.info("涓嬪彂杈撻�佺嚎浠诲姟鎴愬姛锛歵askWrk:" + JSON.toJSONString(taskWrk));
                                 Date now = new Date();
-                                taskWrk.setStatus(TaskStatusType.OVER3.id);
+//                                taskWrk.setStatus(TaskStatusType.OVER3.id);
+                                taskWrk.setStatus(TaskStatusType.OVER.id);//鎵嬪姩瀹屾垚浠诲姟
                                 taskWrk.setWrkSts(14);
                                 taskWrk.setModiTime(now);
                                 taskWrk.setCompleteTime(now);
+
+                                LocMast locMast=locMastService.selectByLocNo(taskWrk.getStartPoint());
+                                if(Cools.isEmpty(locMast)){
+                                    R.error("娌℃湁鎵惧埌璇ュ簱浣�") ;
+                                }
+                                locMast.setLocSts("O");
+                                locMast.setModiTime(now);
+                                locMast.setModiTime(now);
+
+
+
+                                locMastService.updateById(locMast);
                                 taskWrkService.updateById(taskWrk);
                             } else {
                                 log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛歵askWrk:" + JSON.toJSONString(taskWrk));
@@ -3218,19 +3222,7 @@
                     continue;
                 }
 
-                CrnSlave crn = new CrnSlave(crnSlave);
-                if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){
-                    CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍫嗗灈鏈哄贩閬撳彿寮傚父锛�");
-                    continue;
-                }
-
-                if (!crnSlave.getId().equals(crnProtocol.getLaneNo())) {
-                    for (CrnSlave crnOther : slaveProperties.getCrn()) {
-                        if (crnOther.getId().equals(crnProtocol.getLaneNo())) {
-                            crn.updateCrnInStn(crnOther);
-                        }
-                    }
-                }
+                CrnSlave crn = crnSlave;
 
                 //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
                 if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
@@ -3240,14 +3232,7 @@
                         log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽贩閬撳彿={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getLaneNo(), crnProtocol.getTaskNo());
                         continue;
                     }
-//                Thread.sleep(300);
-                    //纭瀹屾垚淇″彿
-//                    CrnOperatorParam crnOperatorParam = new CrnOperatorParam();
-//                    crnOperatorParam.setCrnNo(crn.getId());
                     Date now = new Date();
-
-//                    crnController.crnTaskComplete(crnOperatorParam);
-//                    MessageQueue.offer(SlaveType.Crn, crn.getId(), new Task(2, command))
                     crnThread.setResetFlag(true);
 
                     if (!Cools.isEmpty(taskWrk)) {
@@ -3293,44 +3278,6 @@
                         taskWrk.setCompleteTime(now);
                         taskWrkService.updateById(taskWrk);
 
-
-//                    try {
-//                        HashMap<String, Object> headParam = new HashMap<>();
-//                        headParam.put("taskNo",taskWrk.getTaskNo());
-//                        headParam.put("taskStatus",taskWrk.getStatusWms());
-//                        headParam.put("ioType",taskWrk.getIoTypeWms());
-//                        headParam.put("barCode",taskWrk.getBarcode());
-//                        headParam.put("reportTime", LocalDateTime.now());
-//                        headParam.put("weight",taskWrk.getScWeight().doubleValue());
-//
-//                        String response;
-//                        log.error("wcs瀹岀粨浠诲姟涓婃姤wms==銆�", headParam);
-//
-//                        response = new HttpHandler.Builder()
-//                                // .setHeaders(headParam)
-//                                .setUri(wmsUrl)
-//                                .setPath(taskStatusFeedbackPath)
-//                                .setJson(JSON.toJSONString(headParam))
-//                                .build()
-//                                .doPost();
-//                        log.error("wcs瀹岀粨浠诲姟涓婃姤wms==銆�", response);
-//
-////                        JSONObject jsonObject = JSON.parseObject(response);
-////                        log.error("wcs瀹岀粨浠诲姟涓婃姤wms==銆�", jsonObject);
-//
-//                        apiLogService.save("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms"
-//                                , wmsUrl + taskStatusFeedbackPath
-//                                , null
-//                                , "127.0.0.1"
-//                                , JSON.toJSONString(headParam)
-//                                , response
-//                                , true
-//                        );
-//                    } catch (Exception e) {
-//                        log.error("wcs瀹岀粨浠诲姟涓婃姤wms澶辫触", taskWrk);
-//                        log.error("wcs瀹岀粨浠诲姟涓婃姤wms澶辫触,鎶ラ敊淇℃伅锛�", e);
-////                        throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触");
-//                    }
                     }
 
                 }
@@ -3339,5 +3286,64 @@
             }
         }
     }
+    public void locMastTaskDemo(){
+        try{
+            for (CrnSlave crnSlave : slaveProperties.getCrn()) {
+                try{
+                    // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+                    CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId());
+                    CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+                    if (crnProtocol == null) {
+                        continue;
+                    }
+                    if (Cools.isEmpty(crnProtocol.getLocMastDemoList())) {
+                        continue;
+                    }
+                    BasCrnp basCrnp = basCrnpService.selectById(crnSlave.getId());
+                    if (basCrnp == null) {
+                        log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crnSlave.getId());
+                        continue;
+                    }
+                    if (Cools.isEmpty(basCrnp.getHpMk()) || !basCrnp.getHpMk().equals("Y")){
+                        continue;
+                    }
+                    for (String[] locS : crnProtocol.getLocMastDemoListSign()){
+                        if (locS[3].equals("1")){
+                            String locNo = locS[0];
+                            LocMast locMast = locMastService.selectByLocNo(locNo);
+                            if (locMast.getLocSts().equals("F")){
+                                CarryParam carryParam = new CarryParam();
+                                carryParam.setTaskNo(locNo);
+                                carryParam.setBarcode(locNo);
+                                carryParam.setIoType(1);//浠诲姟绫诲瀷=銆�1锛氬嚭搴撱��2锛氱Щ搴撱��3锛氬叆搴�   ====杞崲涓�====>  1锛氬叆搴擄紝2锛氬嚭搴擄紝3锛氱Щ搴�
+                                carryParam.setTaskPriority(1);
+                                carryParam.setTargetPoint("1012");
+                                carryParam.setStartPoint(BarcodeUtils.formatCode(locNo));
+                                carryParam.setMeno("Demo");
+                                taskWrkController.addTaskPoint(carryParam);
+                                Thread.sleep(50);
+                            } else if (locMast.getLocSts().equals("O")){
+                                CarryParam carryParam = new CarryParam();
+                                carryParam.setTaskNo(locNo);
+                                carryParam.setBarcode(locNo);
+                                carryParam.setIoType(3);//浠诲姟绫诲瀷=銆�1锛氬嚭搴撱��2锛氱Щ搴撱��3锛氬叆搴�   ====杞崲涓�====>  1锛氬叆搴擄紝2锛氬嚭搴擄紝3锛氱Щ搴�
+                                carryParam.setTaskPriority(1);
+                                carryParam.setStartPoint("1012");
+                                carryParam.setTargetPoint(BarcodeUtils.formatCode(locNo));
+                                carryParam.setMeno("Demo");
+                                taskWrkController.addTaskPoint(carryParam);
+                                Thread.sleep(50);
+                                LocFCSUtils.updateLocSInPlace(crnProtocol.getLocMastDemoListSign());
+                            }
+                        }
+                    }
 
+                } catch (Exception e){
+
+                }
+            }
+        } catch (Exception e){
+
+        }
+    }
 }

--
Gitblit v1.9.1