|  |  | 
 |  |  | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; | 
 |  |  | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
 |  |  | import com.moral.api.config.mybatis.wrapper.NullFilterWrapper; | 
 |  |  | import com.moral.api.entity.Sensor; | 
 |  |  | import com.moral.api.entity.SysDictData; | 
 |  |  | import com.moral.api.entity.UnitConversion; | 
 |  |  | import com.moral.api.mapper.UnitConversionMapper; | 
 |  |  | 
 |  |  | import com.moral.api.pojo.form.unitConversion.UnitConversionInsertForm; | 
 |  |  | import com.moral.api.pojo.form.unitConversion.UnitConversionQueryForm; | 
 |  |  | import com.moral.api.pojo.form.unitConversion.UnitConversionUpdateForm; | 
 |  |  | import com.moral.api.service.SensorService; | 
 |  |  | import com.moral.api.service.SysDictDataService; | 
 |  |  | import com.moral.api.service.UnitConversionService; | 
 |  |  | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
 |  |  | 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; | 
 |  |  | 
 |  |  |     SysDictDataService sysDictDataService; | 
 |  |  |     @Autowired | 
 |  |  |     RedisTemplate redisTemplate; | 
 |  |  |     @Autowired | 
 |  |  |     SensorService sensorService; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  | 
 |  |  |         unitConversionMapper.insert(unitConversion); | 
 |  |  |         //刷新缓存 | 
 |  |  |         refreshCache(); | 
 |  |  |         //插入日志 | 
 |  |  |         insertLog(unitConversion); | 
 |  |  |         //封装返回数据 | 
 |  |  |         dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); | 
 |  |  |         dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); | 
 |  |  | 
 |  |  |         unitConversionMapper.updateById(unitConversion); | 
 |  |  |         //刷新缓存 | 
 |  |  |         refreshCache(); | 
 |  |  |         //操作插入日志 | 
 |  |  |         updateLog(oldUnitConversion,form.getFormula()); | 
 |  |  |         //封装返回结果 | 
 |  |  |         dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); | 
 |  |  |         dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public UnitConversionDTO deleteUnitConversion(UnitConversionDeleteForm form) { | 
 |  |  |         //创建返回对象 | 
 |  |  |         UnitConversionDTO dto = new UnitConversionDTO(); | 
 |  |  | 
 |  |  |         unitConversionMapper.update(null, deleteWrapper); | 
 |  |  |         //刷新缓存 | 
 |  |  |         refreshCache(); | 
 |  |  |         //操作插入日志 | 
 |  |  |         deleteLog(oldUnitConversion); | 
 |  |  |         //封装返回对象 | 
 |  |  |         dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); | 
 |  |  |         dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); | 
 |  |  | 
 |  |  |     /*刷新缓存*/ | 
 |  |  |     @Override | 
 |  |  |     public void refreshCache(){ | 
 |  |  |         //刷新设备缓存 | 
 |  |  |         CacheUtils.refreshDeviceAlarmInfo(); | 
 |  |  |         redisTemplate.delete((RedisConstants.UNIT_CONVERSION)); | 
 |  |  |         QueryWrapper<UnitConversion> queryWrapper = new QueryWrapper<>(); | 
 |  |  |         queryWrapper.eq("is_delete",Constants.NOT_DELETE); | 
 |  |  |         List<UnitConversion> unitConversions = unitConversionMapper.selectList(queryWrapper); | 
 |  |  |         redisTemplate.opsForList().leftPushAll(RedisConstants.UNIT_CONVERSION,unitConversions); | 
 |  |  |         if(!ObjectUtils.isEmpty(unitConversions)) | 
 |  |  |             redisTemplate.opsForList().leftPushAll(RedisConstants.UNIT_CONVERSION,unitConversions); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |     * @Description: 插入操作插入日志 | 
 |  |  |             * @Param: [unitConversion] | 
 |  |  |             * @return: void | 
 |  |  |             * @Author: 陈凯裕 | 
 |  |  |             * @Date: 2021/8/26 | 
 |  |  |             */ | 
 |  |  |     private void insertLog(UnitConversion unitConversion){ | 
 |  |  |         //获取单位字典数据 | 
 |  |  |         Map<String, SysDictData> units = sysDictDataService.getDictDatasByType("unit"); | 
 |  |  |         String originalUnitKey = unitConversion.getOriginalUnitKey(); | 
 |  |  |         String targetUnitKey = unitConversion.getTargetUnitKey(); | 
 |  |  |         SysDictData originalData = units.get(originalUnitKey); | 
 |  |  |         SysDictData targetData = units.get(targetUnitKey); | 
 |  |  |         String formula = unitConversion.getFormula(); | 
 |  |  |         //公式转换格式 | 
 |  |  |         formula = formula.replace(Constants.FORMULA_PLACEHOLDER, "源单位"); | 
 |  |  |         formula = "目标单位"+" = "+formula; | 
 |  |  |         String sensorCode = unitConversion.getSensorCode(); | 
 |  |  |         StringBuilder content = new StringBuilder(); | 
 |  |  |         content.append("添加了单位转换数据;"); | 
 |  |  |         content.append("源单位:"+originalData.getDataValue()+";"); | 
 |  |  |         content.append("目标单位:"+targetData.getDataValue()+";"); | 
 |  |  |         content.append("转换公式:"+formula+";"); | 
 |  |  |         if(sensorCode!=null){ | 
 |  |  |             Sensor sensor = sensorService.getSensorByCode(sensorCode); | 
 |  |  |             if(sensor!=null) | 
 |  |  |                 content.append("针对因子:"+sensor.getName()+";"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         LogUtils.saveOperationForManage(content.toString(),Constants.INSERT_OPERATE_TYPE); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |     * @Description: 删除操作插入日志 | 
 |  |  |             * @Param: [unitConversion] | 
 |  |  |             * @return: void | 
 |  |  |             * @Author: 陈凯裕 | 
 |  |  |             * @Date: 2021/8/26 | 
 |  |  |             */ | 
 |  |  |     private void deleteLog(UnitConversion unitConversion){ | 
 |  |  |         //获取单位字典数据 源单位 目标单位名称 | 
 |  |  |         Map<String, SysDictData> units = sysDictDataService.getDictDatasByType("unit"); | 
 |  |  |         String originalUnitKey = unitConversion.getOriginalUnitKey(); | 
 |  |  |         String targetUnitKey = unitConversion.getTargetUnitKey(); | 
 |  |  |         SysDictData originalData = units.get(originalUnitKey); | 
 |  |  |         SysDictData targetData = units.get(targetUnitKey); | 
 |  |  |         //公式转换格式 | 
 |  |  |         String formula = unitConversion.getFormula(); | 
 |  |  |         formula = formula.replace(Constants.FORMULA_PLACEHOLDER, "源单位"); | 
 |  |  |         formula = "目标单位"+" = "+formula; | 
 |  |  |  | 
 |  |  |         StringBuilder content = new StringBuilder("删除了转换公式;"); | 
 |  |  |         content.append("源单位:"+originalData.getDataValue()+";"); | 
 |  |  |         content.append("目标单位:"+targetData.getDataValue()+";"); | 
 |  |  |         content.append("转换公式:"+formula+";"); | 
 |  |  |         //如果有针对因子则获取针对因子名称 | 
 |  |  |         String sensorCode = unitConversion.getSensorCode(); | 
 |  |  |         if(sensorCode!=null){ | 
 |  |  |             Sensor sensor = sensorService.getSensorByCode(sensorCode); | 
 |  |  |             if(sensor!=null) | 
 |  |  |                 content.append("针对因子:"+sensor.getName()+";"); | 
 |  |  |         } | 
 |  |  |         LogUtils.saveOperationForManage(content.toString(),Constants.DELETE_OPERATE_TYPE); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |     * @Description: 更新操作插入日志 | 
 |  |  |             * @Param: [unitConversion] | 
 |  |  |             * @return: void | 
 |  |  |             * @Author: 陈凯裕 | 
 |  |  |             * @Date: 2021/8/26 | 
 |  |  |             */ | 
 |  |  |     private void updateLog(UnitConversion oldUnitConversion,String newFormular){ | 
 |  |  |         StringBuilder content = new StringBuilder("修改了单位转换公式;"); | 
 |  |  |         //获取单位字典数据 源单位 目标单位名称 | 
 |  |  |         Map<String, SysDictData> units = sysDictDataService.getDictDatasByType("unit"); | 
 |  |  |         String originalUnitKey = oldUnitConversion.getOriginalUnitKey(); | 
 |  |  |         String targetUnitKey = oldUnitConversion.getTargetUnitKey(); | 
 |  |  |         SysDictData originalData = units.get(originalUnitKey); | 
 |  |  |         SysDictData targetData = units.get(targetUnitKey); | 
 |  |  |         //新公式转换格式 | 
 |  |  |         newFormular = newFormular.replace(Constants.FORMULA_PLACEHOLDER, "源单位"); | 
 |  |  |         newFormular = "目标单位"+" = "+newFormular; | 
 |  |  |         //旧公式转换 | 
 |  |  |         String oldFormula = oldUnitConversion.getFormula(); | 
 |  |  |         oldFormula = oldFormula.replace(Constants.FORMULA_PLACEHOLDER, "源单位"); | 
 |  |  |         oldFormula = "目标单位"+" = "+oldFormula; | 
 |  |  |  | 
 |  |  |         content.append("源单位:"+originalData.getDataValue()+";"); | 
 |  |  |         content.append("目标单位:"+targetData.getDataValue()+";"); | 
 |  |  |         content.append("转换公式:"+oldFormula+"->"+newFormular+";"); | 
 |  |  |         //如果有针对因子则获取针对因子名称 | 
 |  |  |         String sensorCode = oldUnitConversion.getSensorCode(); | 
 |  |  |         if(sensorCode!=null){ | 
 |  |  |             Sensor sensor = sensorService.getSensorByCode(sensorCode); | 
 |  |  |             if(sensor!=null) | 
 |  |  |                 content.append("针对因子:"+sensor.getName()+";"); | 
 |  |  |         } | 
 |  |  |         LogUtils.saveOperationForManage(content.toString(),Constants.UPDATE_OPERATE_TYPE); | 
 |  |  |     } | 
 |  |  | } |