package com.moral.api.service.impl;
import com.alibaba.fastjson.JSON;
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.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
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.stream.Collectors;
/**
*
* 服务实现类
*
*
* @author moral
* @since 2021-09-09
*/
@Service
public class GovMonitorPointServiceImpl extends ServiceImpl implements GovMonitorPointService {
@Autowired(required = false)
private GovMonitorPointMapper govMonitorPointMapper;
@Autowired(required = false)
private SysAreaMapper sysAreaMapper;
@Autowired(required = false)
private RedisTemplate redisTemplate;
@Resource
private OrganizationService organizationService;
@Resource
private DeviceService deviceService;
@Autowired(required = false)
private DeviceMapper deviceMapper;
/*
* 从redis获取设备信息
* */
private Map getGovMonitorPointInfoFromRedis(String id) {
return (Map) redisTemplate.opsForHash().get(RedisConstants.GOV_MONITOR_POINT, id);
}
/*
* 设备信息存入redis
*/
private void setGovMonitorPointInfoToRedis(String id, GovMonitorPoint govMonitorPointInfo) {
redisTemplate.opsForHash().put(RedisConstants.GOV_MONITOR_POINT, id, govMonitorPointInfo);
}
/*
* 从redis删除设备信息
*/
private void delGovMonitorPointInfoFromRedis(String id) {
redisTemplate.opsForHash().delete(RedisConstants.GOV_MONITOR_POINT, id);
}
@Override
public Map getDataByCondition(Map map) {
Map resultMap = new HashMap<>();
if (!map.containsKey("current") || !map.containsKey("size")) {
resultMap.put("code", ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode());
resultMap.put("msg", ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
return resultMap;
}
int current = Integer.parseInt(map.get("current").toString());
int size = Integer.parseInt(map.get("size").toString());
Page page = new Page<>(current, size);
QueryWrapper wrapper_Condition = new QueryWrapper<>();
wrapper_Condition.eq("is_delete", Constants.NOT_DELETE);
if (!ObjectUtils.isEmpty(map.get("name"))) {
wrapper_Condition.like("name", map.get("name").toString());
}
if (!ObjectUtils.isEmpty(map.get("stationLevel"))) {
wrapper_Condition.like("station_level", map.get("stationLevel").toString());
}
wrapper_Condition.orderByDesc("create_time");
Page resultPage = govMonitorPointMapper.selectPage(page, wrapper_Condition);
int totalNumber = govMonitorPointMapper.selectCount(wrapper_Condition);
List govMonitorPoints = resultPage.getRecords();
SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List