|  |  | 
 |  |  | 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; | 
 |  |  | 
 |  |  |     private DeviceMapper deviceMapper; | 
 |  |  |  | 
 |  |  |     @Autowired(required = false) | 
 |  |  |     private SpecialDeviceMapper specialDeviceMapper; | 
 |  |  |  | 
 |  |  |     @Autowired(required = false) | 
 |  |  |     private SensorMapper sensorMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     LogUtils logUtils; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     RedisTemplate redisTemplate; | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  | 
 |  |  |         QueryWrapper<Device> wrapper_device = new QueryWrapper<>(); | 
 |  |  |         wrapper_device.eq("is_delete",Constants.NOT_DELETE); | 
 |  |  |         wrapper_device.eq("mac",deviceAdjustValue.getMac()); | 
 |  |  |         if (deviceMapper.selectCount(wrapper_device)==0){ | 
 |  |  |         QueryWrapper<SpecialDevice> 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; | 
 |  |  | 
 |  |  |         deviceAdjustValueMapper.insert(deviceAdjustValue); | 
 |  |  |         //操作插入日志 | 
 |  |  |         HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | 
 |  |  |         String content = "添加校准值:"+deviceAdjustValue+";"; | 
 |  |  |         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; | 
 |  |  | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         logUtils.saveOperationForManage(request,content,Constants.UPDATE_OPERATE_TYPE); | 
 |  |  |         //刷新缓存 | 
 |  |  |         refreshCache(deviceAdjustValueOld.getMac()); | 
 |  |  |         resultMap.put("code",ResponseCodeEnum.SUCCESS.getCode()); | 
 |  |  |         resultMap.put("msg",ResponseCodeEnum.SUCCESS.getMsg()); | 
 |  |  |         return resultMap; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public Map<String, Object> deleteOne(Map map) { | 
 |  |  |         Map<String,Object> resultMap = new HashMap<>(); | 
 |  |  |         if (ObjectUtils.isEmpty(map.get("id"))||map.get("id").equals("")){ | 
 |  |  |             resultMap.put("code",ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode()); | 
 |  |  |             resultMap.put("msg",ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); | 
 |  |  |             return resultMap; | 
 |  |  |         } | 
 |  |  |         QueryWrapper<DeviceAdjustValue> wrapper = new QueryWrapper<>(); | 
 |  |  |         wrapper.eq("is_delete",Constants.NOT_DELETE); | 
 |  |  |         wrapper.eq("id",map.get("id")); | 
 |  |  |         DeviceAdjustValue deviceAdjustValue = deviceAdjustValueMapper.selectOne(wrapper); | 
 |  |  |         if (ObjectUtils.isEmpty(deviceAdjustValue)){ | 
 |  |  |             resultMap.put("code",ResponseCodeEnum.TARGET_IS_NULL.getCode()); | 
 |  |  |             resultMap.put("msg",ResponseCodeEnum.TARGET_IS_NULL.getMsg()); | 
 |  |  |             return resultMap; | 
 |  |  |         } | 
 |  |  |         Map<String,Object> deleteMap = new HashMap<>(); | 
 |  |  |         deleteMap.put("id",map.get("id")); | 
 |  |  |         deleteMap.put("is_delete",Constants.DELETE); | 
 |  |  |         deviceAdjustValueMapper.updateDeviceAdjustValue(deleteMap); | 
 |  |  |         //操作插入日志 | 
 |  |  |         HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | 
 |  |  |         String content = "删除了"+deviceAdjustValue.getMac()+"设备"+deviceAdjustValue.getSensorCode()+"传感器"+deviceAdjustValue.getStartTime()+"到"+deviceAdjustValue.getEndTime()+"的校准信息:"+";"; | 
 |  |  |         logUtils.saveOperationForManage(request,content,Constants.DELETE_OPERATE_TYPE); | 
 |  |  |         //刷新缓存 | 
 |  |  |         refreshCache(deviceAdjustValue.getMac()); | 
 |  |  |         resultMap.put("code",ResponseCodeEnum.SUCCESS.getCode()); | 
 |  |  |         resultMap.put("msg",ResponseCodeEnum.SUCCESS.getMsg()); | 
 |  |  |         return resultMap; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public Map<String, Object> getTimeSlot(Map map) { | 
 |  |  |         Map<String,Object> resultMap = new HashMap<>(); | 
 |  |  |         if (ObjectUtils.isEmpty(map.get("sensor_code"))||map.get("sensor_code").equals("")){ | 
 |  |  |             resultMap.put("code",ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode()); | 
 |  |  |             resultMap.put("msg",ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); | 
 |  |  |             return resultMap; | 
 |  |  |         } | 
 |  |  |         if (ObjectUtils.isEmpty(map.get("mac"))||map.get("mac").equals("")){ | 
 |  |  |             resultMap.put("code",ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode()); | 
 |  |  |             resultMap.put("msg",ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); | 
 |  |  |             return resultMap; | 
 |  |  |         } | 
 |  |  |         QueryWrapper<DeviceAdjustValue> wrapper = new QueryWrapper<>(); | 
 |  |  |         wrapper.eq("is_delete",Constants.NOT_DELETE); | 
 |  |  |         wrapper.eq("sensor_code",map.get("sensor_code")); | 
 |  |  |         wrapper.eq("mac",map.get("mac")); | 
 |  |  |         List<DeviceAdjustValue> deviceAdjustValues = deviceAdjustValueMapper.selectList(wrapper); | 
 |  |  |         List<Map<String,Object>> timeSlotList = new ArrayList<>(); | 
 |  |  |         if (deviceAdjustValues.size()==0){ | 
 |  |  |             resultMap.put("timeSlotList",timeSlotList); | 
 |  |  |             return resultMap; | 
 |  |  |         } | 
 |  |  |         for (DeviceAdjustValue deviceAdjustValue:deviceAdjustValues) { | 
 |  |  |             Map timeSlotMap = new HashMap(); | 
 |  |  |             timeSlotMap.put("id",deviceAdjustValue.getId()); | 
 |  |  |             timeSlotMap.put("startTime",deviceAdjustValue.getStartTime()); | 
 |  |  |             timeSlotMap.put("endTime",deviceAdjustValue.getEndTime()); | 
 |  |  |             timeSlotList.add(timeSlotMap); | 
 |  |  |         } | 
 |  |  |         resultMap.put("timeSlotList",timeSlotList); | 
 |  |  |         return resultMap; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public Map<String, Object> refreshRedis() { | 
 |  |  |         Map<String,Object> resultMap = new HashMap<>(); | 
 |  |  |         QueryWrapper<DeviceAdjustValue> wrapper_mac = new QueryWrapper<>(); | 
 |  |  |         wrapper_mac.eq("is_delete",Constants.NOT_DELETE); | 
 |  |  |         wrapper_mac.select("DISTINCT mac"); | 
 |  |  |         List<DeviceAdjustValue> deviceAdjustValues = deviceAdjustValueMapper.selectList(wrapper_mac); | 
 |  |  |         for (DeviceAdjustValue deviceAdjustValue:deviceAdjustValues) { | 
 |  |  |             //刷新缓存 | 
 |  |  |             refreshCache(deviceAdjustValue.getMac()); | 
 |  |  |         } | 
 |  |  |         resultMap.put("code",ResponseCodeEnum.SUCCESS.getCode()); | 
 |  |  |         resultMap.put("msg",ResponseCodeEnum.SUCCESS.getMsg()); | 
 |  |  |         return resultMap; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public void refreshRedisAll(){ | 
 |  |  |         refreshRedis(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private Map<String,Object> getDeviceAdjustValueFromDB(String mac){ | 
 |  |  |         QueryWrapper<DeviceAdjustValue> wapper_redis = new QueryWrapper<>(); | 
 |  |  |         wapper_redis.eq("mac",mac); | 
 |  |  |         wapper_redis.eq("is_delete",Constants.NOT_DELETE); | 
 |  |  |         List<DeviceAdjustValue> deviceAdjustValueList = deviceAdjustValueMapper.selectList(wapper_redis); | 
 |  |  |         if (deviceAdjustValueList.size()==0){ | 
 |  |  |             return null; | 
 |  |  |         } | 
 |  |  |         Map<String, Object> deviceAdjustValueMap = new HashMap<>(); | 
 |  |  |         for (DeviceAdjustValue deviceAdjustValue:deviceAdjustValueList) { | 
 |  |  |             String sensor_code = deviceAdjustValue.getSensorCode(); | 
 |  |  |             List<DeviceAdjustValue> timeSlotValueList = new ArrayList<>(); | 
 |  |  |             for (DeviceAdjustValue deviceAdjustValueIn:deviceAdjustValueList) { | 
 |  |  |                 if (deviceAdjustValueIn.getSensorCode().equals(sensor_code)){ | 
 |  |  |                     Map<String, Object> timeSlot_value = new HashMap<>(); | 
 |  |  |                     timeSlot_value.put("start_time",deviceAdjustValue.getStartTime()); | 
 |  |  |                     timeSlot_value.put("end_time",deviceAdjustValue.getEndTime()); | 
 |  |  |                     timeSlot_value.put("value",deviceAdjustValue.getValue()); | 
 |  |  |                     timeSlotValueList.add(deviceAdjustValueIn); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             deviceAdjustValueMap.put(sensor_code,timeSlotValueList); | 
 |  |  |         } | 
 |  |  |         return deviceAdjustValueMap; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private void refreshCache(String mac){ | 
 |  |  |         Map<String, Object> deviceAdjustValueMap = getDeviceAdjustValueFromDB(mac); | 
 |  |  |         refreshCache(deviceAdjustValueMap,mac); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private void refreshCache(Map<String,Object> deviceAdjustValueMap,String mac){ | 
 |  |  |         //删除缓存 | 
 |  |  |         redisTemplate.delete("adjust_"+mac); | 
 |  |  |         //添加缓存 | 
 |  |  |         if (!ObjectUtils.isEmpty(deviceAdjustValueMap)){ | 
 |  |  |             redisTemplate.opsForHash().putAll("adjust_"+mac,deviceAdjustValueMap); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |