From b187814d7cfa5ace1ed9c203372524c69fe56553 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期三, 31 十二月 2025 08:11:44 +0800
Subject: [PATCH] 1.完善AGV任务任务下发 2.拣料回库数据更新维护

---
 src/main/java/com/zy/asrs/task/AGVTaskReportScheduler.java |  195 ++++++++++++++++++++++++++++++++++++------------
 1 files changed, 146 insertions(+), 49 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/AGVTaskReportScheduler.java b/src/main/java/com/zy/asrs/task/AGVTaskReportScheduler.java
index fbd0213..a0cf2b6 100644
--- a/src/main/java/com/zy/asrs/task/AGVTaskReportScheduler.java
+++ b/src/main/java/com/zy/asrs/task/AGVTaskReportScheduler.java
@@ -3,10 +3,12 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
+import com.zy.asrs.entity.BasDevp;
 import com.zy.asrs.entity.Task;
 import com.zy.asrs.entity.WrkMast;
 import com.zy.asrs.service.TaskService;
 import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.service.impl.BasDevpServiceImpl;
 import com.zy.asrs.task.core.ReturnT;
 import com.zy.asrs.task.handler.AGVTaskReportHandler;
 import org.slf4j.Logger;
@@ -31,58 +33,67 @@
     private Boolean switchErpReportOld;
     @Autowired
     private WrkMastService wrkMastService;
+    @Autowired
+    private BasDevpServiceImpl basDevpService;
 
     /**
      * 婊℃澘鍜岀┖鏉垮嚭搴撲换鍔★紝鍑哄埌杈撻�佺嚎鍚庡垱寤篈GV鎼繍浠诲姟
      */
     @Scheduled(cron = "0/3 * * * * ? ")
-    private void createAGVTask(){
-        if (!switchErpReportOld){
+    private void createAGVTask() {
+        if (!switchErpReportOld) {
             return;
         }
-        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 300));
-        if (wrkMasts.isEmpty()){
+        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 30));
+        if (wrkMasts.isEmpty()) {
             return;
         }
-        for (WrkMast wrkMast : wrkMasts){
+        for (WrkMast wrkMast : wrkMasts) {
             //鏌ヨ鏄惁鏈夋簮绔欏拰鐩爣绔欐湁涓�鏍风殑agv鎼繍浠诲姟
             //濡傛灉鏈夊垯璺宠繃鏈agv鎼繍浠诲姟涓嬪彂
+
+            //mes缁欑殑agv鐩爣绔欑偣闇�瑕佽В鏋� Q锛氬尯鍩� 锛� Z锛� 绔欑偣
+            String[] split = wrkMast.getMemo().split("-");
+            //鍏ュ嚭搴撶姸鎬侊細 3.绔欏埌绔�  4.绔欏埌鍖哄煙
+            Integer ioType = split[0].equals("Q") ? 4 : 3;
+            //agv鐩爣绔欑偣
+            String stnNo = split[1];
             Task task1 = taskService.selectOne(new EntityWrapper<Task>()
                     .in("source_sta_no", wrkMast.getSourceStaNo(), wrkMast.getMemo())
                     .in("sta_no", wrkMast.getSourceStaNo(), wrkMast.getMemo()));
             if (Cools.isEmpty(task1)) {
 
-            //鐢熸垚AGV鎼繍鍑哄簱浠诲姟
-            // 淇濆瓨宸ヤ綔妗�
-            Task task = new Task();
-            Date date = new Date();
-            String TaskNo = wrkMast.getWrkNo()+"-"+date.getTime();
-            task.setWrkNo(wrkMast.getWrkNo())
-                    .setTaskNo(TaskNo)
-                    .setIoTime(date)
-                    .setWrkSts(301L) // 宸ヤ綔鐘舵�侊細301.浠诲姟涓嬪彂
-                    .setIoType(3) // 鍏ュ嚭搴撶姸鎬侊細 3.绔欏埌绔�
-                    .setTaskType("agv")
-                    .setIoPri(10D)
-                    .setFullPlt("Y") // 婊℃澘锛歒
-                    .setPicking("N") // 鎷f枡
-                    .setExitMk("N")// 閫�鍑�
-                    .setStaNo(wrkMast.getMemo())
-                    .setSourceStaNo(wrkMast.getSourceStaNo())//绌烘枡鏋剁紦瀛樺尯E1
-                    .setEmptyMk("N")// 绌烘澘
-                    .setBarcode(wrkMast.getBarcode())// 鎵樼洏鐮�
-                    .setLinkMis("N")
-                    .setAppeUser(9945L)
-                    .setAppeTime(date)
-                    .setModiUser(9945L)
-                    .setModiTime(date);
-            if (!taskService.insert(task)) {
-                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
-            }else {
-                wrkMast.setWrkSts(31L);//31.AGV鎼繍浠诲姟鍒涘缓鎴愬姛
-                wrkMast.setModiTime(date);
-                wrkMastService.updateById(wrkMast);
-            }
+                //鐢熸垚AGV鎼繍鍑哄簱浠诲姟
+                // 淇濆瓨宸ヤ綔妗�
+                Task task = new Task();
+                Date date = new Date();
+                String TaskNo = wrkMast.getWrkNo() + "aa" + date.getTime();
+                task.setWrkNo(wrkMast.getWrkNo())
+                        .setTaskNo(TaskNo)
+                        .setIoTime(date)
+                        .setWrkSts(301L) // 宸ヤ綔鐘舵�侊細301.浠诲姟涓嬪彂
+                        .setIoType(ioType) // 鍏ュ嚭搴撶姸鎬侊細 3.绔欏埌绔�  4.绔欏埌鍖哄煙
+                        .setTaskType("agv")
+                        .setIoPri(10D)
+                        .setFullPlt("Y") // 婊℃澘锛歒
+                        .setPicking("N") // 鎷f枡
+                        .setExitMk("N")// 閫�鍑�
+                        .setStaNo(wrkMast.getMemo())
+                        .setSourceStaNo(wrkMast.getSourceStaNo())
+                        .setEmptyMk("N")// 绌烘澘
+                        .setBarcode(wrkMast.getBarcode())// 鎵樼洏鐮�
+                        .setLinkMis("N")
+                        .setAppeUser(9945L)
+                        .setAppeTime(date)
+                        .setModiUser(9945L)
+                        .setModiTime(date);
+                if (!taskService.insert(task)) {
+                    throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+                } else {
+                    wrkMast.setWrkSts(31L);//31.AGV鎼繍浠诲姟鍒涘缓鎴愬姛
+                    wrkMast.setModiTime(date);
+                    wrkMastService.updateById(wrkMast);
+                }
             }
         }
     }
@@ -91,32 +102,118 @@
      * AGV 浠诲姟涓嬪彂鎺ュ彛锛屽畾鏃剁粰AGV涓嬪彂浠诲姟
      */
     @Scheduled(cron = "0/3 * * * * ? ")
-    private void execute(){
-        if (!switchErpReportOld){
+    private void execute() {
+        if (!switchErpReportOld) {
             return;
         }
         //鏌ヨ鎵�鏈塧gv寰呬笅鍙戜换鍔�
-        List<Task> wrkSts = taskService.selectList(new EntityWrapper<Task>().eq("wrk_sts", 301));
-        if (wrkSts!=null&& !wrkSts.isEmpty()){
-            for (Task task:wrkSts){
+        List<Task> wrkSts = taskService.selectList(new EntityWrapper<Task>().eq("wrk_sts", 301).orderBy("appe_time"));
+        if (wrkSts != null && !wrkSts.isEmpty()) {
+            for (Task task : wrkSts) {
                 //鏌ヨ鏄惁鏈夋鍦ㄤ綔涓氱殑婧愮珯鍜岀洰鏍囩珯鏈変竴鏍风殑agv鎼繍浠诲姟
                 //濡傛灉鏈夊垯璺宠繃鏈agv鎼繍浠诲姟涓嬪彂
                 Task task1 = taskService.selectOne(new EntityWrapper<Task>()
                         .eq("wrk_sts", 302)
                         .andNew()
                         .in("source_sta_no", task.getSourceStaNo(), task.getStaNo())
+                        .or()
                         .in("sta_no", task.getStaNo(), task.getSourceStaNo()));
+                Boolean flag = true;
                 if (Cools.isEmpty(task1)) {
-                    //AGV浠诲姟涓嬪彂
-                    ReturnT<String> start = AGVTaskReportHandler.start(task);
-                    if (!start.isSuccess()){
-                        task.setUpdMk("X");
-                        task.setErrorMemo(start.getMsg());
-                        task.setModiTime(new Date());
-                        if (!taskService.updateById(task)) {
-                            log.error("宸ヤ綔妗workNo={}]鏍囪寰呭鐞嗗け璐�", task.getWrkNo());
+                    //agv鎼繍绉诲姩浠诲姟涓嬪彂鏃讹紝鎼繍鐩爣鐐规槸鍚︽槸绔嬪簱AGV鍜屽爢鍨涙満鎺ラ┏绔欑偣
+                    //濡傛灉鏄帴椹崇珯鐐瑰垯闇�瑕佸垽鏂帴椹崇珯鐐规槸鍚︽湁绌烘枡鏋�
+                    //濡傛灉鏈夌┖鏂欐灦闇�瑕佸垽鏂槸鍚︽湁鍑哄簱浠诲姟
+                    //鏈夊嚭搴撲换鍔″垯绂佹涓嬪彂鏈鎼繍浠诲姟
+                    if (task.getStaNo().equals("401") || task.getStaNo().equals("402") || task.getStaNo().equals("307")) {
+                        flag = false;
+                        BasDevp basDevp = basDevpService.checkSiteStatus(Integer.parseInt(task.getStaNo()));
+                        if (basDevp != null && !Cools.isEmpty(basDevp.getInreq1())
+                                && basDevp.getInreq1().equals("Y")
+                                && basDevp.getLoading().equals("N")
+                                && basDevp.getWrkNo()!=9991
+                                && basDevp.getWrkNo()!=9999) {
+                            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
+                                    .in("io_type", 101, 110)
+                                    .le("wrk_sts", 14)
+                                    .eq("sta_no", task.getStaNo()));
+                            List<WrkMast> wrkMasts1 = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("io_type", 1).eq("sta_no", task.getStaNo()));
+                            if (Cools.isEmpty(wrkMasts)&&Cools.isEmpty(wrkMasts1)) {
+                                //鍒ゆ柇鏄惁宸茬粡鐢熸垚绌烘枡鏋舵惉杩愬洖绌烘枡鏋惰ˉ搴撳尯
+                                //濡傛灉鏈夌殑璇濓紝涓嶅湪鐢熸垚浠诲姟
+                                Task task2 = taskService.selectOne(new EntityWrapper<Task>().eq("task_type","AGV绌烘枡鏋跺洖缂撳瓨鍖�").eq("source_sta_no", task.getStaNo()));
+                                //鏈夊叆搴撲换鍔℃惉杩愶紝闇�瑕佺敓鎴愮┖鏂欐灦鎼繍鍒扮┖鏂欐灦缂撳啿鍖篈GV浠诲姟
+                                if (Cools.isEmpty(task2)) {
+
+                                    //鐢熸垚AGV鎼繍鍑哄簱浠诲姟
+                                    // 淇濆瓨宸ヤ綔妗�
+                                    String SourceStaNo = "";
+                                    if (task.getStaNo().equals("401")) {
+                                        //澶ф枡鏋剁紦鍐插尯
+                                        SourceStaNo = "Q-E3";
+                                    }else if (task.getStaNo().equals("402")) {
+                                        SourceStaNo = "Q-E2";
+                                    }else if (task.getStaNo().equals("307")) {
+                                        SourceStaNo = "Q-E1";
+                                    }
+                                    Task task3 = new Task();
+                                    Date date = new Date();
+                                    String TaskNo = task.getTaskNo() + "bb" + date.getTime();
+                                    task3.setWrkNo(999999)
+                                            .setTaskNo(TaskNo)
+                                            .setIoTime(date)
+                                            .setWrkSts(301L) // 宸ヤ綔鐘舵�侊細301.浠诲姟涓嬪彂
+                                            .setIoType(4) // 鍏ュ嚭搴撶姸鎬侊細 3.绔欏埌绔�  4.绔欏埌鍖哄煙
+                                            .setTaskType("AGV绌烘枡鏋跺洖缂撳瓨鍖�")
+                                            .setIoPri(10D)
+                                            .setFullPlt("Y") // 婊℃澘锛歒
+                                            .setPicking("N") // 鎷f枡
+                                            .setExitMk("N")// 閫�鍑�
+                                            .setStaNo(SourceStaNo)
+                                            .setSourceStaNo(task.getStaNo())//绌烘枡鏋剁紦瀛樺尯E1
+                                            .setEmptyMk("N")// 绌烘澘
+                                            .setBarcode("")// 鎵樼洏鐮�
+                                            .setLinkMis("N")
+                                            .setAppeUser(9945L)
+                                            .setAppeTime(date)
+                                            .setModiUser(9945L)
+                                            .setModiTime(date);
+                                    if (!taskService.insert(task3)) {
+                                        throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+                                    }
+                                    break;
+                                }
+                            }
+                        }else if(basDevp != null && !Cools.isEmpty(basDevp.getInreq1())
+                                && basDevp.getInreq1().equals("N")
+                                && basDevp.getLoading().equals("N")
+                                ) {
+                            flag = true;
+                        }
+
+                    }
+                    if (flag || task.getTaskType().equals("AGV绌烘枡鏋跺洖缂撳瓨鍖�")) {
+                        //AGV浠诲姟涓嬪彂
+                        ReturnT<String> start = AGVTaskReportHandler.start(task);
+                        if (!start.isSuccess()) {
+                            task.setUpdMk("X");
+                            task.setErrorMemo(start.getMsg());
+                            task.setCtnType(task.getCtnType()+1);//涓嬪彂浠诲姟璁℃暟
+                            task.setModiTime(new Date());
+                            if (!taskService.updateById(task)) {
+                                log.error("宸ヤ綔妗workNo={}]鏍囪寰呭鐞嗗け璐�", task.getWrkNo());
+                            }
+                            break;
+                        }else {
+                            task.setCtnType(task.getCtnType()+1);
+                            task.setModiTime(new Date());
+                            task.setWrkSts(302L);//浠诲姟鎵ц涓�
+                            if (!taskService.updateById(task)) {
+                                log.error("宸ヤ綔妗workNo={}]鏍囪寰呭鐞嗗け璐�", task.getWrkNo());
+                            }
                         }
                     }
+
+
                 }
             }
         }

--
Gitblit v1.9.1