Browse Source

1.模具西边的点卸货-打开警报灯
2.RFID开门关闭警报灯

k 2 years ago
parent
commit
c1823738be

+ 5 - 0
warewms-ams/src/main/java/com/ruoyi/ams/agv/ndc/thread/AutoRfidReaderTask.java

@@ -1,6 +1,7 @@
 package com.ruoyi.ams.agv.ndc.thread;
 
 import com.ruoyi.hard.modbus.tcp.AutoDoorClient;
+import com.ruoyi.hard.modbus.tcp.WarningLightClient;
 import com.ruoyi.hard.rfid.RFIDReaderClient;
 import com.ruoyi.system.service.ISysConfigService;
 import lombok.extern.slf4j.Slf4j;
@@ -17,6 +18,8 @@ public class AutoRfidReaderTask {
     private RFIDReaderClient rfidReaderClient;
     @Autowired(required = false)
     private AutoDoorClient autoDoorClient;
+    @Autowired(required = false)
+    private WarningLightClient warningLightClient;
     @Autowired
     private ISysConfigService iSysConfigService;
 
@@ -102,6 +105,8 @@ public class AutoRfidReaderTask {
                 closeOutDoorNum = 0;
             } else {
                 closeInDoorNum = 0;
+                // 关闭警报灯
+                warningLightClient.closeWarningLight();
             }
         } else {
             // 如果没有读到标签 关闭自动门

+ 21 - 6
warewms-ams/src/main/java/com/ruoyi/ams/task/service/impl/WcsTaskServiceImpl.java

@@ -24,6 +24,7 @@ import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.hard.modbus.tcp.AutoDoorClient;
+import com.ruoyi.hard.modbus.tcp.WarningLightClient;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -62,8 +63,10 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
     private IInvLotAttService iInvLotAttService;
     @Autowired
     private IAmsTaskService iAmsTaskService;
-    @Autowired
+    @Autowired(required = false)
     private AutoDoorClient autoDoorClient;
+    @Autowired(required = false)
+    private WarningLightClient warningLightClient;
 
     //任务状态翻译
     private String codeConvert(int code) {
@@ -354,6 +357,11 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                             if (!StringUtils.isEmpty(wcsTask.getExt8())) {
                                 redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()));
                             }
+                            // 打开警报灯 10048是模具接驳位西边的点
+                            if (wcsTask.getLocationTo().equals("10048")
+                                    && warningLightClient != null) {
+                                warningLightClient.openWarningLight();
+                            }
                         }
                         break;
                     case 3:
@@ -363,11 +371,6 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                             log.info("不能重复取货," + taskNo);
                             return;
                         }
-                        // 如果是接驳位(模具-东)的点位取货完成 反馈关闭靠墙第二层自动门
-                        if (wcsTask.getLocationFrom().equals(Constant.LOC_MJ_EAST.toString())) {
-                            Thread.sleep(3000);
-                            autoDoorClient.sendClose(AutoDoorClient.AUTO_DOOR_NO.C);
-                        }
                         // 解锁起始库位
                         baseLocationInfoService.unLockLocationStockStatus(Long.parseLong(wcsTask.getLocationFrom())
                                 , Constant.WAREHOUSE_ID, updateBy);
@@ -378,6 +381,12 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                         if (!StringUtils.isEmpty(wcsTask.getExt8())) {
                             redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()), wcsTask.getLocationFrom());
                         }
+                        // 如果是接驳位(模具-东)的点位取货完成 反馈关闭靠墙第二层自动门
+                        if (wcsTask.getLocationFrom().equals(Constant.LOC_MJ_EAST.toString())
+                                && autoDoorClient != null) {
+                            Thread.sleep(3000);
+                            autoDoorClient.sendClose(AutoDoorClient.AUTO_DOOR_NO.C);
+                        }
                         break;
                     case 5:
                         break;
@@ -399,6 +408,12 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                             if (!StringUtils.isEmpty(wcsTask.getExt8())) {
                                 redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()));
                             }
+                            // 打开警报灯 10048是模具接驳位西边的点
+                            if (wcsTask.getLocationTo().equals("10048")
+                                    && warningLightClient != null) {
+                                warningLightClient.openWarningLight();
+                            }
+
                         }
                         break;
                     case 7://取消

+ 18 - 4
warewms-hard/src/main/java/com/ruoyi/hard/modbus/tcp/WarningLightClient.java

@@ -2,6 +2,7 @@ package com.ruoyi.hard.modbus.tcp;
 
 import com.jwk.spring.boot.autoconfigure.ModbusTcpMasterTemplate;
 import com.jwk.spring.boot.modbus4j.ModbusMasterUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
@@ -14,6 +15,7 @@ import org.springframework.stereotype.Service;
  * @version 1.0
  * @date 2022/04/16 21:04
  */
+@Slf4j
 @Service
 public class WarningLightClient {
 
@@ -32,8 +34,14 @@ public class WarningLightClient {
      */
     public Boolean openWarningLight() {
         ModbusMasterUtil modbusMasterUtil = modbusTcpMasterTemplateEighth.getModbusMasterUtil();
-        Boolean do1 = modbusMasterUtil.writeCoil(0x20, 0x0000, 0xFF00);//打开DO1中间端
-        Boolean do3 = modbusMasterUtil.writeCoil(0x20, 0x0002, 0xFF00);//打开DO3中间端
+        Boolean do1 = false;//打开DO1中间端
+        Boolean do3 = false;//打开DO3中间端
+        try {
+            do1 = modbusMasterUtil.writeCoil(0x20, 0x0000, 0xFF00);
+            do3 = modbusMasterUtil.writeCoil(0x20, 0x0002, 0xFF00);
+        } catch (Exception e) {
+            log.error("开警报灯失败!", e);
+        }
         return do1 && do3;
     }
 
@@ -44,8 +52,14 @@ public class WarningLightClient {
      */
     public Boolean closeWarningLight() {
         ModbusMasterUtil modbusMasterUtil = modbusTcpMasterTemplateEighth.getModbusMasterUtil();
-        Boolean do1 = modbusMasterUtil.writeCoil(0x20, 0x0000, 0x0000);//关闭DO1中间端
-        Boolean do3 = modbusMasterUtil.writeCoil(0x20, 0x0002, 0x0000);//关闭DO3中间端
+        Boolean do1 = false;//关闭DO1中间端
+        Boolean do3 = false;//关闭DO3中间端
+        try {
+            do1 = modbusMasterUtil.writeCoil(0x20, 0x0000, 0x0000);//关闭DO1中间端
+            do3 = modbusMasterUtil.writeCoil(0x20, 0x0002, 0x0000);//关闭DO3中间端
+        } catch (Exception e) {
+            log.error("关警报灯失败!", e);
+        }
         return do1 && do3;
     }