From 9ed4cb53a2c643b879f993537f5a2793fba56ba1 Mon Sep 17 00:00:00 2001
From: ZY <zc857179121@qq.com>
Date: 星期一, 31 三月 2025 07:57:13 +0800
Subject: [PATCH] 1

---
 src/main/java/com/zy/asrs/controller/AgvOpenController.java |  238 +++++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 173 insertions(+), 65 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/AgvOpenController.java b/src/main/java/com/zy/asrs/controller/AgvOpenController.java
index 55492df..48b4713 100644
--- a/src/main/java/com/zy/asrs/controller/AgvOpenController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvOpenController.java
@@ -6,13 +6,17 @@
 import com.core.annotations.AppAuth;
 import com.core.common.Cools;
 import com.core.common.R;
+import com.zy.asrs.entity.AgvBasDevp;
 import com.zy.asrs.entity.AgvWrkMast;
+import com.zy.asrs.entity.WrkMastExecute;
 import com.zy.asrs.entity.param.AgvTaskCallBackParam;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.AppAuthUtil;
 import com.zy.common.web.BaseController;
 import lombok.Setter;
 import lombok.extern.slf4j.Slf4j;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
@@ -25,8 +29,11 @@
 import javax.servlet.http.HttpServletRequest;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.util.Date;
 import java.util.EnumSet;
 import java.util.Map;
+
+import static org.reflections.Reflections.log;
 
 /**
  * 涓婃姤浜嬩欢绫诲瀷锛坋ventType锛夛細
@@ -49,118 +56,219 @@
 @RequestMapping("/agv")
 public class AgvOpenController extends BaseController {
 
+    private static final Logger log = LoggerFactory.getLogger(AgvMobileController.class);
+
     @Autowired
     AgvWrkMastService agvWrkMastService;
     @Autowired
     ApiLogService apiLogService;
+    @Autowired
+    private WrkMastExecuteService wrkMastExecuteService;
+    @Autowired
+    private AgvBasDevpService agvBasDevpService;
 
     @PostMapping("/task/event/status")
     @AppAuth(memo = "ESS浠诲姟鍥炶皟")
-    public R taskEventStaus(@RequestBody AgvTaskCallBackParam param, HttpServletRequest request){
+    public R taskEventStaus(@RequestBody AgvTaskCallBackParam param, HttpServletRequest request) {
 
+
+        //save api log (appkey 鍚庣画娣诲姞)
+
+        R r = new R(0, "鎴愬姛");
+
+        AppAuthUtil.auth("", param, request);
+        int wrkNo = Integer.parseInt(param.getTaskCode());
+        if (wrkNo < 0) {
+            wrkNo = -wrkNo;
+        }
+        AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("wrk_no", wrkNo));
+        if (Cools.isEmpty(agvWrkMast)) {
+            agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", param.getPodCode()));
+            if (Cools.isEmpty(agvWrkMast)) {
+                r = R.error("浠诲姟缂栧彿閿欒");
+                logPost(param, JSONObject.toJSONString(r), false);
+                return r;
+            }
+        }
+        if (agvWrkMast.getIoType().equals(121)) {
+            try {
+                if (agvWrkMast.getWrkSts().equals(12L)) {
+                    WrkMastExecute wrkMastExecute = wrkMastExecuteService.selectOne(new EntityWrapper<WrkMastExecute>().eq("wrk_no", wrkNo));
+                    if (Cools.isEmpty(wrkMastExecute) || wrkMastExecute.getWrkSts() != 1) {
+                        r = R.error("浠诲姟鐘舵�乄rkSts鍙傛暟鏈夎,WrkSts:" + wrkMastExecute.getWrkSts$());
+                        logPost(param, "浠诲姟鐘舵�乄rkSts鍙傛暟鏈夎,WrkSts:" + wrkMastExecute.getWrkSts$() + JSONObject.toJSONString(r), false);
+                        return r;
+                    } else {
+                        wrkMastExecute.setWrkSts(wrkMastExecute.getWrkStsCode());
+                        wrkMastExecuteService.updateById(wrkMastExecute);
+                    }
+                } else {
+                    r = R.error("浠诲姟寮傚父");
+                    logPost(param, JSONObject.toJSONString(r), false);
+
+                    return r;
+                }
+            } catch (Exception e) {
+                r = R.error("" + e.getMessage());
+                logPost(param, JSONObject.toJSONString(r), false);
+                return r;
+            }
+        } else {
+            if (agvWrkMast.getWrkSts() >= 205) {
+                r = R.error("褰撳墠浠诲姟宸插畬鎴�");
+                logPost(param, JSONObject.toJSONString(r), false);
+                return r;
+            }
+
+            AgvTask agvTask = AgvTask.valueOf(param.getMethod());
+            Class<AgvTask> clz = AgvTask.class;
+            try {
+                Method method = clz.getDeclaredMethod("success", AgvWrkMast.class, AgvTaskCallBackParam.class);
+                method.invoke(agvTask, agvWrkMast, param);
+            } catch (NoSuchMethodException e) {
+                r = R.error("浠诲姟鐘舵�乻tatus鍙傛暟鏈夎");
+                logPost(param, JSONObject.toJSONString(r), false);
+                return r;
+            } catch (InvocationTargetException e) {
+                log.error(e.getMessage());
+                r = R.error("" + e.getMessage());
+                logPost(param, JSONObject.toJSONString(r), false);
+                return r;
+            } catch (IllegalAccessException e) {
+                log.error(e.getMessage());
+                r = R.error("" + e.getMessage());
+                logPost(param, JSONObject.toJSONString(r), false);
+                return r;
+            }
+        }
+        logPost(param, JSONObject.toJSONString(r), true);
+        return r;
+    }
+
+    @PostMapping("/conveyor/loadContainerFinish ")
+    @AppAuth(memo = "鍙栬揣鏋跺畬鎴愰�氱煡")
+    public R loadContainerFinish(@RequestBody Map<String, Object> params) {
+
+        return R.ok();
+    }
+
+    private void logPost(AgvTaskCallBackParam param, String response, boolean success) {
         apiLogService.save(
                 "ESS浠诲姟鍥炶皟",
                 "/phyzwms/agv/task/event/status",
                 null,
                 null,
                 JSON.toJSONString(JSONObject.toJSONString(param)),
-                null,
-                true
+                response,
+                success
         );
-
-
-        //save api log (appkey 鍚庣画娣诲姞)
-
-        AppAuthUtil.auth("",param, request);
-        int wrkNo = Integer.parseInt(param.getTaskCode());
-        if(wrkNo < 0){
-            wrkNo = -wrkNo;
-        }
-        AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("wrk_no", wrkNo));
-        if(Cools.isEmpty(agvWrkMast)){
-            agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode",param.getPodCode()));
-            if (Cools.isEmpty(agvWrkMast)){
-                return R.error("浠诲姟缂栧彿閿欒");
-            }
-        }
-
-        AgvTask agvTask = AgvTask.valueOf(param.getMethod());
-        Class<AgvTask> clz = AgvTask.class;
-        try {
-            Method method = clz.getDeclaredMethod("success", AgvWrkMast.class, AgvTaskCallBackParam.class);
-            method.invoke(agvTask,agvWrkMast,param);
-        } catch (NoSuchMethodException e) {
-            return R.error("浠诲姟鐘舵�乻tatus鍙傛暟鏈夎");
-        } catch (InvocationTargetException e) {
-            log.error(e.getMessage());
-            return R.error();
-        } catch (IllegalAccessException e) {
-            log.error(e.getMessage());
-            return R.error();
-        }
-        return R.ok();
-    }
-
-    @PostMapping("/conveyor/loadContainerFinish ")
-    @AppAuth(memo = "鍙栧鍣ㄥ畬鎴愰�氱煡")
-    public R loadContainerFinish(@RequestBody Map<String,Object> params){
-
-        return R.ok();
     }
 }
 
-enum AgvTask{
+enum AgvTask {
 
     /**
-     * 涓婃姤浠诲姟鐘舵��
+     * 涓婃姤浠诲姟瀹屾垚
      */
-    end{
+    end {
         @Transactional
         public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
+
+
             //淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚
             agvWrkMast.setWrkSts(205L);
 
-            //agvWrkMast.setLocNo(param.getLocationCode());
-            agvWrkMastService.updateById(agvWrkMast);
-            //agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),205);
-
             //鍑哄簱浠诲姟 101.鍑哄簱 || 103.鎷f枡鍑哄簱 || 107.鐩樼偣鍑哄簱
-            if(agvWrkMast.getIoType() == 101 || agvWrkMast.getIoType() == 103 || agvWrkMast.getIoType() == 107){
-                //淇敼鍑哄簱绔欑偣鐘舵��
-                agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+            if (agvWrkMast.getIoType() == 101 || agvWrkMast.getIoType() == 103 || agvWrkMast.getIoType() == 107) {
+                AgvBasDevp byDevNo = agvBasDevpService.getByDevNo(agvWrkMast.getLocNo());
+                if (byDevNo != null) {
+                    log.info("鍑哄簱浠诲姟杩涘叆绔欑偣===>>绔欑偣鐮侊細{}锛岀珯鐐圭姸鎬亄}", byDevNo.getDevNo(), byDevNo.getLocSts());
+                    //淇敼鍑哄簱绔欑偣鐘舵��
+                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
+
+                }
             }
             //鍑哄簱浠诲姟 110.绌烘澘鍑哄簱
-            if(agvWrkMast.getIoType() == 110){
-                agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+            if (agvWrkMast.getIoType() == 110) {
+                agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
+                agvWrkMast.setWrkSts(206L);
             }
+            agvWrkMast.setModiTime(new Date());
+            agvWrkMastService.updateById(agvWrkMast);
         }
     },
     /**
      * 浠诲姟寮�濮�
      */
-    start{
+    start {
         @Transactional
         public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
             //淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负203.浠诲姟寮�濮�
             agvWrkMast.setWrkSts(203L);
+            agvWrkMast.setModiTime(new Date());
+            agvWrkMast.setPdcType(param.getRobotCode());
             agvWrkMastService.updateById(agvWrkMast);
         }
     },
     /**
      * 璧板嚭鍌ㄤ綅鐘舵��
      */
-    outbin{
+    outbin {
         @Transactional
         public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
 
-            //鍏ュ簱浠诲姟 || 鎷f枡鍏ュ簱浠诲姟 ||鐩樼偣鍐嶅叆搴� ||绌烘澘鍏ュ簱
-            if(agvWrkMast.getIoType() == 1 || agvWrkMast.getIoType() == 53 || agvWrkMast.getIoType() == 57 || agvWrkMast.getIoType() == 10){
-                //淇敼婧愮珯鐐圭姸鎬佷负O.绌猴紝浠ュ強瑙g粦鎵樼洏鏉$爜
-                agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",null);
+            switch (agvWrkMast.getIoType()) {
+                //鍏ュ簱浠诲姟
+                case 1:
+                    // 绌烘澘鍏ュ簱
+                case 10:
+                    // 鎷f枡鍏ュ簱浠诲姟
+                case 53:
+                    // 绔欑偣閫�鍥�
+                case 58:
+                    // 鐩樼偣鍐嶅叆搴�
+                case 57:
+                    AgvBasDevp byDevNo = agvBasDevpService.getByDevNo(agvWrkMast.getSourceLocNo());
+                    String locSts = "O";
+                    if (byDevNo != null) {
+                        assert log != null;
+//                        if (!Cools.isEmpty(agvWrkMast.getBarcode())) {
+//                            AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("barcode", agvWrkMast.getBarcode()));
+//                            if (!Cools.isEmpty(agvBasDevp) && agvBasDevp.getLocSts().equals("F") && !agvBasDevp.getDevNo().equals(byDevNo.getDevNo())) {
+//                                agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvBasDevp.getDevNo(), locSts, "", null);
+//                            }
+//                        }
+                        log.info("鏂欐灦绂诲紑鏃跺綋鍓嶇珯鐐圭姸鎬�:{},{}", byDevNo.getDevNo(), byDevNo.getLocSts());
+                        if ("S".equals(byDevNo.getLocSts()) || "F".equals(byDevNo.getLocSts())) {
+                            log.info("鏂欐灦绂诲紑鏃跺綋鍓嶇珯鐐圭姸鎬佷繚鎸佷笉鍙�1:{},{}", byDevNo.getDevNo(), byDevNo.getLocSts());
+                            locSts = byDevNo.getLocSts();
+                            agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), locSts, byDevNo.getBarcode(), null);
+                        } else {
+                            log.info("鏂欐灦绂诲紑鏃跺綋鍓嶇珯鐐圭姸鎬佷繚鎸佷笉鍙�2:{},{}", byDevNo.getDevNo(), byDevNo.getLocSts());
+                            locSts = "O";
+                            agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), locSts, "", null);
+                        }
+
+                    }
+                    break;
             }
 
+            if (agvWrkMast.getIoType() == 108 || agvWrkMast.getIoType() == 114) {
+                //鏇存柊搴撳瓨鏄庣粏
+                agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo());
+                //淇敼婧愬簱浣嶇姸鎬佷负O
+                agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0);
+            } else if (agvWrkMast.getIoType() == 109 && !agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) {
+                //淇敼婧愬簱浣嶇姸鎬佷负O
+                agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0);
+            }
+            //if(agvWrkMast.getIoType() == 1 || agvWrkMast.getIoType() == 53 || agvWrkMast.getIoType() == 57 || agvWrkMast.getIoType() == 10){
+            //    //淇敼婧愮珯鐐圭姸鎬佷负O.绌猴紝浠ュ強瑙g粦鎵樼洏鏉$爜
+            //    agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",null);
+            //}
+
             //淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负203.RCS鏀捐揣涓�
-            agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),204);
+            agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(), 204);
 
         }
 
@@ -168,7 +276,7 @@
     /**
      * 涓婃姤鏀剧鐘舵��
      */
-    cancel{
+    cancel {
         @Transactional
         public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
 
@@ -176,7 +284,7 @@
         }
 
     },
-    apply{
+    apply {
         @Transactional
         public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
 
@@ -233,8 +341,8 @@
         AgvWrkDetlLogService agvWrkDetlLogService;
 
         @PostConstruct
-        public void postConstruct(){
-            for(AgvTask task : EnumSet.allOf(AgvTask.class)){
+        public void postConstruct() {
+            for (AgvTask task : EnumSet.allOf(AgvTask.class)) {
                 task.setAgvBasDevpService(agvBasDevpService);
                 task.setAgvLocDetlService(agvLocDetlService);
                 task.setAgvLocMastService(agvLocMastService);

--
Gitblit v1.9.1