hecheng лет назад: 3
Родитель
Сommit
0ccf707811

+ 2 - 2
zd-modules/zd-airbottle/src/main/java/com/zd/airbottle/controller/AlarmRecordController.java

@@ -29,6 +29,7 @@ import java.util.stream.Collectors;
 
 /**
  * 报警记录Controller
+ * @author Administrator
  */
 @RestController
 @Api(tags = "【报警记录】")
@@ -97,7 +98,6 @@ public class AlarmRecordController extends BaseController<AlarmRecord> {
     @Log(title = "识别器新增报警记录", businessType = BusinessType.INSERT)
     @PostMapping("remote/add")
     public R<Boolean> remoteAdd(@RequestBody InventoryTag tag) {
-        alarmRecordService.remoteAdd(tag);
-        return R.ok();
+        return R.ok(alarmRecordService.remoteAdd(tag));
     }
 }

+ 1 - 1
zd-modules/zd-airbottle/src/main/java/com/zd/airbottle/service/IAlarmRecordService.java

@@ -50,7 +50,7 @@ public interface IAlarmRecordService {
      *
      * @param tag 标签值
      */
-    void remoteAdd(InventoryTag tag);
+    boolean remoteAdd(InventoryTag tag);
 
     /**
      * 报警记录查询

+ 2 - 2
zd-modules/zd-airbottle/src/main/java/com/zd/airbottle/service/impl/AlarmRecordServiceImpl.java

@@ -244,8 +244,8 @@ public class AlarmRecordServiceImpl implements IAlarmRecordService {
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void remoteAdd(InventoryTag tag) {
-        insertAlarmRecord(new AlarmRecord().setElectronicTag(tag.getEpc()),tag.getRemoteLabHardware());
+    public boolean remoteAdd(InventoryTag tag) {
+        return insertAlarmRecord(new AlarmRecord().setElectronicTag(tag.getEpc()),tag.getRemoteLabHardware())==1;
     }
 
     @Override

+ 3 - 0
zd-modules/zd-bottle-parent/zd-bottle-api/src/main/resources/META-INF/spring.factories

@@ -0,0 +1,3 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+  com.zd.bottle.feign.RemoteBottleFallbackFactory
+

+ 1 - 2
zd-modules/zd-netty/src/main/java/com/zd/netty/base/FridConsumer.java

@@ -2,7 +2,6 @@ package com.zd.netty.base;
 
 import com.payne.reader.base.Consumer;
 import com.payne.reader.bean.receive.InventoryTag;
-import com.zd.common.core.exception.ServiceException;
 import com.zd.netty.service.ISendService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
@@ -23,7 +22,7 @@ public class FridConsumer implements Consumer<InventoryTag> {
             tag.setEpc(tag.getEpc().replace(" ", ""));
             com.zd.system.api.domain.InventoryTag  inventoryTag = new com.zd.system.api.domain.InventoryTag ();
             BeanUtils.copyProperties(tag,inventoryTag);
-            sendService.send(inventoryTag);
+            sendService.send(inventoryTag, null);
         } catch (BeansException e) {
             log.error(e.getMessage());
         }

+ 2 - 2
zd-modules/zd-netty/src/main/java/com/zd/netty/sdk/DeJuRFIDClientImpl.java

@@ -46,10 +46,10 @@ public class DeJuRFIDClientImpl implements IService {
             serverMap.put(ipAddress, server);
         }
         if (server.open(DeJuRFIDServerImpl.PORT)) {
-            log.info("开始监听");
+            log.info("开始监听"+ipAddress);
             subscribeServerHandler(server, hardware);
         } else {
-            log.info("监听失败");
+            log.info("监听失败"+ipAddress);
             throw new ServiceException("监听失败,请稍后进行设备重连。。。");
         }
     }

+ 12 - 6
zd-modules/zd-netty/src/main/java/com/zd/netty/sdk/DeJuRFIDServerImpl.java

@@ -200,16 +200,22 @@ public class DeJuRFIDServerImpl implements IService {
         String ipAddress = hardware.getIpAddress();
         if (CLIENT_MAP.containsKey(ipAddress)) {
             GClient client = CLIENT_MAP.get(ipAddress);
-            log.info("报警状态:==============》{}", isAlarm.get());
+            log.info("报警状态:==============》{},设备IP:{}", isAlarm.get(),ipAddress);
             if (!isAlarm.get()) {
-                scheduledExecutorService.execute(() -> {
-                    isAlarm.set(true);
-                    changeGpo(1, client, 10);
-                });
+                isAlarm.set(true);
+                changeGpo(1, client, 10);
             }
         }
     }
 
+    public static void alarm(GClient client){
+        log.info("报警状态:==============》{},设备:{} 触发报警", isAlarm.get(),client.getName());
+        if (!isAlarm.get()) {
+            isAlarm.set(true);
+            changeGpo(1, client, 10);
+        }
+    }
+
     public static void close(RemoteLabHardware hardware) {
         String ipAddress = hardware.getIpAddress();
         if (CLIENT_MAP.containsKey(ipAddress)) {
@@ -276,7 +282,7 @@ public class DeJuRFIDServerImpl implements IService {
                 InventoryTag tag = new InventoryTag();
                 BeanUtils.copyProperties(logBaseEpcInfo, tag);
                 tag.setRemoteLabHardware(hardware);
-                sendService.send(tag);
+                sendService.send(tag,client);
             }
         };
         client.onTagEpcOver = (s, logBaseEpcOver) -> log.info("HandlerTagEpcOver");

+ 5 - 3
zd-modules/zd-netty/src/main/java/com/zd/netty/service/ISendService.java

@@ -1,15 +1,17 @@
 package com.zd.netty.service;
 
+import com.gg.reader.api.dal.GClient;
 import com.zd.system.api.domain.InventoryTag;
-import com.zd.system.api.laboratory.domain.RemoteLabHardware;
 
 public interface ISendService {
 
     /**
      * 发送读取到的编码
-     * @param tag frid数据
+     *
+     * @param tag    frid数据
+     * @param client
      */
-    void send(InventoryTag tag);
+    void send(InventoryTag tag, GClient client);
 
     /**
      * 发送异常信息

+ 20 - 7
zd-modules/zd-netty/src/main/java/com/zd/netty/service/impl/SendServiceImpl.java

@@ -1,6 +1,10 @@
 package com.zd.netty.service.impl;
 
+import com.gg.reader.api.dal.GClient;
 import com.zd.bottle.feign.service.RemoteBottleService;
+import com.zd.common.core.constant.HttpStatus;
+import com.zd.common.core.domain.R;
+import com.zd.netty.sdk.DeJuRFIDServerImpl;
 import com.zd.netty.service.ISendService;
 import com.zd.system.api.airbottle.RemoteAirBottleService;
 import com.zd.system.api.chemical.RemoteStockService;
@@ -31,14 +35,14 @@ public class SendServiceImpl implements ISendService {
 
 
     @Override
-    public void send(InventoryTag tag) {
+    public void send(InventoryTag tag, GClient client) {
 
         RemoteLabHardware hardware = tag.getRemoteLabHardware();
         if (hardware != null) {
             int antId = tag.getAntId();
             String uniformPower = hardware.getUniformPower();
             String[] uniformPowers = uniformPower.split(",");
-            handleTag(tag, antId, uniformPowers);
+            handleTag(tag, antId, uniformPowers,client);
         } else {
             try {
                 bottleService.remoteAdd(tag);
@@ -58,7 +62,7 @@ public class SendServiceImpl implements ISendService {
         }
     }
 
-    private void handleTag(InventoryTag tag, int antId, String[] uniformPowers) {
+    private void handleTag(InventoryTag tag, int antId, String[] uniformPowers, GClient client) {
         // 判断有设备配置和触发的天线编码等与配置天线编号
         if (uniformPowers.length > 0) {
             String tempUniformPower = uniformPowers[antId - 1];
@@ -66,21 +70,24 @@ public class SendServiceImpl implements ISendService {
                 String[] tempUniformPowers = tempUniformPower.split(":");
                 if (tempUniformPowers.length > 1) {
                     String temp = tempUniformPowers[1];
-                    sendTag(tag, temp);
+                    sendTag(tag, temp,client);
                 }
             }
         }
     }
 
-    private void sendTag(InventoryTag tag, String temp) {
+    private void sendTag(InventoryTag tag, String temp, GClient client) {
+        R<Boolean> result;
         if (ALL_TYPE.equals(temp) || BOTTLE_TYPE.equals(temp)) {
             try {
-                bottleService.remoteAdd(tag);
+                result = bottleService.remoteAdd(tag);
+                alarm(client,result);
             } catch (Exception e) {
                 log.info("气瓶服务异常:" + e.getMessage());
             }
             try {
-                remoteBottleService.remoteAdd(tag);
+                result = remoteBottleService.remoteAdd(tag);
+                alarm(client,result);
             } catch (Exception e) {
                 log.info("新气瓶服务异常:" + e.getMessage());
             }
@@ -94,6 +101,12 @@ public class SendServiceImpl implements ISendService {
         }
     }
 
+    private void alarm(GClient client,R<Boolean> result){
+        if (client!=null && result.getCode()== HttpStatus.SUCCESS && Boolean.TRUE.equals(result.getData())){
+            DeJuRFIDServerImpl.alarm(client);
+        }
+    }
+
     @Override
     public void sendError(String msg) {
         log.info(msg);