hanzhiwei пре 2 година
родитељ
комит
4690040b50

+ 4 - 0
zd-modules/zd-airbottle/src/main/java/com/zd/airbottle/domain/AlarmRecord.java

@@ -40,6 +40,10 @@ public class AlarmRecord extends BaseEntity {
     @ApiModelProperty(value = "电子标签")
     private String electronicTag;
     /**
+     * 天线id
+     */
+    private int antId;
+    /**
      * 报警类型;1:出门,2:进门
      */
     @ApiModelProperty(value = "报警类型;1:出门,2:进门")

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

@@ -3,7 +3,6 @@ package com.zd.airbottle.service;
 import com.zd.airbottle.domain.AlarmRecord;
 import com.zd.airbottle.domain.vo.AlarmRecordVo;
 import com.zd.airbottle.domain.vo.BottleStorageInfoVo;
-import com.zd.model.entity.HardwareRfidDto;
 import com.zd.model.entity.InventoryTag;
 
 import java.util.List;
@@ -36,7 +35,7 @@ public interface IAlarmRecordService {
      * @param hardware RFID设备信息
      * @return 结果
      */
-    int insertAlarmRecord(AlarmRecord alarmRecord, HardwareRfidDto hardwareRfidDto);
+    int insertAlarmRecord(InventoryTag tag);
 
     /**
      * 获取拓展信息

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

@@ -17,6 +17,7 @@ import com.zd.algorithm.api.alarm.entity.Routes;
 import com.zd.algorithm.api.alarm.entity.SendTypes;
 import com.zd.algorithm.api.alarm.feign.RemoteAlarmService;
 import com.zd.algorithm.api.camera.feign.RemoteCameraService;
+import com.zd.algorithm.api.rfid.domain.entity.HardwareRfid;
 import com.zd.algorithm.api.rfid.feign.RemoteRfidService;
 import com.zd.base.api.feign.RemoteMessageService;
 import com.zd.common.core.redis.RedisService;
@@ -44,6 +45,7 @@ import com.zd.system.api.feign.RemoteUserService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.concurrent.BasicThreadFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -104,6 +106,9 @@ public class AlarmRecordServiceImpl implements IAlarmRecordService {
     @Autowired
     private RemoteMessageService remoteMessageService;
 
+    @Resource
+    private RedisTemplate<String, HardwareRfid> redisTemplate;
+
     private static final String RFID_CODE = "RFID:";
 
     /**
@@ -135,11 +140,19 @@ public class AlarmRecordServiceImpl implements IAlarmRecordService {
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int insertAlarmRecord(AlarmRecord alarmRecord, HardwareRfidDto hardwareRfidDto) {
-        String electronicTag = alarmRecord.getElectronicTag();
+    public int insertAlarmRecord(InventoryTag tag) {
+        String electronicTag = tag.getEpc();
+        int antId = tag.getAntId();
+        HardwareRfidDto hardwareRfidDto = tag.getHardwareRfidDto();
+        AlarmRecord alarmRecord = new AlarmRecord().setElectronicTag(tag.getEpc());
         QpBottleStorageRVo storageRVo = storageService.getByElectronicTag(electronicTag);
         if (storageRVo != null) {
             if (storageRVo.getStorageStatus() == 1) {
+                //处理rfid多个天线请求多次问题
+                if(redisService.hasKey(electronicTag)){
+                    return 0;
+                }
+                redisService.setCacheObject(electronicTag,antId,30L,TimeUnit.SECONDS);
                 // 查询配置
                 ResultData<WarningConfigDto> byType = laboratoryService.getByType(3);
                 if (HttpStatus.SUCCESS != byType.getCode()) {
@@ -423,7 +436,7 @@ public class AlarmRecordServiceImpl implements IAlarmRecordService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean remoteAdd(InventoryTag tag) {
-        return insertAlarmRecord(new AlarmRecord().setElectronicTag(tag.getEpc()),tag.getHardwareRfidDto())==1;
+        return insertAlarmRecord(tag)==1;
     }
 
     @Override

+ 22 - 11
zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/HxpStockServiceImpl.java

@@ -24,6 +24,7 @@ import com.zd.chemical.util.ChemicalUtils;
 import com.zd.chemical.util.SmsSydUtil;
 import com.zd.common.core.annotation.DataScope;
 import com.zd.common.core.exception.ServiceException;
+import com.zd.common.core.redis.RedisService;
 import com.zd.common.core.utils.DateUtils;
 import com.zd.common.core.utils.DictUtils;
 import com.zd.common.core.utils.SaveUtil;
@@ -57,7 +58,6 @@ import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -73,14 +73,14 @@ import java.util.stream.Stream;
 public class HxpStockServiceImpl implements IHxpStockService {
     private static Logger logger = LoggerFactory.getLogger(HxpStockServiceImpl.class);
 
-    private static Map<String, Date> cacheMap = new ConcurrentHashMap<>();
+//    private static Map<String, Date> cacheMap = new ConcurrentHashMap<>();
 
-    private static int interval = 60 * 3;
+//    private static int interval = 60 * 3;
 
-    @Value("${config.interval:180}")
-    private void setInterval(Integer interval){
-        HxpStockServiceImpl.interval = interval;
-    }
+//    @Value("${config.interval:180}")
+//    private void setInterval(Integer interval){
+//        HxpStockServiceImpl.interval = interval;
+//    }
 
     public static Integer phoneMode = 0;
 
@@ -138,6 +138,9 @@ public class HxpStockServiceImpl implements IHxpStockService {
     @Autowired
     private RemoteMessageService remoteMessageService;
 
+    @Resource
+    private RedisService redisService;
+
     /**
      * 查询库存管理
      *
@@ -355,12 +358,14 @@ public class HxpStockServiceImpl implements IHxpStockService {
     public synchronized boolean RFIDCheck(InventoryTag tag) {
         String rfidCode = tag.getEpc();
         if (StringUtils.isBlank(rfidCode)) {
+            logger.info("无标签信息!");
             return false;
         }
-        Date d = cacheMap.get(rfidCode);
-        if (d != null && DateUtil.compare(DateUtil.offsetSecond(d, interval), DateUtils.getNowDate()) > 0) {
-            return false;
-        }
+
+//        Date d = cacheMap.get(rfidCode);
+//        if (d != null && DateUtil.compare(DateUtil.offsetSecond(d, interval), DateUtils.getNowDate()) > 0) {
+//            return false;
+//        }
 
         logger.info("RFID 实时检测 RFIDCheck(标签编号): " + rfidCode);
         HxpStock hxpStock = hxpStockMapper.selectByRfidCode(rfidCode);
@@ -368,6 +373,12 @@ public class HxpStockServiceImpl implements IHxpStockService {
             logger.info("RFID 实时检测 (标签未绑定化学品): " + rfidCode);
             return false;
         }
+        //        //处理rfid多个天线请求多次问题
+        if(redisService.hasKey(rfidCode)){
+            logger.info("已存在{}标签信息!",rfidCode);
+            return false;
+        }
+        redisService.setCacheObject(rfidCode,tag.getAntId(),30L,TimeUnit.SECONDS);
         HxpChemicalJoinCabinet hxpChemicalJoinCabinet = hxpCabinetJoinCabinetService.selectHxpChemicalJoinCabinetById(hxpStock.getJoinId());
 
         // 查询该库存数据是否处于领用状态

+ 1 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabMessageContentServiceImpl.java

@@ -244,6 +244,7 @@ public class LabMessageContentServiceImpl implements ILabMessageContentService {
         warningNoticeLog.setFloorName(subject.getFloorName());
         warningNoticeLog.setRoomNum(subject.getRoom());
         warningNoticeLog.setWarningType(4);
+        warningNoticeLog.setWarningWay("2,3");
         //TODO 语音播报通知
         warningNoticeLog.setVoiceBroadcast(1);
         String riskPlanName = "";