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.plugins.pagination.Page;
import com.moral.api.entity.*;
import com.moral.api.mapper.*;
import com.moral.api.pojo.redisBean.SpecialDeviceInfoDTO;
import com.moral.api.pojo.vo.device.DeviceVO;
import com.moral.api.service.SpecialDeviceService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.util.AdjustDataUtils;
import com.moral.api.util.CacheUtils;
import com.moral.api.util.LogUtils;
import com.moral.constant.Constants;
import com.moral.constant.RedisConstants;
import com.moral.constant.ResponseCodeEnum;
import com.moral.util.DateUtils;
import org.springframework.beans.BeanUtils;
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.servlet.http.HttpServletRequest;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.*;
/**
*
* 服务实现类
*
*
* @author moral
* @since 2021-08-11
*/
@Service
public class SpecialDeviceServiceImpl extends ServiceImpl implements SpecialDeviceService {
@Autowired(required = false)
private SpecialDeviceMapper specialDeviceMapper;
@Autowired(required = false)
private ManageAccountMapper manageAccountMapper;
@Autowired(required = false)
private VersionMapper versionMapper;
@Autowired(required = false)
private SysDictDataMapper sysDictDataMapper;
@Autowired(required = false)
private SpecialDeviceHistoryMapper specialDeviceHistoryMapper;
@Autowired(required = false)
private OrganizationMapper organizationMapper;
@Autowired(required = false)
private RedisTemplate redisTemplate;
@Autowired(required = false)
private OrganizationUnitAlarmMapper organizationUnitAlarmMapper;
@Autowired(required = false)
private VersionSensorUnitMapper versionSensorUnitMapper;
@Autowired(required = false)
private GovMonitorPointMapper govMonitorPointMapper;
@Autowired
private AdjustDataUtils adjustDataUtils;
/*
* 从redis获取设备信息
* */
private SpecialDeviceInfoDTO getDeviceInfoFromRedis(String mac) {
return (SpecialDeviceInfoDTO) redisTemplate.opsForHash().get(RedisConstants.SPECIAL_DEVICE, mac);
}
/*
* 设备信息存入redis
*/
private void setDeviceInfoToRedis(String mac, SpecialDeviceInfoDTO specialDeviceInfoDTO) {
redisTemplate.opsForHash().put(RedisConstants.SPECIAL_DEVICE, mac, specialDeviceInfoDTO);
}
/*
* 从redis删除设备信息
*/
private void delDeviceInfoFromRedis(String mac) {
redisTemplate.opsForHash().delete(RedisConstants.SPECIAL_DEVICE, mac);
}
@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("organization_id"))){
wrapper_Condition.eq("organization_id",map.get("organization_id").toString());
}
if (!ObjectUtils.isEmpty(map.get("keyword"))){
wrapper_Condition.and(wc -> wc.like("name",map.get("keyword").toString()).or().like("mac",map.get("keyword").toString()));
//wrapper_Condition.like("name",map.get("keyword").toString()).or().like("mac",map.get("keyword").toString());
}
wrapper_Condition.orderByDesc("create_time");
Page resultPage = specialDeviceMapper.selectPage(page,wrapper_Condition);
int totalNumber = specialDeviceMapper.selectCount(wrapper_Condition);
List specialDevices = resultPage.getRecords();
SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List