Procházet zdrojové kódy

现场测试修改:
1.中间隔离门加请求开关门
2.ts反馈执行任务增加线程池
3.其他修改

k před 2 roky
rodič
revize
42a4714f3b

+ 2 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java

@@ -60,7 +60,8 @@ public class GlobalExceptionHandler {
      */
     @ExceptionHandler(ServiceException.class)
     public AjaxResult handleServiceException(ServiceException e, HttpServletRequest request) {
-        log.error(e.getMessage(), e);
+        log.error(e.getMessage());
+//        log.error(e.getMessage(), e);
         Integer code = e.getCode();
         List<String> lockList = redisTemplate.opsForList().range(RedisKey.LOCK_LIST + e.getToken(), 0, -1);
         if (lockList != null && lockList.size() > 0) {

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

@@ -17,10 +17,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.SynchronousQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
+import java.util.concurrent.*;
 
 import static com.ruoyi.ams.agv.ndc.service.ChargerButtService.*;
 
@@ -51,9 +48,9 @@ public class SocketBufferServiceImpl implements SocketBufferService {
     @Override
     public List<Order> bufferSeparator(byte[] buffer) {
         // 创建一个线程池
-        executorService = new ThreadPoolExecutor(5, 20
+        executorService = new ThreadPoolExecutor(5, 30
                 , 60L, TimeUnit.SECONDS
-                , new SynchronousQueue<Runnable>());
+                , new SynchronousQueue<Runnable>(true));
 
         List<Order> orderList = new ArrayList<>();
         String bufferStr = ByteUtil.byteArray2HexString(buffer);
@@ -155,7 +152,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!!
@@ -180,7 +180,10 @@ public class SocketBufferServiceImpl implements SocketBufferService {
                         taskBeanUpdate01.setIsDelete(null);
                         amsTaskService.updateAmsTask(taskBeanUpdate01);
 
-                        statusUpdateService.updateStatus(taskBean.getId().longValue(), icarNo);
+                        long taskId = taskBean.getId().longValue();
+                        executorService.execute(() -> {
+                            statusUpdateService.updateStatus(taskId, icarNo);
+                        });
                     }
                     break;
                 case 112://user event  Carrier status
@@ -247,13 +250,19 @@ public class SocketBufferServiceImpl implements SocketBufferService {
                         // agvUnloadingConfirmService.confirmEmptyPlate(task130.getTaskNo());
                     }
                     break;
-                case 126: //600 中间卷帘门请求开启 定时请求 todo 默认先1
-                    log.info("快速门-请求开启!");
-                    statusUpdateService.openDoor(1);
+                case 126: //600 中间卷帘门请求开启 定时请求
+                    log.info("快速门-请求开启!" + "-" + JSON.toJSONString(event));
+                    String lp3_126 = event.getLp3();
+                    executorService.execute(() -> {
+                        statusUpdateService.openDoor(Integer.valueOf(lp3_126));
+                    });
                     break;
                 case 127: //601 中间卷帘门请求关闭 只请求一次
-                    log.info("快速门-请求关闭!");
-                    statusUpdateService.closeDoor(1);
+                    log.info("快速门-请求关闭!" + "-" + JSON.toJSONString(event));
+                    String lp3_127 = event.getLp3();
+                    executorService.execute(() -> {
+                        statusUpdateService.closeDoor(Integer.valueOf(lp3_127));
+                    });
                     break;
                 case 134:
                     break;

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

@@ -41,7 +41,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) {
@@ -107,15 +107,28 @@ public class StatusUpdateServiceImpl implements StatusUpdateService {
 
     @Override
     public void openDoor(Integer doorNo) {
-        Boolean isOpen = autoDoorClient.sendOpen(AutoDoorClient.AUTO_DOOR_NO.D);
+        AutoDoorClient.AUTO_DOOR_NO doorNum = null;
+        if (doorNo == 1) {
+            doorNum = AutoDoorClient.AUTO_DOOR_NO.D;
+        } else if (doorNo == 2) {
+            doorNum = AutoDoorClient.AUTO_DOOR_NO.B;
+        }
+        Boolean isOpen = autoDoorClient.sendOpen(doorNum);
         if (isOpen) {
+            log.info("关门信号发送成功!门号:" + doorNo);
             feedbackTS(doorNo);
         }
     }
 
     @Override
     public void closeDoor(Integer doorNo) {
-        Boolean isClose = autoDoorClient.sendClose(AutoDoorClient.AUTO_DOOR_NO.D);
+        AutoDoorClient.AUTO_DOOR_NO doorNum = null;
+        if (doorNo == 1) {
+            doorNum = AutoDoorClient.AUTO_DOOR_NO.D;
+        } else if (doorNo == 2) {
+            doorNum = AutoDoorClient.AUTO_DOOR_NO.B;
+        }
+        Boolean isClose = autoDoorClient.sendClose(doorNum);
         if (isClose) {
             log.info("关门信号发送成功!门号:" + doorNo);
             // 不需要反馈

+ 8 - 7
warewms-ams/src/main/java/com/ruoyi/ams/business/BusinessServiceImpl.java

@@ -46,6 +46,7 @@ import java.util.stream.Collectors;
 @Slf4j
 @Service
 public class BusinessServiceImpl implements IBusinessService {
+
     @Autowired
     private IBusinessService businessService;
     @Autowired
@@ -320,7 +321,7 @@ public class BusinessServiceImpl implements IBusinessService {
                     break;
                 }
                 if (locationInfo == null) {
-                    throw new ServiceException("目标点没有可以分配的库位", token);
+                    throw new ServiceException("入库目标点没有可以分配的库位", token);
                 }
             }
         } else if (type.equals("SO")) {
@@ -342,7 +343,7 @@ public class BusinessServiceImpl implements IBusinessService {
                     break;
                 }
                 if (locationInfo == null) {
-                    throw new ServiceException("起始点没有可以分配的库存!", token);
+                    throw new ServiceException("出库起始点没有可以分配的库存!", token);
                 }
 
             } else { //目标库位
@@ -357,7 +358,7 @@ public class BusinessServiceImpl implements IBusinessService {
                     break;
                 }
                 if (locationInfo == null) {
-                    throw new ServiceException("目标点没有可以分配的库位", token);
+                    throw new ServiceException("出库目标点没有可以分配的库位", token);
                 }
             }
         } else { //移库
@@ -376,7 +377,7 @@ public class BusinessServiceImpl implements IBusinessService {
 
                 //进行判断
                 if (locationInfo == null) {
-                    throw new ServiceException("起始点没有可以分配的库位", token);
+                    throw new ServiceException("移库起始点没有可以分配的库位", token);
                 }
 
             } else {
@@ -393,7 +394,7 @@ public class BusinessServiceImpl implements IBusinessService {
 
                 //进行判断
                 if (locationInfo == null) {
-                    throw new ServiceException("目标点没有可以分配的库位", token);
+                    throw new ServiceException("移库目标点没有可以分配的库位", token);
                 }
             }
         }
@@ -457,12 +458,12 @@ public class BusinessServiceImpl implements IBusinessService {
             // 三向车叉尺方向(货叉朝左1,朝右2,中位或其他0)
             // 如果起始点是仓储区,左1,右2,我们系统A是靠马路也就是叉尺的右边
             if (locationFrom.getZoneId() != null
-                    && locationFrom.getZoneId() == Constant.ZONE_TYPE.STORAGE.getValue()) {
+                    && Objects.equals(locationFrom.getZoneId(), Constant.ZONE_TYPE.STORAGE.getValue())) {
                 wcsTask.setExt4(locationFrom.getRowNo().equals("A") ? "2" : "1");
             }
             // 如果起始点是接驳位,默认给1
             if (locationFrom.getZoneId() != null
-                    && locationFrom.getZoneId() == Constant.ZONE_TYPE.TRANSIT.getValue()) {
+                    && Objects.equals(locationFrom.getZoneId(), Constant.ZONE_TYPE.TRANSIT.getValue())) {
                 wcsTask.setExt4("1");
             }
             wcsTask.setExtParam(agvCallDTO.getExtParam());

+ 12 - 0
warewms-ams/src/main/java/com/ruoyi/ams/inv/service/impl/InvLotLocIdServiceImpl.java

@@ -33,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 库位库存信息Service业务层处理
@@ -228,6 +229,17 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
         wcsTask.setBusinessType("01");
         wcsTask.setTaskType(Constant.TASK_TYPE.FORWARD.getValue());
         wcsTask.setExt8("");
+        // 三向车叉尺方向(货叉朝左1,朝右2,中位或其他0)
+        // 如果起始点是仓储区,左1,右2,我们系统A是靠马路也就是叉尺的右边
+        if (baseLocationFrom.getZoneId() != null
+                && Objects.equals(baseLocationFrom.getZoneId(), Constant.ZONE_TYPE.STORAGE.getValue())) {
+            wcsTask.setExt4(baseLocationFrom.getRowNo().equals("A") ? "2" : "1");
+        }
+        // 如果起始点是接驳位,默认给1
+        if (baseLocationFrom.getZoneId() != null
+                && Objects.equals(baseLocationFrom.getZoneId(), Constant.ZONE_TYPE.TRANSIT.getValue())) {
+            wcsTask.setExt4("1");
+        }
         iBusinessService.addTask(wcsTask);
 
         // 锁定起始和目标库位任务状态