package com.moral.api.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.moral.api.entity.Device;
import com.moral.api.entity.DeviceAdjustValue;
import com.moral.api.entity.Sensor;
import com.moral.api.entity.SpecialDevice;
import com.moral.api.mapper.DeviceAdjustValueMapper;
import com.moral.api.mapper.DeviceMapper;
import com.moral.api.mapper.SensorMapper;
import com.moral.api.mapper.SpecialDeviceMapper;
import com.moral.api.service.DeviceAdjustValueService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.util.LogUtils;
import com.moral.constant.Constants;
import com.moral.constant.ResponseCodeEnum;
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.sql.Time;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* 服务实现类
*
*
* @author moral
* @since 2021-06-07
*/
@Service
public class DeviceAdjustValueServiceImpl extends ServiceImpl implements DeviceAdjustValueService {
@Autowired(required = false)
private DeviceAdjustValueMapper deviceAdjustValueMapper;
@Autowired(required = false)
private DeviceMapper deviceMapper;
@Autowired(required = false)
private SpecialDeviceMapper specialDeviceMapper;
@Autowired(required = false)
private SensorMapper sensorMapper;
@Autowired
RedisTemplate redisTemplate;
@Override
@Transactional
public Map insertOne(DeviceAdjustValue deviceAdjustValue) {
Map resultMap = new HashMap<>();
if (ObjectUtils.isEmpty(deviceAdjustValue.getMac())){
resultMap.put("code",ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode());
resultMap.put("msg",ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
return resultMap;
}
if (ObjectUtils.isEmpty(deviceAdjustValue.getValue())||deviceAdjustValue.getValue().equals("")){
resultMap.put("code",ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode());
resultMap.put("msg",ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
return resultMap;
}
QueryWrapper wrapper_device = new QueryWrapper<>();
wrapper_device.eq("is_delete",Constants.NOT_DELETE);
wrapper_device.eq("mac",deviceAdjustValue.getMac());
QueryWrapper wrapper_specialDevice = new QueryWrapper<>();
wrapper_specialDevice.eq("is_delete",Constants.NOT_DELETE);
wrapper_specialDevice.eq("mac",deviceAdjustValue.getMac());
if (deviceMapper.selectCount(wrapper_device)==0 && specialDeviceMapper.selectCount(wrapper_specialDevice)==0){
resultMap.put("code",ResponseCodeEnum.DEVICE_IS_NULL.getCode());
resultMap.put("msg",ResponseCodeEnum.DEVICE_IS_NULL.getMsg());
return resultMap;
}
QueryWrapper wrapper_sensor = new QueryWrapper<>();
wrapper_sensor.eq("is_delete",Constants.NOT_DELETE);
wrapper_sensor.eq("code",deviceAdjustValue.getSensorCode());
if (sensorMapper.selectCount(wrapper_sensor)==0){
resultMap.put("code",ResponseCodeEnum.SENSOR_IS_NOT_EXIST.getCode());
resultMap.put("msg",ResponseCodeEnum.SENSOR_IS_NOT_EXIST.getMsg());
return resultMap;
}
deviceAdjustValueMapper.insert(deviceAdjustValue);
//操作插入日志
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String content = "添加了"+deviceAdjustValue.getMac()+"设备"+deviceAdjustValue.getSensorCode()+"传感器"+deviceAdjustValue.getStartTime()+"到"+deviceAdjustValue.getEndTime()+"的校准信息:"+";";
LogUtils.saveOperationForManage(request,content,Constants.INSERT_OPERATE_TYPE);
//刷新缓存
refreshCache(deviceAdjustValue.getMac());
resultMap.put("code", ResponseCodeEnum.SUCCESS.getCode());
resultMap.put("msg", ResponseCodeEnum.SUCCESS.getMsg());
return resultMap;
}
@Override
public Map getDataByCondition(Map map) {
Map resultMap = new HashMap<>();
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("mac"))){
wrapper_Condition.eq("mac",map.get("mac"));
}
if (!ObjectUtils.isEmpty(map.get("sensor_code"))){
wrapper_Condition.eq("sensor_code",map.get("sensor_code"));
}
if (!ObjectUtils.isEmpty(map.get("orderType"))){
String orderType = map.get("orderType").toString();
if (orderType.equals(Constants.ORDER_ASC)){
wrapper_Condition.orderByAsc("start_time");
}else {
wrapper_Condition.orderByDesc("start_time");
}
}
Page resultPage = deviceAdjustValueMapper.selectPage(page,wrapper_Condition);
List deviceAdjustValues = resultPage.getRecords();
List