|  |  | 
 |  |  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
 |  |  | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; | 
 |  |  | import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; | 
 |  |  | import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; | 
 |  |  | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
 |  |  | import com.moral.api.entity.Device; | 
 |  |  | import com.moral.api.entity.GovMonitorPoint; | 
 |  |  | import com.moral.api.entity.Organization; | 
 |  |  | import com.moral.api.entity.SysArea; | 
 |  |  | import com.moral.api.exception.BusinessException; | 
 |  |  | import com.moral.api.mapper.DeviceMapper; | 
 |  |  | import com.moral.api.mapper.GovMonitorPointMapper; | 
 |  |  | import com.moral.api.mapper.SysAreaMapper; | 
 |  |  | import com.moral.api.service.DeviceService; | 
 |  |  | import com.moral.api.service.GovMonitorPointService; | 
 |  |  | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
 |  |  | import com.moral.api.service.OrganizationService; | 
 |  |  | import com.moral.api.util.LogUtils; | 
 |  |  | import com.moral.constant.Constants; | 
 |  |  | import com.moral.constant.RedisConstants; | 
 |  |  | import com.moral.constant.ResponseCodeEnum; | 
 |  |  | import com.moral.constant.ResultMessage; | 
 |  |  | import com.moral.util.RegionCodeUtils; | 
 |  |  |  | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | 
 |  |  | import org.springframework.web.context.request.RequestContextHolder; | 
 |  |  | import org.springframework.web.context.request.ServletRequestAttributes; | 
 |  |  |  | 
 |  |  | import javax.annotation.Resource; | 
 |  |  | import javax.servlet.http.HttpServletRequest; | 
 |  |  |  | 
 |  |  | import java.text.SimpleDateFormat; | 
 |  |  | import java.util.*; | 
 |  |  | import java.util.concurrent.ExecutorService; | 
 |  |  | import java.util.concurrent.Executors; | 
 |  |  | import java.util.stream.Collectors; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * <p> | 
 |  |  | 
 |  |  |     @Autowired(required = false) | 
 |  |  |     private RedisTemplate redisTemplate; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private LogUtils logUtils; | 
 |  |  |     @Resource | 
 |  |  |     private OrganizationService organizationService; | 
 |  |  |  | 
 |  |  |     @Resource | 
 |  |  |     private DeviceService deviceService; | 
 |  |  |  | 
 |  |  |     @Autowired(required = false) | 
 |  |  |     private DeviceMapper deviceMapper; | 
 |  |  |  | 
 |  |  |     /* | 
 |  |  |      * 从redis获取设备信息 | 
 |  |  | 
 |  |  |             HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); | 
 |  |  |             StringBuilder content = new StringBuilder(); | 
 |  |  |             content.append("添加了政府站点:").append("id:").append(govMonitorPoint.getId() + ";").append(govMonitorPoint.getName() + ";").append(":").append("guid:").append(govMonitorPoint.getGuid() + ";"); | 
 |  |  |             logUtils.saveOperationForManage(request, content.toString(), Constants.INSERT_OPERATE_TYPE); | 
 |  |  |             LogUtils.saveOperationForManage(request, content.toString(), Constants.INSERT_OPERATE_TYPE); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         if (!ObjectUtils.isEmpty(govMonitorPoint.getDesc())) { | 
 |  |  |             content.append("desc:").append(oldGovMonitorPoint).append("->").append(govMonitorPoint.getDesc()).append(";"); | 
 |  |  |         } | 
 |  |  |         logUtils.saveOperationForManage(request, content.toString(), Constants.UPDATE_OPERATE_TYPE); | 
 |  |  |         LogUtils.saveOperationForManage(request, content.toString(), Constants.UPDATE_OPERATE_TYPE); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public void updateList(Integer id, String guid) { | 
 |  |  |         ExecutorService executorService = Executors.newFixedThreadPool(2); | 
 |  |  |         QueryWrapper<GovMonitorPoint> wrapper_govMonitorPoint = new QueryWrapper<>(); | 
 |  |  |         wrapper_govMonitorPoint.eq("is_delete", Constants.NOT_DELETE); | 
 |  |  |         wrapper_govMonitorPoint.eq("id", id); | 
 |  |  |         List<GovMonitorPoint> govMonitorPoints = govMonitorPointMapper.selectList(wrapper_govMonitorPoint); | 
 |  |  |         if (govMonitorPoints.size() == 0) { | 
 |  |  |             throw new BusinessException("站点不存在!"); | 
 |  |  |         } | 
 |  |  |         GovMonitorPoint govMonitorPoint = govMonitorPoints.get(0); | 
 |  |  |         String oldGuid = govMonitorPoint.getGuid(); | 
 |  |  |         LambdaQueryChainWrapper<Device> wrapper = deviceService.lambdaQuery(); | 
 |  |  |         wrapper.eq(Device::getIsDelete,0); | 
 |  |  |         wrapper.eq(Device::getGuid,oldGuid); | 
 |  |  |         List<Device> list = wrapper.list(); | 
 |  |  |         list.forEach(it->it.setGuid(guid)); | 
 |  |  |  | 
 |  |  |         deviceService.updateBatchById(list); | 
 |  |  |  | 
 |  |  |         govMonitorPoint.setGuid(guid); | 
 |  |  |         govMonitorPointMapper.updateById(govMonitorPoint); | 
 |  |  |         //删除redis | 
 |  |  |         delGovMonitorPointInfoFromRedis(id.toString()); | 
 |  |  |         //更新redis | 
 |  |  |         setGovMonitorPointInfoToRedis(id.toString(), selectGovMonitorPointInfoById(id)); | 
 |  |  |         //操作日志记录 | 
 |  |  |         HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); | 
 |  |  |         StringBuilder content = new StringBuilder(); | 
 |  |  |         content.append("修改了政府站点:").append("id:").append(govMonitorPoint.getId() + ";"); | 
 |  |  |         if (!ObjectUtils.isEmpty(govMonitorPoint.getGuid())) { | 
 |  |  |             content.append("guid:").append(oldGuid).append("->").append(guid).append(";"); | 
 |  |  |         } | 
 |  |  |         LogUtils.saveOperationForManage(request, content.toString(), Constants.UPDATE_OPERATE_TYPE); | 
 |  |  |         for(Device d : list){ | 
 |  |  |             executorService.submit(()->{ | 
 |  |  |                 redisTemplate.opsForHash().delete(RedisConstants.DEVICE, d.getMac()); | 
 |  |  |                 Map<String, Object> deviceInfo = deviceService.selectDeviceInfoById(d.getId()); | 
 |  |  |                 redisTemplate.opsForHash().put(RedisConstants.DEVICE, d.getMac(), deviceInfo); | 
 |  |  |  | 
 |  |  |             }); | 
 |  |  |         } | 
 |  |  |         // 关闭线程池 | 
 |  |  |         executorService.shutdown(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  | 
 |  |  |         HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); | 
 |  |  |         StringBuilder content = new StringBuilder(); | 
 |  |  |         content.append("删除了设备:").append("id:").append(id).append(";"); | 
 |  |  |         logUtils.saveOperationForManage(request, content.toString(), Constants.DELETE_OPERATE_TYPE); | 
 |  |  |         LogUtils.saveOperationForManage(request, content.toString(), Constants.DELETE_OPERATE_TYPE); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  | 
 |  |  |         } | 
 |  |  |         return govMonitorPointMapper.selectMaps(queryWrapper); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public List<GovMonitorPoint> selectGovMonitorPointsByOrgid(Map map) { | 
 |  |  |         //根据组织id获取子组织 | 
 |  |  |         List<Organization> organizations = organizationService.getAllChildrenOrganization(Integer.parseInt(map.get("organization_id").toString())); | 
 |  |  |         Set<Integer> organization_ids = organizations.stream().map(organization -> organization.getId()).collect(Collectors.toSet()); | 
 |  |  |         //先获取组织下所有设备 | 
 |  |  |         QueryWrapper<Device> wrapper_device = new QueryWrapper<>(); | 
 |  |  |         wrapper_device.in("organization_id",organization_ids).eq("is_delete",Constants.NOT_DELETE); | 
 |  |  |         List<Device> devices = deviceMapper.selectList(wrapper_device); | 
 |  |  |         //用集合存放所有设备的id | 
 |  |  |         Set<String> guids = devices.stream().map(device -> device.getGuid()).collect(Collectors.toSet()); | 
 |  |  |         //获取所有政府站点信息 | 
 |  |  |         QueryWrapper<GovMonitorPoint> wrapper_govMonitorPoint = new QueryWrapper<>(); | 
 |  |  |         wrapper_govMonitorPoint.eq("is_delete",Constants.NOT_DELETE).in("guid",guids); | 
 |  |  |         List<GovMonitorPoint> govMonitorPointList = govMonitorPointMapper.selectList(wrapper_govMonitorPoint); | 
 |  |  |         return govMonitorPointList; | 
 |  |  |     } | 
 |  |  | } |