From 3bf6f972604761c9ac59a2cb9ea01eeacaec2189 Mon Sep 17 00:00:00 2001
From: zyh <zyh@123>
Date: 星期六, 28 三月 2026 15:43:51 +0800
Subject: [PATCH] 更新为正式部署许可证

---
 src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java |  244 +++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 199 insertions(+), 45 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
index d49c220..d4e7a67 100644
--- a/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
@@ -13,6 +13,7 @@
 import com.zy.asrs.entity.mes.*;
 import com.zy.asrs.entity.rcs.*;
 import com.zy.asrs.mapper.AgvInfoMapper;
+import com.zy.asrs.mapper.CanFinMapper;
 import com.zy.asrs.mapper.MatItemBarcodeMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.OrderInAndOutUtil;
@@ -22,10 +23,12 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.sql.Time;
 import java.text.ParseException;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -99,6 +102,8 @@
     private DocTypeService docTypeService;
     @Autowired
     private OrderService orderService;
+    @Autowired
+    private CanFinMapper canFinMapper;
 
 
     // region MES鎺ュ彛
@@ -171,8 +176,10 @@
             newTag.setUpdateBy(defaultUserId);
             newTag.setUpdateTime(now);
 
-            if (!tagService.insert(newTag))
+            if (!tagService.insert(newTag)){
+                log.error("鎻掑叆tag澶辫触");
                 return -1;
+            }
             tagId = newTag.getId();
         } else {
             tagId = tag.getId();
@@ -197,10 +204,13 @@
             newMat.setUpdateTime(now);
             newMat.setStatus(1);
             if (mat == null) {
-                if (!matService.insert(newMat))
+                if (!matService.insert(newMat)){
+                    log.error("鎻掑叆澶辫触");
                     return -2;
+                }
             }
         } else {
+            log.error("tagId灏忎簬0");
             return -1;
         }
 
@@ -227,15 +237,25 @@
 
             // 鏍¢獙璁㈠崟鏄惁閲嶅
             OrderPakin order = orderPakinService.selectByNo(entry.getKey());
-            // 濡傛灉鍗曟嵁涓嶅瓨鍦ㄥ垯娣诲姞锛涘鏋滃崟鎹瓨鍦紝浣滀笟涓棤娉曚慨鏀癸紝鍙嶄箣鍒欎慨鏀瑰崟鎹�
+            OrderPakin orderPakin;
+
+            // 濡傛灉鍗曟嵁涓嶅瓨鍦ㄥ垯娣诲姞锛涘鏋滃崟鎹瓨鍦ㄤ笖settle涓�1鍒欒拷鍔犳槑缁嗭紱濡傛灉settle涓�6鍒欏垹闄ゅ悗閲嶆柊鐢熸垚锛涗綔涓氫腑鏃犳硶淇敼
             if (!Cools.isEmpty(order)) {
-                if (order.getSettle() > 1L) {
+                if (order.getSettle() > 1L && order.getSettle() < 6L) {
                     throw new CoolException(entry.getKey() + "姝e湪鍑哄簱锛屾棤娉曚慨鏀瑰崟鎹�");
+                } else if (order.getSettle() == 6L) {
+                    orderPakinService.remove(order.getId());
+                    orderPakin = null;
+                } else if (order.getSettle() == 1L) {
+                    orderPakin = order;
+                } else {
+                    orderPakin = null;
                 }
-                orderPakinService.remove(order.getId());
+            } else {
+                orderPakin = null;
             }
 
-            // 鐢熸垚璁㈠崟
+            // 鐢熸垚璁㈠崟鎴栨洿鏂拌鍗�
             JSONObject newMemo = new JSONObject();
             newMemo.put("sourceNo", matRecvForm.getSourceNo());
             newMemo.put("sourceName", matRecvForm.getSourceName());
@@ -243,21 +263,27 @@
             newMemo.put("itemdata", list);
 
 
-            // 鐢熸垚璁㈠崟
-            OrderPakin orderPakin = new OrderPakin();
-            orderPakin.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
-            orderPakin.setOrderNo(entry.getKey());
-            orderPakin.setOrderTime(DateUtils.convert(now));
-            orderPakin.setDocType(docType);
-            orderPakin.setSettle(1L);
-            orderPakin.setStatus(1);
-            orderPakin.setCreateBy(defaultUserId);
-            orderPakin.setCreateTime(now);
-            orderPakin.setUpdateBy(defaultUserId);
-            orderPakin.setUpdateTime(now);
-            orderPakin.setMemo(JSONObject.toJSONString(newMemo));  //涓哄嚭搴撳畬鎴愬弽棣堜繚瀛�
-            orderPakin.setPakinPakoutStatus(1);
-            orderPakinService.insert(orderPakin);
+            // 濡傛灉璁㈠崟涓嶅瓨鍦ㄦ垨宸插垹闄わ紝鍒欑敓鎴愭柊璁㈠崟
+            if (orderPakin == null) {
+                orderPakin = new OrderPakin();
+                orderPakin.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
+                orderPakin.setOrderNo(entry.getKey());
+                orderPakin.setOrderTime(DateUtils.convert(now));
+                orderPakin.setDocType(docType);
+                orderPakin.setSettle(1L);
+                orderPakin.setStatus(1);
+                orderPakin.setCreateBy(defaultUserId);
+                orderPakin.setCreateTime(now);
+                orderPakin.setMemo(JSONObject.toJSONString(newMemo));
+                orderPakin.setPakinPakoutStatus(1);
+                orderPakinService.insert(orderPakin);
+            } else {
+                // 鏇存柊璁㈠崟鐨刴emo鍜屾洿鏂版椂闂�
+                orderPakin.setMemo(JSONObject.toJSONString(newMemo));
+                orderPakin.setUpdateBy(defaultUserId);
+                orderPakin.setUpdateTime(now);
+                orderPakinService.updateById(orderPakin);
+            }
             if (list != null && !list.isEmpty()) {
                 for (MesMatInfo mesMatInfo : list) {
 
@@ -270,7 +296,7 @@
                     OrderDetlPakin orderDetlPakin = new OrderDetlPakin();
                     orderDetlPakin.setOrderId(orderPakin.getId());
                     orderDetlPakin.setOrderNo(orderPakin.getOrderNo());
-                    orderDetlPakin.setAnfme(Double.valueOf(mesMatInfo.getQty()));
+                    orderDetlPakin.setAnfme(mesMatInfo.getQty());
                     orderDetlPakin.setQty(0.0);
                     orderDetlPakin.setMatnr(mat.getMatnr());
                     orderDetlPakin.setMaktx(mat.getMaktx());
@@ -941,6 +967,7 @@
         if (docType == null) {
             return 0;
         }
+
         //鐢熸垚鍑哄簱鍗�
         if (docType.getPakout() == 1) {
             long settle = 1;
@@ -971,10 +998,47 @@
             orderPakout.setMemo(JSONObject.toJSONString(mesCallOutApply));
             orderPakout.setPakinPakoutStatus(2);
             orderPakout.setCstmrName(mesCallOutApply.getStationId());//agv鐩爣绔欑偣
+/*
+            // 鏌ヨcan_fin琛ㄤ腑apply_time鏈�鏂扮殑璁板綍
+            List<CanFin> canFinList = canFinMapper.selectList(new EntityWrapper<CanFin>()
+                    .orderBy("apply_time", false)
+            );
+            if (!canFinList.isEmpty()) {
+                CanFin firstCanFin = canFinList.get(0);
+                if (firstCanFin.getAgvType().equals("agv-in-out")) {
+                    // 鍙慨鏀归渶瑕佹洿鏂扮殑瀛楁
+                    if (firstCanFin.getOutNo() == null){
+                        firstCanFin.setOutType("waiting");
+                        firstCanFin.setOutNo(mesCallOutApply.getOrderNo());
+                        // 纭繚鍏朵粬瀛楁淇濇寔涓嶅彉
+                        canFinMapper.updateById(firstCanFin);
+                        log.info("宸叉洿鏂癱an_fin琛ㄦ渶鏃╄褰曠殑out_no锛孖D锛歿}锛屽嚭搴撳崟鍙凤細{}",
+                                firstCanFin.getId(), mesCallOutApply.getOrderNo());
+                    }
+                }
+            }
+            */
+
             if (!orderPakoutService.insert(orderPakout)) {
                 log.error("MES淇濆瓨鍑哄簱璁㈠崟锛堝彨鏂欙級涓绘。澶辫触");
                 throw new CoolException("淇濆瓨鍑哄簱璁㈠崟锛堝彨鏂欙級涓绘。澶辫触");
             }
+
+            if (mesCallOutApply.getTransType().equals("瑁呴厤鍑哄簱鍗�")){
+                CanFin canFin = new CanFin();
+                Date time = now;
+                canFin.setAgvType("agv-out");
+                canFin.setOutNo(mesCallOutApply.getOrderNo());
+                List<CanFin> canFinList = canFinMapper.selectList(new EntityWrapper<>());
+                if (canFinList.isEmpty()){
+                    canFin.setTaskStatus("canout");
+                }else {
+                    canFin.setTaskStatus("waiting");
+                }
+                canFin.setApplyTime(time);
+                canFinMapper.insert(canFin);
+            }
+
             Set<String> set = new HashSet<>();
             // 鐢熸垚鏄庣粏
             if (mesCallOutApply.getItemdata() != null && !mesCallOutApply.getItemdata().isEmpty()) {
@@ -1013,7 +1077,8 @@
             //鏈夊灏戠涓嶅悓鐨勯厤鐩樺彿   鍙湁閰嶇洏鍑哄簱鍗曢渶瑕佺煡閬�
             if (mesCallOutApply.getTransType().equals("閰嶇洏鍑哄簱鍗�")) {
                 orderPakout.setPayType(set.size());
-                String shipCode = mesCallOutApply.getItemdata().get(0).getTrayid().split("-")[2];
+                String orderNo = mesCallOutApply.getOrderNo();
+                String shipCode = orderNo.substring(orderNo.lastIndexOf("-") + 1);
                 orderPakout.setShipCode(shipCode);//鍖哄煙  鏄惁鏄壒娈婃墭鐩�
                 orderPakoutService.updateById(orderPakout);
             }
@@ -1136,8 +1201,19 @@
         task.setPltType(transTask.getAgvFactory());//鍗庢檽AGV
         task.setPacked(transTask.getRackNumber());//鏂欐灦鍙�
         task.setCtnType(1);
+        task.setIsPda(transTask.getIsPDA());
 
         if (taskService.insert(task)) {
+            if (transTask.getNextStationId().equals("307")){
+                CanFin canFin = new CanFin();
+                Date time = now;
+//                canFin.setAgvType("agv-in-out");
+                canFin.setAgvType("agv-in");
+                canFin.setInNo(transTask.getTaskno());
+                canFin.setTaskStatus("waiting");
+                canFin.setApplyTime(time);
+                canFinMapper.insert(canFin);
+            }
             result.put("Success", "1");
             result.put("Message", "浠诲姟鎺ユ敹鎴愬姛");
 
@@ -1240,11 +1316,13 @@
         mesReturn.setSuccess("2");
 
         if ("Y".equals(allow.getStatus())) {
-            String TaskNo = allow.getTaskno();
-            if(allow.getTaskno().contains("-")){
-                TaskNo = allow.getTaskno().substring(0, allow.getTaskno().length() - 2);
+
+            // 淇敼鍚庣殑閫昏緫锛氭湁"-"鍒欏幓鎺夋渶鍚庝竴涓�"-"鍙婂悗闈㈠唴瀹癸紝娌℃湁鍒欎繚鎸佸師鏍�
+            String taskNo = allow.getTaskno();
+            if (taskNo.contains("-")) {
+                taskNo = allow.getTaskno().substring(0, taskNo.lastIndexOf("-"));
             }
-            Task task = taskService.selectOne(new EntityWrapper<Task>().eq("task_no", TaskNo));
+            Task task = taskService.selectOne(new EntityWrapper<Task>().eq("task_no", taskNo));
             if (Cools.isEmpty(task)) {
                 mesReturn.setMessage("娌℃湁鎵句釜璇ヤ换鍔$紪鍙�=" + allow.getTaskno() + "鐨凙GV绉诲姩浠诲姟");
             } else {
@@ -1332,13 +1410,14 @@
         mesReturn.setSuccess("2");
 
         if ("Y".equals(allow.getStatus())) {
-            String TaskNo = allow.getTaskno();
-            if(allow.getTaskno().contains("-")){
-                TaskNo = allow.getTaskno().substring(0, allow.getTaskno().length() - 2);
+            // 淇敼鍚庣殑閫昏緫锛氭湁"-"鍒欏幓鎺夋渶鍚庝竴涓�"-"鍙婂悗闈㈠唴瀹癸紝娌℃湁鍒欎繚鎸佸師鏍�
+            String taskNo = allow.getTaskno();
+            if (taskNo.contains("-")) {
+                taskNo = allow.getTaskno().substring(0, taskNo.lastIndexOf("-"));
             }
-            Task task = taskService.selectOne(new EntityWrapper<Task>().eq("task_no", TaskNo));
+            Task task = taskService.selectOne(new EntityWrapper<Task>().eq("task_no", taskNo));
             if (Cools.isEmpty(task)) {
-                mesReturn.setMessage("娌℃湁鎵句釜璇ヤ换鍔$紪鍙�=" + TaskNo + "鐨凙GV绉诲姩浠诲姟");
+                mesReturn.setMessage("娌℃湁鎵句釜璇ヤ换鍔$紪鍙�=" + taskNo + "鐨凙GV绉诲姩浠诲姟");
             } else {
                 //鏌ョ湅鐢宠绔欑偣鐨勬槸娴峰悍杩樻槸鍗庢檽
                 //娴峰悍
@@ -1401,24 +1480,99 @@
     }
 
     @Override
-    public int AGVPause(JSONObject params, int AGVType){
-        MesReturn mesReturn = new MesReturn();
+    public int AGVPause(JSONObject mesInfo, String Type){
 
-        String hik_url = "api/robot/controller/zone/pause";
-        String hx_url = "";
-        String URL = "";
-        if (AGVType == 1){
-            URL = HIK_URL + hik_url;
+        int i = HikPersonIn(mesInfo, Type);
+        int j = HxPersonIn(mesInfo, Type);
+
+        if (i == 1){
+            if (j == 1){
+                return 1;
+            }else
+                return 2;
         }else {
-            URL = HX_URL + hx_url;
+            if (j == 1){
+                return 3;
+            }else
+                return 4;
+        }
+    }
+
+    //浜哄憳鍏ヤ镜绯荤粺娴峰悍瀹炵幇鏂规硶
+    public int HikPersonIn(JSONObject param, String Type) {
+        String hik_blockUrl = "api/robot/controller/zone/blockade";
+        String hik_pauseUrl = "api/robot/controller/zone/pause";
+
+        String BLOCK_URL = HIK_URL + hik_blockUrl;
+        String PAUSE_URL = HIK_URL + hik_pauseUrl;
+
+        JSONObject rcsBlock = new JSONObject();
+        JSONObject rcsPause = new JSONObject();
+
+        rcsBlock.put("mapCode", "BB");
+        rcsPause.put("mapCode", "BB");
+
+        rcsBlock.put("zoneCode", param.getString("AreaCode"));
+        rcsPause.put("zoneCode", param.getString("AreaCode"));
+
+        if (Type.equals("STOP")){
+            rcsBlock.put("invoke", "BLOCKADE");
+            rcsPause.put("invoke","FREEZE");
+        }
+        if (Type.equals("START")){
+            rcsBlock.put("invoke", "OPENUP");
+            rcsPause.put("invoke","RUN");
         }
 
-        String response = RcsServiceImpl.sendPost(URL, JSONObject.toJSONString(params));
-        JSONObject jsonObject = JSON.parseObject(response);
-        if (!StringUtils.isEmpty(response) && jsonObject.getString("code").equals("SUCCESS")) {
+        String blockResponse = RcsServiceImpl.sendPost(BLOCK_URL, JSONObject.toJSONString(rcsBlock));
+        String PauseResponse = RcsServiceImpl.sendPost(PAUSE_URL, JSONObject.toJSONString(rcsPause));
+        JSONObject blockJsonObject = JSON.parseObject(blockResponse);
+        JSONObject pauseJsonObject = JSON.parseObject(PauseResponse);
+        if (!StringUtils.isEmpty(blockResponse) && (blockJsonObject.getString("code").equals("SUCCESS"))) {
+            if (!StringUtils.isEmpty(PauseResponse) && (pauseJsonObject.getString("code").equals("SUCCESS"))) {
                 return 1;
-        }else
-            return 2;
+            }
+            return 0;
+        }
+        //鐩存帴杩斿洖锛屼笉闇�瑕佷俊鎭�
+        return 0;
+    }
+
+    //浜哄憳鍏ヤ镜绯荤粺鍗庢檽瀹炵幇鏂规硶
+    public int HxPersonIn(JSONObject param, String Type) {
+        JSONObject rcsPause = new JSONObject();
+
+        String hx_url = "controller/notify/isstop";
+        String URL = HX_URL + hx_url;
+
+        rcsPause.put("agvno", 0);
+        rcsPause.put("areaNo", param.getString("AreaCode"));
+
+        if (Type.equals("STOP"))
+            rcsPause.put("action", "stop");
+
+        if (Type.equals("START"))
+            rcsPause.put("action", "start");
+
+        if (Type.equals("STOP")){
+            for (int i = 0; i < 10; i++){
+                String response = RcsServiceImpl.sendPost(URL, JSONObject.toJSONString(rcsPause));
+                JSONObject jsonObject = JSON.parseObject(response);
+                if (!StringUtils.isEmpty(response) && (jsonObject.getString("code").equals("SUCCESS") || jsonObject.getInteger("code") == 200)) {
+                    return 1;
+                }else
+                    return 0;
+            }
+        }
+        if (Type.equals("START")){
+            String response = RcsServiceImpl.sendPost(URL, JSONObject.toJSONString(rcsPause));
+            JSONObject jsonObject = JSON.parseObject(response);
+            if (!StringUtils.isEmpty(response) && (jsonObject.getString("code").equals("SUCCESS") || jsonObject.getInteger("code") == 200)) {
+                return 1;
+            }else
+                return 0;
+        }
+        return 0;
     }
 
     // endregion

--
Gitblit v1.9.1