瀏覽代碼

RFID设备警报选择控制

ty130316261 3 年之前
父節點
當前提交
9b70fc269c
共有 21 個文件被更改,包括 115 次插入45 次删除
  1. 2 1
      zd-api/zd-api-system/src/main/java/com/zd/system/api/airbottle/RemoteAirBottleService.java
  2. 1 1
      zd-api/zd-api-system/src/main/java/com/zd/system/api/airbottle/factory/RemoteAirBottleFallbackFactory.java
  3. 2 2
      zd-api/zd-api-system/src/main/java/com/zd/system/api/chemical/RemoteStockService.java
  4. 2 1
      zd-api/zd-api-system/src/main/java/com/zd/system/api/chemical/factory/RemoteStockFallbackFactory.java
  5. 7 0
      zd-api/zd-api-system/src/main/java/com/zd/system/api/netty/RemoteNettyService.java
  6. 5 0
      zd-api/zd-api-system/src/main/java/com/zd/system/api/netty/factory/RemoteNettyFallbackFactory.java
  7. 3 2
      zd-modules/zd-airbottle/src/main/java/com/zd/airbottle/controller/AlarmRecordController.java
  8. 5 2
      zd-modules/zd-airbottle/src/main/java/com/zd/airbottle/service/IAlarmRecordService.java
  9. 8 4
      zd-modules/zd-airbottle/src/main/java/com/zd/airbottle/service/impl/AlarmRecordServiceImpl.java
  10. 3 2
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/controller/HxpStockController.java
  11. 2 1
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/IHxpStockService.java
  12. 9 3
      zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/HxpStockServiceImpl.java
  13. 1 1
      zd-modules/zd-netty/src/main/java/com/zd/netty/base/FridConsumer.java
  14. 10 0
      zd-modules/zd-netty/src/main/java/com/zd/netty/controller/FridDeviceController.java
  15. 8 3
      zd-modules/zd-netty/src/main/java/com/zd/netty/sdk/DeJuRFIDListenerService.java
  16. 23 17
      zd-modules/zd-netty/src/main/java/com/zd/netty/sdk/DeJuRFIDService.java
  17. 6 0
      zd-modules/zd-netty/src/main/java/com/zd/netty/service/IFridService.java
  18. 3 1
      zd-modules/zd-netty/src/main/java/com/zd/netty/service/ISendService.java
  19. 6 0
      zd-modules/zd-netty/src/main/java/com/zd/netty/service/IService.java
  20. 5 0
      zd-modules/zd-netty/src/main/java/com/zd/netty/service/impl/FridServiceImpl.java
  21. 4 4
      zd-modules/zd-netty/src/main/java/com/zd/netty/service/impl/SendServiceImpl.java

+ 2 - 1
zd-api/zd-api-system/src/main/java/com/zd/system/api/airbottle/RemoteAirBottleService.java

@@ -4,6 +4,7 @@ import com.zd.common.core.constant.ServiceNameConstants;
 import com.zd.common.core.domain.R;
 import com.zd.system.api.airbottle.factory.RemoteAirBottleFallbackFactory;
 import com.zd.system.api.domain.InventoryTag;
+import com.zd.system.api.laboratory.domain.RemoteLabHardware;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -15,6 +16,6 @@ public interface RemoteAirBottleService {
      * 识别器新增报警记录
      */
     @PostMapping("alarm/record/remote/add")
-    R<Boolean> remoteAdd(@RequestBody InventoryTag tag);
+    R<Boolean> remoteAdd(@RequestBody InventoryTag tag, RemoteLabHardware hardware);
 
 }

+ 1 - 1
zd-api/zd-api-system/src/main/java/com/zd/system/api/airbottle/factory/RemoteAirBottleFallbackFactory.java

@@ -15,6 +15,6 @@ public class RemoteAirBottleFallbackFactory implements FallbackFactory<RemoteAir
     @Override
     public RemoteAirBottleService create(Throwable throwable) {
         log.error("气瓶服务调用失败:{}", throwable.getMessage());
-        return tag -> R.fail("新增报警记录失败:" + throwable.getMessage());
+        return (tag, hardware) -> R.fail("新增报警记录失败:" + throwable.getMessage());
     }
 }

+ 2 - 2
zd-api/zd-api-system/src/main/java/com/zd/system/api/chemical/RemoteStockService.java

@@ -2,7 +2,7 @@ package com.zd.system.api.chemical;
 
 import com.zd.common.core.constant.ServiceNameConstants;
 import com.zd.system.api.chemical.factory.RemoteStockFallbackFactory;
-import io.swagger.annotations.ApiOperation;
+import com.zd.system.api.laboratory.domain.RemoteLabHardware;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -15,7 +15,7 @@ public interface RemoteStockService {
 
 
     @GetMapping(value = "/hxpStock/RFIDCheck")
-    public void RFIDCheck(@RequestParam("rfidCode") String rfidCode);
+    public void RFIDCheck(@RequestParam("rfidCode") String rfidCode, RemoteLabHardware hardware);
 
     @GetMapping(value = "/hxpStock/expireCheck")
     public void expireCheck();

+ 2 - 1
zd-api/zd-api-system/src/main/java/com/zd/system/api/chemical/factory/RemoteStockFallbackFactory.java

@@ -3,6 +3,7 @@ package com.zd.system.api.chemical.factory;
 
 import com.zd.common.core.exception.ServiceException;
 import com.zd.system.api.chemical.RemoteStockService;
+import com.zd.system.api.laboratory.domain.RemoteLabHardware;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.cloud.openfeign.FallbackFactory;
@@ -18,7 +19,7 @@ public class RemoteStockFallbackFactory implements FallbackFactory<RemoteStockSe
         return new RemoteStockService() {
 
             @Override
-            public void RFIDCheck(String rfidCode) {
+            public void RFIDCheck(String rfidCode, RemoteLabHardware hardware) {
                 throw new ServiceException("保存调用失败:" + throwable.getMessage());
             }
 

+ 7 - 0
zd-api/zd-api-system/src/main/java/com/zd/system/api/netty/RemoteNettyService.java

@@ -32,4 +32,11 @@ public interface RemoteNettyService {
     @PostMapping("/frid/startMonitorChannels")
     R<Boolean> startMonitorChannels(@RequestBody RemoteLabHardware hardware);
 
+    /**
+     * 开启设备警报
+     */
+    @ApiOperation("开启设备警报")
+    @PostMapping("/frid/alarm")
+    R<Boolean> alarm(@RequestBody RemoteLabHardware hardware);
+
 }

+ 5 - 0
zd-api/zd-api-system/src/main/java/com/zd/system/api/netty/factory/RemoteNettyFallbackFactory.java

@@ -26,6 +26,11 @@ public class RemoteNettyFallbackFactory implements FallbackFactory<RemoteNettySe
             public R<Boolean> startMonitorChannels(RemoteLabHardware hardware) {
                 return  R.fail("启动扫描失败:" + throwable.getMessage());
             }
+
+            @Override
+            public R<Boolean> alarm(RemoteLabHardware hardware) {
+                return  R.fail("开启警报失败:" + throwable.getMessage());
+            }
         };
     }
 }

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

@@ -15,6 +15,7 @@ import com.zd.common.log.annotation.Log;
 import com.zd.common.log.enums.BusinessType;
 import com.zd.common.security.annotation.PreAuthorize;
 import com.zd.system.api.domain.InventoryTag;
+import com.zd.system.api.laboratory.domain.RemoteLabHardware;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.BeanUtils;
@@ -95,8 +96,8 @@ public class AlarmRecordController extends BaseController<AlarmRecord> {
     @ApiOperation(value = "识别器新增报警记录")
     @Log(title = "识别器新增报警记录", businessType = BusinessType.INSERT)
     @PostMapping("remote/add")
-    public R<Boolean> remoteAdd(@RequestBody InventoryTag tag) {
-        alarmRecordService.remoteAdd(tag);
+    public R<Boolean> remoteAdd(@RequestBody InventoryTag tag, RemoteLabHardware hardware) {
+        alarmRecordService.remoteAdd(tag,hardware);
         return R.ok();
     }
 }

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

@@ -4,6 +4,7 @@ import com.zd.airbottle.domain.AlarmRecord;
 import com.zd.airbottle.domain.vo.AlarmRecordVo;
 import com.zd.airbottle.domain.vo.BottleStorageInfoVo;
 import com.zd.system.api.domain.InventoryTag;
+import com.zd.system.api.laboratory.domain.RemoteLabHardware;
 
 import java.util.List;
 
@@ -31,9 +32,10 @@ public interface IAlarmRecordService {
      * 新增报警记录
      *
      * @param alarmRecord 报警记录
+     * @param hardware RFID设备信息
      * @return 结果
      */
-    int insertAlarmRecord(AlarmRecord alarmRecord);
+    int insertAlarmRecord(AlarmRecord alarmRecord, RemoteLabHardware hardware);
 
     /**
      * 获取拓展信息
@@ -46,8 +48,9 @@ public interface IAlarmRecordService {
      * 远程调用信息报警记录
      *
      * @param tag 标签值
+     * @param hardware RFID 设备数据
      */
-    void remoteAdd(InventoryTag tag);
+    void remoteAdd(InventoryTag tag, RemoteLabHardware hardware);
 
     List<BottleStorageInfoVo> setMasterIds(AlarmRecord alarmRecord);
 }

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

@@ -26,6 +26,7 @@ import com.zd.system.api.laboratory.RemoteSubQueryService;
 import com.zd.system.api.laboratory.domain.LabSubject;
 import com.zd.system.api.laboratory.domain.RemoteLabHardware;
 import com.zd.system.api.message.RemoteMessageService;
+import com.zd.system.api.netty.RemoteNettyService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -61,6 +62,8 @@ public class AlarmRecordServiceImpl implements IAlarmRecordService {
     private RemoteUserService userService;
     @Resource
     private RemoteMessageService messageService;
+    @Resource
+    private RemoteNettyService remoteNettyService;
 
     private static final String FRID_CODE = "FRID:";
 
@@ -88,11 +91,12 @@ public class AlarmRecordServiceImpl implements IAlarmRecordService {
      * 默认新增气瓶报警记录
      *
      * @param alarmRecord 报警记录
+     * @param hardware RFID 设备数据
      * @return 结果
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int insertAlarmRecord(AlarmRecord alarmRecord) {
+    public int insertAlarmRecord(AlarmRecord alarmRecord, RemoteLabHardware hardware) {
         String electronicTag = alarmRecord.getElectronicTag();
         QpBottleStorageRVo storageRVo = storageService.getByElectronicTag(electronicTag);
         if (storageRVo != null) {
@@ -103,8 +107,8 @@ public class AlarmRecordServiceImpl implements IAlarmRecordService {
                 return 1;
             }
 
+            remoteNettyService.alarm(hardware);//RFID设备报警
             sendAlarm(storageRVo);// 发送报警消息
-
             redisService.setCacheObject(key, electronicTag, 300L, TimeUnit.SECONDS);
             alarmRecord.setAlarmTime(Calendar.getInstance().getTime())
                     .setMasterId(id)
@@ -225,8 +229,8 @@ public class AlarmRecordServiceImpl implements IAlarmRecordService {
 
     @Override
     @Transactional
-    public void remoteAdd(InventoryTag tag) {
-        insertAlarmRecord(new AlarmRecord().setElectronicTag(tag.getEpc()));
+    public void remoteAdd(InventoryTag tag, RemoteLabHardware hardware) {
+        insertAlarmRecord(new AlarmRecord().setElectronicTag(tag.getEpc()),hardware);
     }
 
     @Override

+ 3 - 2
zd-modules/zd-chemical/src/main/java/com/zd/chemical/controller/HxpStockController.java

@@ -13,6 +13,7 @@ import com.zd.common.core.domain.per.PerFun;
 import com.zd.common.core.domain.per.PerPrefix;
 import com.zd.common.core.utils.SecurityUtils;
 import com.zd.common.security.service.TokenService;
+import com.zd.system.api.laboratory.domain.RemoteLabHardware;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import com.zd.common.response.ResultData;
@@ -197,8 +198,8 @@ public class HxpStockController extends BaseController {
 
     @ApiOperation(value = "RFID违规检测")
     @GetMapping(value = "/RFIDCheck")
-    public void RFIDCheck(@RequestParam("rfidCode") String rfidCode) {
-        hxpStockService.RFIDCheck(rfidCode);
+    public void RFIDCheck(@RequestParam("rfidCode") String rfidCode, RemoteLabHardware hardware) {
+        hxpStockService.RFIDCheck(rfidCode,hardware);
     }
 
     /**

+ 2 - 1
zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/IHxpStockService.java

@@ -6,6 +6,7 @@ import com.zd.chemical.domain.vo.HxpStockDetailVO;
 import com.zd.chemical.domain.vo.HxpStockJoinVO;
 import com.zd.chemical.domain.vo.HxpStockOutVO;
 import com.zd.chemical.domain.vo.HxpStockSearch;
+import com.zd.system.api.laboratory.domain.RemoteLabHardware;
 
 /**
  * 库存管理Service接口
@@ -87,7 +88,7 @@ public interface IHxpStockService
      */
     public int deleteHxpStockById(Long id);
 
-    void RFIDCheck(String rfidCode);
+    void RFIDCheck(String rfidCode, RemoteLabHardware hardware);
 
     int selectCountByRfidCode(HxpStock hxpStock);
 

+ 9 - 3
zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/HxpStockServiceImpl.java

@@ -7,7 +7,6 @@ import com.zd.chemical.domain.*;
 import com.zd.chemical.domain.vo.*;
 import com.zd.chemical.mapper.*;
 import com.zd.chemical.service.*;
-import com.zd.common.core.domain.R;
 import com.zd.common.core.domain.per.PerPrefix;
 import com.zd.common.core.exception.ServiceException;
 import com.zd.common.core.utils.DateUtils;
@@ -22,6 +21,8 @@ import com.zd.system.api.alarm.domain.Routes;
 import com.zd.system.api.domain.SysDictData;
 import com.zd.system.api.laboratory.RemoteLaboratoryService;
 import com.zd.system.api.laboratory.RemoteMessageContentService;
+import com.zd.system.api.laboratory.domain.RemoteLabHardware;
+import com.zd.system.api.netty.RemoteNettyService;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -31,6 +32,7 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
@@ -85,7 +87,8 @@ public class HxpStockServiceImpl implements IHxpStockService {
     private RemoteAlarmService remoteAlarmService;
     @Autowired
     private HxpCabinetlockLogMapper hxpCabinetlockLogMapper;
-
+    @Resource
+    private RemoteNettyService remoteNettyService;
     /**
      * 查询库存管理
      *
@@ -288,9 +291,10 @@ public class HxpStockServiceImpl implements IHxpStockService {
     /**
      * RFID 实时检测 是否是违规带离实验室
      * @param rfidCode
+     * @param hardware
      */
     @Override
-    public void RFIDCheck(String rfidCode) {
+    public void RFIDCheck(String rfidCode, RemoteLabHardware hardware) {
         if(StringUtils.isBlank(rfidCode)){
             return;
         }
@@ -312,6 +316,8 @@ public class HxpStockServiceImpl implements IHxpStockService {
             logger.info("RFID 化学品正常使用中: " + JSONUtil.toJsonStr(hxpUserecord));
         }else {
             logger.error("RFID 检测到违规触发报警: " + JSONUtil.toJsonStr(hxpStock));
+            //触发RFID警报
+            remoteNettyService.alarm(hardware);
             // 如果非领用状态,做报警台账
             // 0.检测实验室声光报警器是否使用- 使用则直接调用触发- 否则跳过
             Map<String,Object> subInfo = hxpUserecordMapper.selectSubInfoById(hxpStock.getSubId());

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

@@ -23,7 +23,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) {
             throw new ServiceException(e.getMessage());
         }

+ 10 - 0
zd-modules/zd-netty/src/main/java/com/zd/netty/controller/FridDeviceController.java

@@ -50,4 +50,14 @@ public class FridDeviceController {
         service.stop(hardware);
         return R.ok();
     }
+
+    /**
+     * 开启设备警报
+     */
+    @ApiOperation("开启设备警报")
+    @PostMapping("/alarm")
+    public R<Boolean> alarm(@RequestBody RemoteLabHardware hardware) {
+        service.alarm(hardware);
+        return R.ok();
+    }
 }

+ 8 - 3
zd-modules/zd-netty/src/main/java/com/zd/netty/sdk/DeJuRFIDListenerService.java

@@ -2,8 +2,6 @@ package com.zd.netty.sdk;
 
 import com.gg.reader.api.dal.GClient;
 import com.gg.reader.api.dal.GServer;
-import com.gg.reader.api.dal.HandlerGClientConnected;
-import com.gg.reader.api.protocol.gx.MsgBaseStop;
 import com.zd.common.core.enums.HardwareOperate;
 import com.zd.common.core.exception.ServiceException;
 import com.zd.netty.service.IService;
@@ -27,6 +25,8 @@ public class DeJuRFIDListenerService implements IService {
     private final Map<String, GServer> serverMap = new ConcurrentHashMap<>();
     @Resource
     private RemoteLaboratoryService remoteLaboratoryService;
+    @Resource
+    private DeJuRFIDService deJuRFIDService;
 
     @Override
     public void start(RemoteLabHardware hardware) {
@@ -63,6 +63,11 @@ public class DeJuRFIDListenerService implements IService {
         serverMap.remove(ipAddress);
     }
 
+    @Override
+    public void alarm(RemoteLabHardware hardware) {
+        deJuRFIDService.alarm(hardware);
+    }
+
     /**
      * 订阅监听上报
      * @param server 服务对象
@@ -76,7 +81,7 @@ public class DeJuRFIDListenerService implements IService {
             subscribeTcpHandler(client,hardware);//订阅Tcp断连上报
             DeJuRFIDService.setPower(hardware, client);
             DeJuRFIDService.setInventory(hardware, client);
-            DeJuRFIDService.subscribeHandler(client);
+            DeJuRFIDService.subscribeHandler(client, hardware);
             remoteLaboratoryService.update(HardwareOperate.OPEN,hardware.getIpAddress());
         };
     }

+ 23 - 17
zd-modules/zd-netty/src/main/java/com/zd/netty/sdk/DeJuRFIDService.java

@@ -1,23 +1,17 @@
 package com.zd.netty.sdk;
 
 import com.gg.reader.api.dal.GClient;
-import com.gg.reader.api.dal.HandlerTagEpcLog;
-import com.gg.reader.api.dal.HandlerTagEpcOver;
 import com.gg.reader.api.protocol.gx.*;
 import com.zd.common.core.exception.ServiceException;
 import com.zd.common.core.utils.SpringUtils;
 import com.zd.netty.service.ISendService;
 import com.zd.netty.service.IService;
-import com.zd.netty.thread.ThreadPoolTaskConfig;
 import com.zd.system.api.domain.InventoryTag;
 import com.zd.system.api.laboratory.domain.RemoteLabHardware;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 
-import javax.annotation.Resource;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ScheduledExecutorService;
@@ -54,7 +48,7 @@ public class DeJuRFIDService implements IService {
         }
         if (client.openTcp(ipAddress + ":"+PORT, 2000)) {
             // 订阅标签上报事件
-            subscribeHandler(client);
+            subscribeHandler(client,hardware);
             // 功率配置, 将4个天线功率都设置为30dBm.
             MsgBaseSetPower msgBaseSetPower = setPower(hardware, client);
             if (0 != msgBaseSetPower.getRtCode()) {
@@ -134,6 +128,21 @@ public class DeJuRFIDService implements IService {
         close(hardware);
     }
 
+    @Override
+    public void alarm(RemoteLabHardware hardware) {
+        //灯带设置
+        String ipAddress = hardware.getIpAddress();
+        if (clientMap.containsKey(ipAddress)){
+            GClient client = clientMap.get(ipAddress);
+            if (!isAlarm.get()) {
+                scheduledExecutorService.execute(() -> {
+                    isAlarm.set(true);
+                    changeGpo(1, client, 10);
+                });
+            }
+        }
+    }
+
     private static void close(RemoteLabHardware hardware) {
         String ipAddress = hardware.getIpAddress();
         if (clientMap.containsKey(ipAddress)) {
@@ -151,7 +160,6 @@ public class DeJuRFIDService implements IService {
         MsgAppSetGpo msgAppSetGpo = new MsgAppSetGpo();
         msgAppSetGpo.setGpo1(state);
         msgAppSetGpo.setGpo2(state);
-
         client.sendSynMsg(msgAppSetGpo);
         String status = state == 1 ? "start" : "stop";
         if (0 == msgAppSetGpo.getRtCode()) {
@@ -181,21 +189,19 @@ public class DeJuRFIDService implements IService {
      * 订阅6c标签信息上报
      *
      * @param client 客户端
+     * @param hardware 设备数据
      */
-    public static void subscribeHandler(GClient client) {
+    public static void subscribeHandler(GClient client, RemoteLabHardware hardware) {
+        String ipAddress = hardware.getIpAddress();
+        if (!clientMap.containsKey(ipAddress)){
+            clientMap.put(ipAddress,client);
+        }
         client.onTagEpcLog = (s, logBaseEpcInfo) -> {
             if (logBaseEpcInfo.getResult() == 0) {
                 log.info("===========》{}", logBaseEpcInfo.getbEpc());
-                //灯带设置
-                if (!isAlarm.get()) {
-                    scheduledExecutorService.execute(() -> {
-                        isAlarm.set(true);
-                        changeGpo(1, client, 10);
-                    });
-                }
                 InventoryTag tag = new InventoryTag();
                 BeanUtils.copyProperties(logBaseEpcInfo, tag);
-                sendService.send(tag);
+                sendService.send(tag,hardware);
             }
         };
         client.onTagEpcOver = (s, logBaseEpcOver) -> log.info("HandlerTagEpcOver");

+ 6 - 0
zd-modules/zd-netty/src/main/java/com/zd/netty/service/IFridService.java

@@ -14,4 +14,10 @@ public interface IFridService {
      * @param hardware  设备数据
      */
     void stop(RemoteLabHardware hardware);
+
+    /**
+     * 关闭RFID扫描器
+     * @param hardware  设备数据
+     */
+    void alarm(RemoteLabHardware hardware);
 }

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

@@ -1,14 +1,16 @@
 package com.zd.netty.service;
 
 import com.zd.system.api.domain.InventoryTag;
+import com.zd.system.api.laboratory.domain.RemoteLabHardware;
 
 public interface ISendService {
 
     /**
      * 发送读取到的编码
      * @param tag frid数据
+     * @param hardware 设备数据
      */
-    void send(InventoryTag tag);
+    void send(InventoryTag tag, RemoteLabHardware hardware);
 
     /**
      * 发送异常信息

+ 6 - 0
zd-modules/zd-netty/src/main/java/com/zd/netty/service/IService.java

@@ -16,4 +16,10 @@ public interface IService {
      * 断开RFID读写器
      */
     void disconnect(RemoteLabHardware hardware);
+
+    /**
+     * 启动警报
+     * @param hardware 设备数据
+     */
+    void alarm(RemoteLabHardware hardware);
 }

+ 5 - 0
zd-modules/zd-netty/src/main/java/com/zd/netty/service/impl/FridServiceImpl.java

@@ -26,4 +26,9 @@ public class FridServiceImpl implements IFridService {
     public void stop(RemoteLabHardware hardware) {
         rfidService(hardware.getManufacturerType()).disconnect(hardware);
     }
+
+    @Override
+    public void alarm(RemoteLabHardware hardware) {
+        rfidService(hardware.getManufacturerType()).disconnect(hardware);
+    }
 }

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

@@ -4,8 +4,8 @@ import com.zd.netty.service.ISendService;
 import com.zd.system.api.airbottle.RemoteAirBottleService;
 import com.zd.system.api.chemical.RemoteStockService;
 import com.zd.system.api.domain.InventoryTag;
+import com.zd.system.api.laboratory.domain.RemoteLabHardware;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -21,15 +21,15 @@ public class SendServiceImpl implements ISendService {
 
 
     @Override
-    public void send(InventoryTag tag) {
+    public void send(InventoryTag tag, RemoteLabHardware hardware) {
         log.info("==============================================reader1 inventory tag :" + tag.toString());
         try {
-            bottleService.remoteAdd(tag);
+            bottleService.remoteAdd(tag,hardware);
         } catch (Exception e) {
             log.info("气瓶服务异常:"+e.getMessage());
         }
         try {
-            remoteStockService.RFIDCheck(tag.getEpc());
+            remoteStockService.RFIDCheck(tag.getEpc(),hardware);
         } catch (Exception e) {
             log.info("化学品服务异常:"+e.getMessage());
         }