Explorar el Código

2023-10-20 库存修改的时候,清除旧的标签提示语。

chaiyunlong hace 2 años
padre
commit
7cf2a9cdd5

+ 20 - 0
zd-modules/zd-airbottle/src/main/java/com/zd/airbottle/controller/DbStockController.java

@@ -154,6 +154,26 @@ public class DbStockController extends AbstractController {
         DbStock oldDbStock = dbStockService.getById(dbStockBo.getId());
         if (dbStockService.update(new LambdaUpdateWrapper<DbStock>().eq(DbStock::getId, dbStockBo.getId()).set(DbStock::getBeaconTag, dbStockBo.getBeaconTag()))) {
             redisService.deleteObject(BaseConstants.BEACON_MATE_DET+"~"+ oldDbStock.getBeaconTag()+"~"+oldDbStock.getSubjectId()+"~"+oldDbStock.getGasName());
+            //先把对应的信标提示语撤销
+            List <Map<String,Object>> beaconNoticeList = redisService.getCacheObject(BaseConstants.BEACON_MATE_NOTICE+"~"+oldDbStock.getSubjectId());
+            List <Map<String,Object>> newNoticeList = new ArrayList <>();
+            if(beaconNoticeList!=null){
+                newNoticeList.addAll(beaconNoticeList);
+            }
+            //todo 循环信标通知,修改的信标提示语移除。
+            if(beaconNoticeList != null){
+                for(Map notice:beaconNoticeList){
+                    if(notice.get("beaconTag").equals(oldDbStock.getBeaconTag())){
+                        log.info("=====================================》移除返回来的信标提示语:"+notice);
+                        newNoticeList.remove(notice);
+                    }
+                }
+            }
+            //下发通知,告诉前端页面,查询redis获取相关信息
+            if(beaconNoticeList!=null && beaconNoticeList.size()!=newNoticeList.size()){
+                //判断通知消息集合有数据,说明信标有变动,需要重新变更加通知
+                redisService.setCacheObject(BaseConstants.BEACON_MATE_NOTICE+"~"+ oldDbStock.getSubjectId(),newNoticeList, 30L, TimeUnit.MINUTES);
+            }
             //todo 重新加载入库的信标到redis  chai
             DbStock newDbStock = dbStockService.getById(dbStockBo.getId());
             new Thread(()->loadBeaconDate(newDbStock)).start();