From 7e5fd486ef26d9ac5a2ea7a1657decab0e4a10fd Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期六, 26 四月 2025 15:22:42 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  234 ++++++++++++++++++++++------------------------------------
 1 files changed, 89 insertions(+), 145 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 391da4e..2364b23 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -4,19 +4,18 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
-import com.core.common.R;
 import com.core.exception.CoolException;
-import com.zy.asrs.controller.CrnController;
-import com.zy.asrs.controller.SiteController;
+import com.zy.asrs.domain.dto.NotifyCustomDataDto;
+import com.zy.asrs.domain.enums.NotifyMsgType;
 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.Result;
-import com.zy.asrs.entity.param.StorageEscalationParam;
 import com.zy.asrs.mapper.*;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.CommandUtils;
+import com.zy.asrs.utils.CrnOperaUtils;
+import com.zy.asrs.utils.NotifyUtils;
 import com.zy.asrs.utils.Utils;
 import com.zy.common.service.CommonService;
 import com.zy.common.utils.HttpHandler;
@@ -80,16 +79,18 @@
     private StaDescMapper staDescMapper;
     @Autowired
     private CommandInfoService commandInfoService;
-
     @Autowired
     private OpenServiceImpl openServiceImpl;
     @Autowired
     private StaDescService staDescService;
-
     @Autowired
     private ApiLogService apiLogService;
     @Autowired
     private CommonService commonService;
+    @Autowired
+    private CrnOperaUtils crnOperaUtils;
+    @Autowired
+    private NotifyUtils notifyUtils;
     @Value("${wms.count}")
     private Integer maxCount;
     @Autowired
@@ -102,18 +103,13 @@
     private String TaskExecCallback;
     @Value("${wms.taskStatusFeedbackPath}")
     private String taskStatusFeedbackPath;
-    @Autowired
-    private CrnController crnController;
-    @Autowired
-    private SiteController siteController;
 
-    public synchronized void generateStoreWrkFile1() throws IOException, InterruptedException {
+    public synchronized void generateStoreWrkFile1() {
         try {
             // 鏍规嵁杈撻�佺嚎plc閬嶅巻
             for (DevpSlave devp : slaveProperties.getDevp()) {
                 // 閬嶅巻鍏ュ簱鍙�
                 for (DevpSlave.Sta inSta : devp.getInSta()) {
-                    StorageEscalationParam storageEscalationParam = new StorageEscalationParam();
                     // 鑾峰彇鍏ュ簱绔欎俊鎭�
                     DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                     StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
@@ -166,113 +162,75 @@
                         if (barcodeThread == null) {
                             continue;
                         }
-                        String BoxNo = barcodeThread.getBarcode();
-                        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;
-                                }
-                            }
+
+                        String barcode = barcodeThread.getBarcode();
+                        TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode", barcode));
+                        if (taskWrk1 != null) {
+                            log.info("鎵樼洏鐮侊細" + barcode + "浠诲姟妗e瓨鍦�");
+                            continue;
                         }
+
+                        HashMap<String, Object> requestParam = new HashMap<>();
+                        requestParam.put("BoxNo", barcode);//鎵樼洏鐮�
+                        requestParam.put("TerminalNo", inSta.getStaNo());//鍏ュ簱鍙�
                         if (back) {
-                            storageEscalationParam.setWCSStatus(1);
-                            storageEscalationParam.setWCSErrorMessage(storageEscalationParam.getWCSErrorMessage() + errMsg);
+                            requestParam.put("WCSStatus", 1);//澶辫触
+                            requestParam.put("WCSErrorMessage", errMsg);//澶辫触鍘熷洜
+                        }else {
+                            requestParam.put("WCSStatus", 0);//鎴愬姛
                         }
-                        log.info("缁勬墭鍏ュ簱={}", storageEscalationParam);
-                        storageEscalationParam.setBoxNo(BoxNo);
+
                         String response = "";
                         Boolean success = false;
                         try {
                             response = new HttpHandler.Builder()
                                     .setUri(wmsUrl)
                                     .setPath(inboundTaskApplyPath)
-                                    .setJson(JSON.toJSONString(storageEscalationParam))
+                                    .setJson(JSON.toJSONString(requestParam))
                                     .build()
                                     .doPost();
                             JSONObject jsonObject = JSON.parseObject(response);
-                            if(back){
-                                if(staProtocol.getWorkNo()>=9801&&staProtocol.getWorkNo()<=9825){
-                                    staProtocol.setStaNo((short)105);
-                                } else if (staProtocol.getWorkNo()>=9826&&staProtocol.getWorkNo()<=9850) {
-                                    staProtocol.setStaNo((short)107);
-                                }else if (staProtocol.getWorkNo()>=9851&&staProtocol.getWorkNo()<=9875) {
-                                    staProtocol.setStaNo((short)109);
-                                }else if (staProtocol.getWorkNo()>=9876 && staProtocol.getWorkNo() <= 9900){
-                                    staProtocol.setStaNo((short)110);
-                                }
+
+                            if (back) {
                                 devpThread.setPakMk(staProtocol.getSiteId(), false);
                                 MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                            }else{
-                                if (!Cools.isEmpty(response)&&!Cools.isEmpty(jsonObject.get("ReturnStatus"))&&jsonObject.get("ReturnStatus").equals(0) && !Cools.isEmpty(jsonObject.get("Result").toString())) {
-                                    Result result = JSON.parseObject(jsonObject.get("Result").toString(), Result.class);
-                                    // 鍒涙柊涓�涓叆搴撳伐浣滄。
-                                    TaskWrk taskWrk = taskWrkService.selectByTaskNo(result.getTaskNo());
-                                    if (Cools.isEmpty(taskWrk)) {
-                                        taskWrk = createTask1(result, BoxNo);
-                                        if (Cools.isEmpty(taskWrk)) {
-                                            log.error("搴撲綅寮傚父锛屽簱浣嶅彿锛�={}", taskWrk.getOriginTargetPoint());
-                                        } else {
-                                            taskWrkService.insert(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));
-                                            HashMap<String, Object> hashMap = new HashMap<>();
-                                            hashMap.put("TaskNo",taskWrk.getTaskNo());
-                                            try {
-                                                //寮�濮嬩笂鎶�,浠诲姟寮�濮嬫椂锛學CS鍥炶皟WMS
-                                                response = new HttpHandler.Builder()
-                                                        .setUri(wmsUrl)
-                                                        .setPath(taskStatusFeedbackPath)
-                                                        .setJson(JSON.toJSONString(hashMap))
-                                                        .build()
-                                                        .doPost();
-                                                JSONObject jsonObject1 = JSON.parseObject(response);
-                                                Boolean bool = false;
-                                                if(jsonObject1.get("ReturnStatus").equals(0)){
-                                                    taskWrk.setStatus(2);//娲惧彂浠诲姟
-                                                    bool = true;
-                                                    taskWrkService.updateById(taskWrk);
-                                                }
-                                                apiLogService.save("wcs寮�濮嬪叆搴撲换鍔′笂鎶ms"
-                                                        , wmsUrl + TaskExecCallback
-                                                        , null
-                                                        , "127.0.0.1"
-                                                        , JSON.toJSONString(hashMap)
-                                                        , response
-                                                        , bool
-                                                );
-                                            } catch (Exception e) {
+                                continue;
+                            }
 
-                                            }
-                                        }
-                                    } else {
-//                                    staProtocol.setWorkNo((short) 9991);
-                                        if(staProtocol.getWorkNo()>=9801&&staProtocol.getWorkNo()<=9825){
-                                            staProtocol.setStaNo((short)105);
-                                        } else if (staProtocol.getWorkNo()>=9826&&staProtocol.getWorkNo()<=9850) {
-                                            staProtocol.setStaNo((short)107);
-                                        }else if (staProtocol.getWorkNo()>=9851&&staProtocol.getWorkNo()<=9875) {
-                                            staProtocol.setStaNo((short)109);
-                                        }else{
-                                            staProtocol.setStaNo((short)110);
-                                        }
-                                        devpThread.setPakMk(staProtocol.getSiteId(), false);
-                                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                                    }
+                            int returnStatus = Integer.parseInt(jsonObject.get("ReturnStatus").toString());
+                            if (returnStatus == 0) {
+                                Result result = JSON.parseObject(jsonObject.get("Result").toString(), Result.class);
+                                // 鍒涙柊涓�涓叆搴撳伐浣滄。
+                                TaskWrk taskWrk = taskWrkService.selectByTaskNo(result.getTaskNo());
+                                if(taskWrk != null) {
+                                    log.info("浠诲姟锛�" + result.getTaskNo() + "宸茬粡瀛樺湪");
+                                    continue;
+                                }
 
-                                } else {
-//                                staProtocol.setWorkNo((short) 9991);
-                                    staProtocol.setStaNo(inSta.getBackSta().shortValue());
-                                    devpThread.setPakMk(staProtocol.getSiteId(), false);
-                                    MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                                taskWrk = createTask1(result, barcode);
+                                if (!taskWrkService.insert(taskWrk)) {
+                                    log.info("浠诲姟锛�" + result.getTaskNo() + "浠诲姟鍒涘缓澶辫触");
+                                    continue;
+                                }
+
+                                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));
+
+                                //涓婃姤
+                                HashMap<String, Object> hashMap = new HashMap<>();
+                                hashMap.put("TaskNo", taskWrk.getTaskNo());
+
+                                NotifyCustomDataDto customDataDto = new NotifyCustomDataDto();
+                                customDataDto.setUri(wmsUrl);
+                                customDataDto.setPath(taskStatusFeedbackPath);
+                                customDataDto.setData(JSON.toJSONString(hashMap));
+                                boolean notifyResult = notifyUtils.notify("task", 1, String.valueOf(taskWrk.getWrkNo()), taskWrk.getTaskNo(), NotifyMsgType.TASK_START, JSON.toJSONString(taskWrk), true, customDataDto);
+                                if(notifyResult) {
+                                    taskWrk.setStatus(2);
+                                    taskWrkService.updateById(taskWrk);
                                 }
                             }
                         } catch (Exception e) {
@@ -295,12 +253,12 @@
                                     , wmsUrl + inboundTaskApplyPath
                                     , null
                                     , "127.0.0.1"
-                                    , JSON.toJSONString(storageEscalationParam)
+                                    , JSON.toJSONString(requestParam)
                                     , response
                                     , success
                             );
                         }
-                        log.info("鍏ュ簱璇锋眰鍙傛暟=" + JSON.toJSONString(BoxNo));
+                        log.info("鍏ュ簱璇锋眰鍙傛暟=" + JSON.toJSONString(barcode));
                         log.info("鍏ュ簱璇锋眰杩斿洖鍙傛暟=" + JSON.toJSONString(response));
                     }
                 }
@@ -737,9 +695,6 @@
                     continue;
                 }
 
-//                int workNo = commonService.getWorkNo(WorkNoType.PAKIN.type);//鑾峰彇鍏ュ簱宸ヤ綔鍙�
-//                taskWrk.setWrkNo(workNo);//宸ヤ綔鍙�
-//                taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//娲惧彂鐘舵��
                 taskWrk.setAssignTime(new Date());//娲惧彂鏃堕棿
                 taskWrk.setWrkSts(3);//宸ヤ綔鐘舵�� 3.鍚婅溅鍏ュ簱
                 taskWrk.setCrnNo(staDesc.getCrnNo());//鍫嗗灈鏈哄彿
@@ -767,8 +722,8 @@
                     try {
                         taskWrkService.updateById(taskWrk);
                     } catch (Exception e) {
+                        e.printStackTrace();
                         log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo());
-                        log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽紓甯革細" + e);
                     }
                 }
             }
@@ -781,7 +736,7 @@
      */
     public synchronized void  locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol) {
         List<TaskWrk> taskWrksInitial = taskWrkMapper.selectPakOut(slave.getId(), null);
-        if (taskWrksInitial.size() == 0) {
+        if (taskWrksInitial.isEmpty()) {
             return;
         }
         for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
@@ -886,33 +841,20 @@
                                 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("status", taskWrk.getStatus());
-//                                headParam.put("ioType", taskWrk.getIoType());
-//                                headParam.put("barcode", taskWrk.getBarcode());
-//                                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澶辫触");
-//                            }
+
+                            //涓婃姤-鍑哄簱浠诲姟寮�濮嬫椂锛學CS鍥炶皟WMS
+                            HashMap<String, Object> hashMap = new HashMap<>();
+                            hashMap.put("TaskNo", taskWrk.getTaskNo());
+
+                            NotifyCustomDataDto customDataDto = new NotifyCustomDataDto();
+                            customDataDto.setUri(wmsUrl);
+                            customDataDto.setPath(taskStatusFeedbackPath);
+                            customDataDto.setData(JSON.toJSONString(hashMap));
+                            boolean notifyResult = notifyUtils.notify("task", 1, String.valueOf(taskWrk.getWrkNo()), taskWrk.getTaskNo(), NotifyMsgType.TASK_START, JSON.toJSONString(taskWrk), true, customDataDto);
+                            if(notifyResult) {
+                                taskWrk.setStatus(2);
+                                taskWrkService.updateById(taskWrk);
+                            }
                         }
                     }
                 }
@@ -1095,17 +1037,16 @@
                     continue;
                 }
                 //纭瀹屾垚淇″彿
-                CrnOperatorParam crnOperatorParam = new CrnOperatorParam();
-                crnOperatorParam.setCrnNo(crn.getId());
-                R r = crnController.crnTaskComplete(crnOperatorParam);
+                boolean result = crnOperaUtils.crnTaskComplete(crn.getId());
                 Thread.sleep(1000);
-                if(!r.get("code").equals(200)){
+                if(!result){
                     return;
                 }
                 if (!Cools.isEmpty(taskWrk)) {
                     if (taskWrk.getIoType() == 1 && taskWrk.getWrkSts() == 3) {
                         taskWrk.setWrkSts(4);//鍏ュ簱瀹屾垚
                         taskWrk.setStatus(5);//瀹岀粨
+
                         //鏇存柊搴撲綅鐘舵��
                         LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());
                         locMast.setLocSts("F");//F.鍦ㄥ簱
@@ -1116,6 +1057,7 @@
                     } else if (taskWrk.getIoType() == 2 && taskWrk.getWrkSts() == 12) {
                         taskWrk.setWrkSts(13);//鍑哄簱瀹屾垚
                         taskWrk.setStatus(5);//瀹岀粨
+
                         //鏇存柊搴撲綅鐘舵��
                         LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
                         locMast.setLocSts("O");//O.绌哄簱浣�
@@ -1337,8 +1279,11 @@
     }
 
     private TaskWrk createTask1(Result result, String barcode) {
-        String locNo = Utils.Fusion(result.getRow(), result.getFloor(), result.getColumn());
-
+        String locNo = Utils.getLocNo(result.getRow(), result.getFloor(), result.getColumn());
+        LocMast locMast = locMastService.selectByLocNo(locNo);
+        if (locMast == null) {
+            throw new CoolException("搴撲綅涓嶅瓨鍦�");
+        }
 
         Date now = new Date();
         TaskWrk taskWrk = new TaskWrk();
@@ -1350,7 +1295,6 @@
         taskWrk.setIoType(1);//浠诲姟绫诲瀷
         taskWrk.setIoPri(13);//浼樺厛绾�
         taskWrk.setBarcode(barcode);//鏉$爜
-        LocMast locMast = locMastService.selectByLocNo(locNo);
         taskWrk.setCrnNo(locMast.getCrnNo());
         taskWrk.setTargetPoint(locNo);
         taskWrk.setStartPoint("116");

--
Gitblit v1.9.1