소스 검색

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

k 2 년 전
부모
커밋
915bdc7a53

+ 15 - 0
warewms-ams/src/main/java/com/ruoyi/ams/agv/ndc/service/StatusUpdateService.java

@@ -16,6 +16,21 @@ public interface StatusUpdateService {
     void updateStatus(Long id, Integer carNo);
 
 
+    /**
+     * 取卸货确认分析
+     *
+     * @param taskNo   任务编号
+     * @param aciIndex index
+     * @param type     取卸货
+     */
+    void confirmAnalysis(String taskNo, Integer aciIndex, String type, Integer carNo);
+
+
+    /**
+     * 回告ts门已经打开
+     *
+     * @param doorNo
+     */
     void feedbackTS(Integer doorNo);
 
 }

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

@@ -23,6 +23,7 @@ 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.
@@ -46,15 +47,17 @@ public class SocketBufferServiceImpl implements SocketBufferService {
     private RedisCache redisCache;
 
     // 创建一个线程池
-    private ExecutorService executorService;
+    private static ExecutorService executorService;
 
-    @Override
-    public List<Order> bufferSeparator(byte[] buffer) {
+    static {
         // 创建一个线程池
-        executorService = new ThreadPoolExecutor(5, 20
+        executorService = new ThreadPoolExecutor(5, 30
                 , 60L, TimeUnit.SECONDS
-                , new SynchronousQueue<Runnable>());
+                , new SynchronousQueue<Runnable>(true));
+    }
 
+    @Override
+    public List<Order> bufferSeparator(byte[] buffer) {
         List<Order> orderList = new ArrayList<>();
         String bufferStr = ByteUtil.byteArray2HexString(buffer);
         //通过固定的头部 87CD0008 将多条消息拆分开
@@ -155,7 +158,10 @@ public class SocketBufferServiceImpl implements SocketBufferService {
                     taskBeanUpdate.setIsDelete(null);
                     amsTaskService.updateAmsTask(taskBeanUpdate);
                     //任务状态回调
-                    statusUpdateService.updateStatus(taskBean.getId().longValue(), icarNo);
+                    long taskId_85 = taskBean.getId().longValue();
+                    executorService.execute(() -> {
+                        statusUpdateService.updateStatus(taskId_85, icarNo);
+                    });
                     break;
                 case 86://user event Order Receive              任务开始
                 case 87://user event FETCH(LP1) is Invalid!!
@@ -171,16 +177,20 @@ public class SocketBufferServiceImpl implements SocketBufferService {
 
                     taskBean.setAciIndex(Integer.parseInt(event.getLp1()));
                     taskBean = amsTaskService.selectAmsTaskByModel(taskBean);
-
-                    AmsTask taskBeanUpdate01 = new AmsTask();
-                    taskBeanUpdate01.setId(taskBean.getId());
-                    taskBeanUpdate01.setEvent(eventId);
-                    taskBeanUpdate01.setServerAck(0);
-                    taskBeanUpdate01.setSystemStatus(null);
-                    taskBeanUpdate01.setIsDelete(null);
-                    amsTaskService.updateAmsTask(taskBeanUpdate01);
-
-                    statusUpdateService.updateStatus(taskBean.getId().longValue(), icarNo);
+                    if (taskBean != null) {
+                        AmsTask taskBeanUpdate01 = new AmsTask();
+                        taskBeanUpdate01.setId(taskBean.getId());
+                        taskBeanUpdate01.setEvent(eventId);
+                        taskBeanUpdate01.setServerAck(0);
+                        taskBeanUpdate01.setSystemStatus(null);
+                        taskBeanUpdate01.setIsDelete(null);
+                        amsTaskService.updateAmsTask(taskBeanUpdate01);
+
+                        long taskId = taskBean.getId().longValue();
+                        executorService.execute(() -> {
+                            statusUpdateService.updateStatus(taskId, icarNo);
+                        });
+                    }
                     break;
                 case 112://user event  Carrier status
                     //carStatus.setSpeed(ByteUtil.getInt(buffer, 34));
@@ -201,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:
@@ -216,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 - 1
warewms-ams/src/main/java/com/ruoyi/ams/agv/ndc/service/impl/StatusUpdateServiceImpl.java

@@ -27,6 +27,27 @@ public class StatusUpdateServiceImpl implements StatusUpdateService {
     @Autowired
     private IBusinessService businessService;
 
+    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) {
         AmsTask amsTask = amsTaskService.selectAmsTaskById(id);
@@ -39,7 +60,7 @@ public class StatusUpdateServiceImpl implements StatusUpdateService {
             result.setCarNo(carNo);
             result.setTaskNo(amsTask.getTaskNo());
             //判断状态
-            if(false){
+            if (false) {
 //            if (null != amsTask.getSystemStatus() && amsTask.getSystemStatus() == 3) {
 //                result.setState(2);
 //            } else if (null != amsTask.getSystemStatus() && amsTask.getSystemStatus() == 4) {
@@ -77,6 +98,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();

+ 1 - 1
warewms-ams/src/main/java/com/ruoyi/ams/xuankuang/service/BaseLocationInfoSubService.java

@@ -1,4 +1,4 @@
-package com.ruoyi.ams.xuankuang.service;
+package com.ruoyi.ams.nieyan.service;
 
 import com.alibaba.fastjson.JSON;
 import com.ruoyi.ams.config.domain.dto.LotattDTO;