|
|
@@ -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());
|
|
|
|
|
|
// 查询该库存数据是否处于领用状态
|