Browse Source

1.修改线程池位置
2.增加取卸货确认

k 2 years ago
parent
commit
409e277200

+ 11 - 1
warewms-ams/src/main/java/com/ruoyi/ams/agv/ndc/service/StatusUpdateService.java

@@ -17,7 +17,17 @@ public interface StatusUpdateService {
 
 
     /**
-     * 回告TS门已经关闭
+     * 取卸货确认分析
+     *
+     * @param taskNo   任务编号
+     * @param aciIndex index
+     * @param type     取卸货
+     */
+    void confirmAnalysis(String taskNo, Integer aciIndex, String type, Integer carNo);
+
+
+    /**
+     * 回告ts门已经打开
      *
      * @param doorNo
      */

+ 12 - 4
warewms-ams/src/main/java/com/ruoyi/ams/agv/ndc/service/impl/SocketBufferServiceImpl.java

@@ -17,9 +17,13 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.concurrent.*;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.SynchronousQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
 
 import static com.ruoyi.ams.agv.ndc.service.ChargerButtService.*;
+import static com.ruoyi.ams.agv.ndc.service.impl.StatusUpdateServiceImpl.AGV_ACTION.*;
 
 /**
  * Created by IntelliJ IDEA.
@@ -207,7 +211,9 @@ public class SocketBufferServiceImpl implements SocketBufferService {
                         log.info("aciIndex:" + aciIndex + "查询不到对应的60任务");
                     } else {
                         //解析卸货确认状态
-                        // agvUnloadingConfirmService.confirmAnalysis(task60.getTaskNo(), aciIndex, "unload", icarNo);
+                        executorService.execute(() -> {
+                            statusUpdateService.confirmAnalysis(task60.getTaskNo(), aciIndex, PICKUP.getValue(), icarNo);
+                        });
                     }
                     break;
                 case 115:
@@ -222,8 +228,10 @@ public class SocketBufferServiceImpl implements SocketBufferService {
                     if (task60Pick == null) {
                         log.info("aciIndex:" + aciIndexPick + "查询不到对应的60任务");
                     } else {
-                        //解析取货确认状态
-                        // agvUnloadingConfirmService.confirmAnalysis(task60Pick.getTaskNo(), aciIndexPick, "pickup", icarNo);
+                        //解析卸货确认状态
+                        executorService.execute(() -> {
+                            statusUpdateService.confirmAnalysis(task60Pick.getTaskNo(), aciIndexPick, UNLOAD.getValue(), icarNo);
+                        });
                     }
                     break;
                 case 122:

+ 60 - 2
warewms-ams/src/main/java/com/ruoyi/ams/agv/ndc/service/impl/StatusUpdateServiceImpl.java

@@ -6,6 +6,7 @@ import com.ruoyi.ams.agv.ndc.service.IAmsTaskService;
 import com.ruoyi.ams.agv.ndc.service.StatusUpdateService;
 import com.ruoyi.ams.business.BusinessServiceImpl;
 import com.ruoyi.ams.business.IBusinessService;
+import com.ruoyi.ams.task.form.AddTaskForm;
 import com.ruoyi.ams.task.service.IWcsTaskService;
 import com.ruoyi.base.constant.Constant;
 import com.ruoyi.common.utils.uuid.SnowflakeIdWorker;
@@ -26,8 +27,27 @@ public class StatusUpdateServiceImpl implements StatusUpdateService {
     private IWcsTaskService wcsTaskService;
     @Autowired
     private IBusinessService businessService;
-    @Autowired
-    private AutoDoorClient autoDoorClient;
+
+    public enum AGV_ACTION {
+        /***
+         * 取货
+         */
+        PICKUP("pickup"),
+        /***
+         * 卸货
+         */
+        UNLOAD("unload");
+        private String value;
+
+        AGV_ACTION(String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+    }
+
 
     @Override
     public void updateStatus(Long id, Integer carNo) {
@@ -79,6 +99,44 @@ public class StatusUpdateServiceImpl implements StatusUpdateService {
         }
     }
 
+    @Override
+    public synchronized void confirmAnalysis(String taskNo, Integer aciIndex, String type, Integer carNo) {
+        AmsTask amsTask = new AmsTask();
+        amsTask.setTaskNo(taskNo);
+        amsTask = amsTaskService.selectAmsTaskByModel(amsTask);
+        if (amsTask != null) {
+            AmsTask addTaskForm = new AmsTask();
+            addTaskForm.setTaskNo(System.currentTimeMillis() + "");
+            addTaskForm.setBusinessType(Constant.TASK_BUSINESS_TYPE.TASK_m.getValue());
+            addTaskForm.setExt1(amsTask.getAciIndex().toString());
+            addTaskForm.setStFrom(998);
+            addTaskForm.setStTo(999);
+            addTaskForm.setPriority(1);
+            addTaskForm.setRemark(taskNo);
+            // 取货确认
+            if (type.equals(AGV_ACTION.PICKUP.getValue())) {
+                addTaskForm.setExt2("08");
+                addTaskForm.setExt3("0001");
+                // 卸货确认
+            } else if (type.equals(AGV_ACTION.UNLOAD.getValue())) {
+                addTaskForm.setExt2("09");
+                addTaskForm.setExt3("0001");
+            }
+            //如果ams_task已经有此任务的待接收m消息,则不生成新的m消息
+            AmsTask amsTaskQuery = new AmsTask();
+            amsTaskQuery.setAciAccept(0);
+            amsTaskQuery.setIsDelete(0);
+            amsTaskQuery.setRemark(taskNo);
+            amsTaskQuery.setBusinessType(Constant.TASK_BUSINESS_TYPE.TASK_m.getValue());
+            amsTaskQuery.setExt2(addTaskForm.getExt2());
+            List<AmsTask> undoneList = amsTaskService.selectAmsTaskList(amsTaskQuery);
+            if (undoneList.size() > 0) {
+                return;
+            }
+            amsTaskService.insertAmsTask(addTaskForm);
+        }
+    }
+
     @Override
     public void feedbackTS(Integer doorNo) {
         AmsTask addTaskForm = new AmsTask();