refactor(service): 优化设备交付服务中的日志处理逻辑
- 移除未使用的 ICsTerminalLogsService 依赖注入 - 删除前置推送日志的清理代码,简化设备删除流程 - 在创建操作日志时添加UUID标识符 - 在终端日志服务中增加Redis缓存清理逻辑 - 为设备列表处理添加空值检查,避免空指针异常 - 重构设备分组和消息发送逻辑,提高代码可读性
This commit is contained in:
@@ -9,6 +9,7 @@ import cn.hutool.core.collection.CollUtil;
|
|||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.date.DatePattern;
|
import cn.hutool.core.date.DatePattern;
|
||||||
import cn.hutool.core.text.StrPool;
|
import cn.hutool.core.text.StrPool;
|
||||||
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
@@ -111,7 +112,6 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
|
|||||||
private final ICsCommunicateService csCommunicateService;
|
private final ICsCommunicateService csCommunicateService;
|
||||||
private final ICsUserPinsService csUserPinsService;
|
private final ICsUserPinsService csUserPinsService;
|
||||||
private final EventUserFeignClient eventUserFeignClient;
|
private final EventUserFeignClient eventUserFeignClient;
|
||||||
private final ICsTerminalLogsService csTerminalLogsService;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void refreshDeviceDataCache() {
|
public void refreshDeviceDataCache() {
|
||||||
@@ -927,16 +927,12 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl<CsEquipmentDeliv
|
|||||||
csLedgerLambdaQueryWrapper.eq(CsLedger::getPid,id);
|
csLedgerLambdaQueryWrapper.eq(CsLedger::getPid,id);
|
||||||
csLedgerService.remove(csLedgerLambdaQueryWrapper);
|
csLedgerService.remove(csLedgerLambdaQueryWrapper);
|
||||||
csDevModelRelationService.lambdaUpdate().eq(CsDevModelRelationPO::getDevId,id).set(CsDevModelRelationPO::getStatus,0).update();
|
csDevModelRelationService.lambdaUpdate().eq(CsDevModelRelationPO::getDevId,id).set(CsDevModelRelationPO::getStatus,0).update();
|
||||||
//删除前置推送日志
|
|
||||||
LambdaQueryWrapper<CsTerminalLogs> queryWrap = new LambdaQueryWrapper<>();
|
|
||||||
queryWrap.eq(CsTerminalLogs::getDeviceId,id);
|
|
||||||
csTerminalLogsService.remove(queryWrap);
|
|
||||||
|
|
||||||
if (update) {
|
if (update) {
|
||||||
refreshDeviceDataCache();
|
refreshDeviceDataCache();
|
||||||
}
|
}
|
||||||
//新增操作日志
|
//新增操作日志
|
||||||
CsTerminalLogs csTerminalLogs = new CsTerminalLogs();
|
CsTerminalLogs csTerminalLogs = new CsTerminalLogs();
|
||||||
|
csTerminalLogs.setId(IdUtil.simpleUUID());
|
||||||
csTerminalLogs.setDeviceId(id);
|
csTerminalLogs.setDeviceId(id);
|
||||||
csTerminalLogs.setOperateType(2);
|
csTerminalLogs.setOperateType(2);
|
||||||
csTerminalLogs.setIsPush(0);
|
csTerminalLogs.setIsPush(0);
|
||||||
|
|||||||
@@ -66,6 +66,8 @@ public class CsTerminalLogsServiceImpl extends ServiceImpl<CsTerminalLogsMapper,
|
|||||||
wrapper.eq(CsTerminalLogs::getIsPush, 0);
|
wrapper.eq(CsTerminalLogs::getIsPush, 0);
|
||||||
List<CsTerminalLogs> list = this.list(wrapper);
|
List<CsTerminalLogs> list = this.list(wrapper);
|
||||||
if (CollectionUtil.isNotEmpty(list)) {
|
if (CollectionUtil.isNotEmpty(list)) {
|
||||||
|
//先清空缓存
|
||||||
|
redisUtil.delete(RequestUtil.getUserIndex()+"reply");
|
||||||
//新增台账集合
|
//新增台账集合
|
||||||
List<String> addList = new ArrayList<>();
|
List<String> addList = new ArrayList<>();
|
||||||
//修改台账集合
|
//修改台账集合
|
||||||
@@ -97,42 +99,44 @@ public class CsTerminalLogsServiceImpl extends ServiceImpl<CsTerminalLogsMapper,
|
|||||||
});
|
});
|
||||||
//整合后 所有设备的id
|
//整合后 所有设备的id
|
||||||
List<String> devList = Stream.of(addList, updateList, deleteList).flatMap(List::stream).collect(Collectors.toList());
|
List<String> devList = Stream.of(addList, updateList, deleteList).flatMap(List::stream).collect(Collectors.toList());
|
||||||
//获取设备集合
|
if (CollectionUtil.isNotEmpty(devList)) {
|
||||||
List<CsEquipmentDeliveryPO> deviceList = csEquipmentDeliveryService.listByIds(devList);
|
//获取设备集合
|
||||||
//按照前置机id分组
|
List<CsEquipmentDeliveryPO> deviceList = csEquipmentDeliveryService.listByIds(devList);
|
||||||
Map<String,List<CsEquipmentDeliveryPO>> nodeMap = deviceList.stream().collect(Collectors.groupingBy(CsEquipmentDeliveryPO::getNodeId));
|
//按照前置机id分组
|
||||||
nodeMap.forEach((k,v)->{
|
Map<String,List<CsEquipmentDeliveryPO>> nodeMap = deviceList.stream().collect(Collectors.groupingBy(CsEquipmentDeliveryPO::getNodeId));
|
||||||
int maxProcessNum = nodeService.getNodeById(k).getMaxProcessNum();
|
nodeMap.forEach((k,v)->{
|
||||||
//按照进程号分组
|
int maxProcessNum = nodeService.getNodeById(k).getMaxProcessNum();
|
||||||
Map<Integer,List<CsEquipmentDeliveryPO>> nodeProcessMap = v.stream().collect(Collectors.groupingBy(CsEquipmentDeliveryPO::getNodeProcess));
|
//按照进程号分组
|
||||||
nodeProcessMap.forEach((k1,v1)->{
|
Map<Integer,List<CsEquipmentDeliveryPO>> nodeProcessMap = v.stream().collect(Collectors.groupingBy(CsEquipmentDeliveryPO::getNodeProcess));
|
||||||
if (v1.size() > 10) {
|
nodeProcessMap.forEach((k1,v1)->{
|
||||||
//一个进程下修改的设备数量超过10台,重启该进程号下的前置
|
if (v1.size() > 10) {
|
||||||
CldControlMessage cldControlMessage = new CldControlMessage();
|
//一个进程下修改的设备数量超过10台,重启该进程号下的前置
|
||||||
cldControlMessage.setGuid(IdUtil.simpleUUID());
|
CldControlMessage cldControlMessage = new CldControlMessage();
|
||||||
cldControlMessage.setCode("set_process");
|
cldControlMessage.setGuid(IdUtil.simpleUUID());
|
||||||
cldControlMessage.setProcessNo(k1);
|
cldControlMessage.setCode("set_process");
|
||||||
cldControlMessage.setFun("delete");
|
cldControlMessage.setProcessNo(k1);
|
||||||
cldControlMessage.setProcessNum(maxProcessNum);
|
cldControlMessage.setFun("delete");
|
||||||
controlMessageTemplate.sendMember(cldControlMessage,k);
|
cldControlMessage.setProcessNum(maxProcessNum);
|
||||||
}
|
controlMessageTemplate.sendMember(cldControlMessage,k);
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
if (CollectionUtil.isNotEmpty(addList)) {
|
if (CollectionUtil.isNotEmpty(addList)) {
|
||||||
sendMessage(addList, deviceList, "add_terminal");
|
sendMessage(addList, deviceList, "add_terminal");
|
||||||
}
|
}
|
||||||
if (CollectionUtil.isNotEmpty(updateList)) {
|
if (CollectionUtil.isNotEmpty(updateList)) {
|
||||||
sendMessage(updateList, deviceList, "ledger_modify");
|
sendMessage(updateList, deviceList, "ledger_modify");
|
||||||
}
|
}
|
||||||
if (CollectionUtil.isNotEmpty(deleteList)) {
|
if (CollectionUtil.isNotEmpty(deleteList)) {
|
||||||
sendDeleteMessage(deleteList, list, "delete_terminal");
|
sendDeleteMessage(deleteList, list, "delete_terminal");
|
||||||
}
|
}
|
||||||
|
|
||||||
//推送完将数据改成推送
|
//推送完将数据改成推送
|
||||||
LambdaUpdateWrapper<CsTerminalLogs> wrapper2 = new LambdaUpdateWrapper<>();
|
LambdaUpdateWrapper<CsTerminalLogs> wrapper2 = new LambdaUpdateWrapper<>();
|
||||||
wrapper2.set(CsTerminalLogs::getIsPush, 1);
|
wrapper2.set(CsTerminalLogs::getIsPush, 1);
|
||||||
this.update(wrapper2);
|
this.update(wrapper2);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return "暂无需要推送的数据";
|
return "暂无需要推送的数据";
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user