| | |
| | | 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.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.pojo.dto.adjust.AdjustDTO; |
| | | import com.moral.api.pojo.form.adjust.AdjustForm; |
| | | 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.jdbc.object.UpdatableSqlQuery; |
| | | 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.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | |
| | | private DeviceMapper deviceMapper; |
| | | |
| | | @Autowired(required = false) |
| | | private SpecialDeviceMapper specialDeviceMapper; |
| | | |
| | | @Autowired(required = false) |
| | | private SensorMapper sensorMapper; |
| | | |
| | | @Autowired |
| | | LogUtils logUtils; |
| | | 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+";"; |
| | | logUtils.saveOperationForManage(request,content,Constants.INSERT_OPERATE_TYPE); |
| | | 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<String, Object> getDataByCondition(Map map) { |
| | | Map<String,Object> resultMap = new HashMap<>(); |
| | | int current = Integer.parseInt(map.get("current").toString()); |
| | | int size = Integer.parseInt(map.get("size").toString()); |
| | | Page<DeviceAdjustValue> page = new Page<>(current,size); |
| | | QueryWrapper<DeviceAdjustValue> 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<DeviceAdjustValue> deviceAdjustValues = resultPage.getRecords(); |
| | | List<Map<String,Object>> deviceAdjustValueList = new ArrayList<>(); |
| | | for (DeviceAdjustValue deviceAdjustValue:deviceAdjustValues) { |
| | | Map deviceAdjustValueMap = JSON.parseObject(JSON.toJSONString(deviceAdjustValue),Map.class); |
| | | Time startTime = new Time(Long.valueOf(Long.parseLong(deviceAdjustValueMap.get("startTime").toString()))); |
| | | deviceAdjustValueMap.put("startTime",new Time(startTime.getTime())); |
| | | Time endTime = new Time(Long.valueOf(Long.parseLong(deviceAdjustValueMap.get("endTime").toString()))); |
| | | deviceAdjustValueMap.put("endTime",new Time(endTime.getTime())); |
| | | deviceAdjustValueList.add(deviceAdjustValueMap); |
| | | } |
| | | resultMap.put("deviceAdjustValues",deviceAdjustValueList); |
| | | int totalNumber = deviceAdjustValueMapper.selectCount(wrapper_Condition); |
| | | resultMap.put("totalNumber",totalNumber); |
| | | resultMap.put("current",current); |
| | | resultMap.put("size",size); |
| | | int totalPageNumber = totalNumber/size; |
| | | if(totalNumber%size != 0){ |
| | | totalPageNumber += 1; |
| | | } |
| | | resultMap.put("totalPageNumber",totalPageNumber); |
| | | return resultMap; |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Object> updateOne(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; |
| | | } |
| | | DeviceAdjustValue deviceAdjustValueOld = deviceAdjustValueMapper.selectById(Integer.parseInt(map.get("id").toString())); |
| | | deviceAdjustValueMapper.updateDeviceAdjustValue(map); |
| | | //操作插入日志 |
| | | HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); |
| | | String content = "修改了"+deviceAdjustValueOld.getMac()+"设备"+deviceAdjustValueOld.getSensorCode()+"传感器的校准信息:"+";"; |
| | | for (Object key:map.keySet()) { |
| | | if (key.toString().equals("start_time")&&map.get(key)!=null){ |
| | | content = content+"开始时间:"+deviceAdjustValueOld.getStartTime()+"->"+map.get(key)+";"; |
| | | } |
| | | if (key.toString().equals("end_time")&&map.get(key)!=null){ |
| | | content = content+"结束时间:"+deviceAdjustValueOld.getEndTime()+"->"+map.get(key)+";"; |
| | | } |
| | | if (key.toString().equals("value")&&map.get(key)!=null){ |
| | | content = content+"校准公式:"+deviceAdjustValueOld.getValue()+"->"+map.get(key)+";"; |
| | | } |
| | | } |
| | | 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; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 批量修改校准值 |
| | | * |
| | | * @param parameters |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<Map<String, Object>> getAllAdjust(Map<String, Object> parameters) { |
| | | ArrayList<Map<String, Object>> rsList = new ArrayList<>(); |
| | | String code = parameters.get("code").toString(); |
| | | List<AdjustDTO> adjustDTOS = deviceAdjustValueMapper.selectAllAdjust(parameters); |
| | | for (AdjustDTO adjustDTO : adjustDTOS) { |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | String value = adjustDTO.getValue(); |
| | | if (ObjectUtils.isEmpty(value)){ |
| | | if (code.equals("a99054")){ |
| | | value ="cel*1"; |
| | | map.put("cel",1); |
| | | }else { |
| | | value ="aqi*0+cel*1"; |
| | | map.put("aqi",0); |
| | | map.put("cel",1); |
| | | } |
| | | }else { |
| | | if (code.equals("a99054")){ |
| | | String[] split = value.split("\\*"); |
| | | map.put("cel",Double.parseDouble(split[1])); |
| | | }else { |
| | | String[] split = value.split("\\+"); |
| | | String[] split1 = split[0].toString().split("\\*"); |
| | | map.put("aqi",Double.parseDouble(split1[1])); |
| | | String[] split2 = split[1].toString().split("\\*"); |
| | | map.put("cel",Double.parseDouble(split2[1])); |
| | | } |
| | | } |
| | | map.put("value",value); |
| | | map.put("name",adjustDTO.getName()); |
| | | map.put("id",adjustDTO.getId()); |
| | | map.put("mac",adjustDTO.getMac()); |
| | | map.put("code",code); |
| | | rsList.add(map); |
| | | } |
| | | return rsList; |
| | | } |
| | | |
| | | /** |
| | | * 批量修改校准值 |
| | | * |
| | | * @param paras |
| | | * @return |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | public Map<String, Object> updateAllAdjust(List<AdjustForm> paras) { |
| | | Map<String,Object> resultMap = new HashMap<>(); |
| | | for (AdjustForm adjustForm : paras) { |
| | | DeviceAdjustValue deviceAdjustValue = new DeviceAdjustValue(); |
| | | QueryWrapper<DeviceAdjustValue> wrapper1 = new QueryWrapper<>(); |
| | | wrapper1.eq("mac",adjustForm.getMac()); |
| | | wrapper1.eq ("sensor_code",adjustForm.getCode()); |
| | | Integer integer = deviceAdjustValueMapper.selectCount(wrapper1); |
| | | if (integer==0){ |
| | | deviceAdjustValue.setValue(adjustForm.getAgehou()); |
| | | deviceAdjustValue.setCreateTime(new Date()); |
| | | deviceAdjustValue.setIsDelete("0"); |
| | | deviceAdjustValue.setUpdateTime(new Date()); |
| | | deviceAdjustValue.setSensorCode(adjustForm.getCode()); |
| | | deviceAdjustValue.setMac(adjustForm.getMac()); |
| | | deviceAdjustValue.setEndTime(Time.valueOf("23:59:00")); |
| | | deviceAdjustValue.setStartTime(Time.valueOf("00:00:00")); |
| | | deviceAdjustValueMapper.insert(deviceAdjustValue); |
| | | }else { |
| | | deviceAdjustValue.setValue(adjustForm.getAgehou()); |
| | | deviceAdjustValue.setUpdateTime(new Date()); |
| | | deviceAdjustValue.setId(adjustForm.getId()); |
| | | deviceAdjustValueMapper.updateById(deviceAdjustValue); |
| | | } |
| | | //刷新缓存 |
| | | refreshCache(adjustForm.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); |
| | | } |
| | | } |
| | | |
| | | } |