package com.sercurityControl.proteam.service.impl; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.securityControl.common.core.utils.StringUtils; import com.securityControl.common.core.utils.aes.StringHelper; import com.securityControl.common.core.web.domain.AjaxResult; import com.securityControl.common.redis.service.RedisService; import com.sercurityControl.proteam.domain.DeviceMachineEntity; import com.sercurityControl.proteam.domain.NodeVo; import com.sercurityControl.proteam.domain.QxGroupVo; import com.sercurityControl.proteam.dutyTask.domain.TodayTaskVo; import com.sercurityControl.proteam.mapper.DeviceMachineMapper; import com.sercurityControl.proteam.service.DeviceMachineService; import com.sercurityControl.proteam.util.JsonHelper; import com.sercurityControl.proteam.util.QxVideotape; import com.sercurityControl.proteam.util.QxWebUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import java.util.*; /** * @author bonus * @data 2023/3/17 10:53 * @description 设备分配 */ @Service @Slf4j public class DeviceMachineServiceImpl implements DeviceMachineService { @Autowired private DeviceMachineMapper mapper; @Autowired private RedisService redisUtil; /** * 获取设备分配数据 * * @param entity 实体类 * @return 集合 */ @Override public PageInfo getDeviceMachineList(DeviceMachineEntity entity) { List list = new ArrayList<>(); if (StringUtils.isNotBlank(entity.getOrg())) { String[] arr = entity.getOrg().split(","); List orgList = Arrays.asList(arr); entity.setOrgList(orgList); } String groupNode = (String) redisUtil.get("dev:groupNode"); if (StringUtils.isNotEmpty(groupNode) && !groupNode.contains("null")) { QxGroupVo vo = JSON.parseObject(groupNode, QxGroupVo.class); List nodelist = vo.getNodelist(); PageHelper.startPage(Integer.parseInt(entity.getPage()), Integer.parseInt(entity.getLimit())); list = mapper.getDeviceMachineList(entity); //父类节点 String index = (String) redisUtil.get("dev:nodeIndex"); String[] indexList = index.split(","); for (DeviceMachineEntity device : list) { StringBuilder nodeIndex = new StringBuilder(); StringBuilder nodeName = new StringBuilder(); for (String str : indexList) { String node = (String) redisUtil.get(str + ":" + device.getPuId()); nodeIndex.append(ObjectUtils.isEmpty(node) ? "" : node + ","); if (!ObjectUtils.isEmpty(node)) { for (NodeVo nodeVo : nodelist) { if (node.equals(nodeVo.getIndex())) { nodeName.append(nodeVo.getName()).append(","); } } } } device.setNodeIndex(nodeIndex.length() > 0 ? nodeIndex.deleteCharAt(nodeIndex.lastIndexOf(",")).toString() : ""); device.setNodeName(nodeName.length() > 0 ? nodeName.deleteCharAt(nodeName.lastIndexOf(",")).toString() : ""); } } PageInfo pageInfo = new PageInfo<>(list); return pageInfo; } /** * */ @Override public void refreshRedisUtilSchedule() { try { String groupNode = QxWebUtil.getGroupNode(); redisUtil.set("dev:groupNode", groupNode, 60 * 60 * 6); getNodeDevice(); } catch (Exception e) { log.error(e.toString(),e); } } public void getNodeDevice() { try { StringBuilder nodeIndex = new StringBuilder(); String groupNode = QxWebUtil.getGroupNode(); QxGroupVo vo = JSON.parseObject(groupNode, QxGroupVo.class); if (vo != null) { List nodeList = vo.getNodelist(); for (NodeVo entity : nodeList) { if (!"0".equals(entity.getParentIndex())) { String groupPu = QxWebUtil.getGroupPu(entity.getIndex()); JSONObject json = JSON.parseObject(groupPu); jsonArrayToMapList(json.getJSONArray("rows").toString(), entity.getParentIndex(), entity.getIndex()); } else { nodeIndex.append(entity.getIndex()).append(","); } } } redisUtil.set("dev:" + "nodeIndex", nodeIndex.toString(), 60 * 60 * 6); } catch (Exception e) { e.printStackTrace(); } } public void jsonArrayToMapList(String jsonArrayString, String parentIndex, String nodeIndex) { JSONArray jsonArr = JSON.parseArray(jsonArrayString); if (jsonArr != null && jsonArr.size() > 0) { for (int i = 0; i < jsonArr.size(); i++) { JSONObject jsonObject = JSON.parseObject(jsonArr.getString(i)); Map map = new HashMap(16); redisUtil.set(parentIndex + ":" + jsonObject.getString("puid"), nodeIndex, 60 * 60 * 6); } } } }