package com.ruoyi.quartz.task; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.fuzhou.domain.*; import com.ruoyi.fuzhou.service.*; import com.ruoyi.fuzhou.utils.AnalyseUtils; import jakarta.annotation.Resource; import org.springframework.stereotype.Component; import java.util.Calendar; import java.util.Date; import java.util.List; /** * 数据清洗 * * @author ruoyi */ @Component("electricityAnalyseTask") public class ElectricityAnalyseTask { @Resource private ReceiveElectricityAnalyseService receiveElectricityAnalyseService; @Resource private ReceiveElectricityValueService receiveElectricityValueService; @Resource private ReceiveWaterValueService receiveWaterValueService; @Resource private ReceiveWaterAnalyseService receiveWaterAnalyseService; @Resource private ReceiveOilAnalyseService receiveOilAnalyseService; @Resource private ReceiveOilValueService receiveOilValueService; @Resource private ReceiveSelectRuleService receiveSelectRuleService; public void electricity() { electricityAnalyse("", -480, "电数据清洗"); } public void electricityAnalyse(String deviceName, Integer hour, String rule) { List list = receiveSelectRuleService.list(new LambdaQueryWrapper() {{ or().eq(ReceiveSelectRule::getRuleName, rule); }}); if (list == null || list.size() == 0) { throw new ServiceException("规则不存在!"); } JSONArray jsonArray = new JSONArray(); for (ReceiveSelectRule r : list ) { JSONObject jsonObject = new JSONObject(); jsonObject.put("param", r.getParam()); jsonObject.put("rule", r.getRule()); jsonObject.put("value", r.getValue().toString()); jsonArray.add(jsonObject); } Calendar cal = Calendar.getInstance(); cal.add(Calendar.HOUR_OF_DAY, hour); Date date = cal.getTime(); List receiveElectricityValues = receiveElectricityValueService.list(new LambdaQueryWrapper() {{ or().like(!"NONE".equals(deviceName), ReceiveElectricityValue::getDeviceName, deviceName).ge(ReceiveElectricityValue::getCreateTime, date); }}); if (receiveElectricityValues.size() > 0) { JSONArray array = AnalyseUtils.listToJSONArray(receiveElectricityValues, jsonArray.toString()); if (array.size() > 0) { List receiveElectricityAnalyses = array.toJavaList(ReceiveElectricityAnalyse.class); receiveElectricityAnalyseService.saveOrUpdateBatch(receiveElectricityAnalyses); } } } public void waterAnalyse(String deviceName, int hour, String rule) { List list = receiveSelectRuleService.list(new LambdaQueryWrapper() {{ or().eq(ReceiveSelectRule::getRuleName, rule); }}); if (list == null || list.size() == 0) { throw new ServiceException("规则不存在!"); } JSONArray jsonArray = new JSONArray(); for (ReceiveSelectRule r : list ) { JSONObject jsonObject = new JSONObject(); jsonObject.put("param", r.getParam()); jsonObject.put("rule", r.getRule()); jsonObject.put("value", r.getValue().toString()); jsonArray.add(jsonObject); } Calendar cal = Calendar.getInstance(); cal.add(Calendar.HOUR_OF_DAY, hour); Date date = cal.getTime(); List receiveWaterValues = receiveWaterValueService.list(new LambdaQueryWrapper() {{ or().like(StringUtils.isNotEmpty(deviceName), ReceiveWaterValue::getDeviceName, deviceName).ge(ReceiveWaterValue::getCreateTime, date); }}); if (receiveWaterValues.size() > 0) { JSONArray array = AnalyseUtils.listToJSONArray(receiveWaterValues, jsonArray.toString()); if (array.size() > 0) { List waterAnalyseList = array.toJavaList(ReceiveWaterAnalyse.class); receiveWaterAnalyseService.saveOrUpdateBatch(waterAnalyseList); } } } public void oilAnalyse(String deviceName, int hour, String rule) { List list = receiveSelectRuleService.list(new LambdaQueryWrapper() {{ or().eq(ReceiveSelectRule::getRuleName, rule); }}); if (list == null || list.size() == 0) { throw new ServiceException("规则不存在!"); } JSONArray jsonArray = new JSONArray(); for (ReceiveSelectRule r : list ) { JSONObject jsonObject = new JSONObject(); jsonObject.put("param", r.getParam()); jsonObject.put("rule", r.getRule()); jsonObject.put("value", r.getValue().toString()); jsonArray.add(jsonObject); } Calendar cal = Calendar.getInstance(); cal.add(Calendar.HOUR_OF_DAY, hour); Date date = cal.getTime(); List receiveOilValues = receiveOilValueService.list(new LambdaQueryWrapper() {{ or().like(StringUtils.isNotEmpty(deviceName), ReceiveOilValue::getDeviceName, deviceName).ge(ReceiveOilValue::getCreateTime, date); }}); if (receiveOilValues.size() > 0) { JSONArray array = AnalyseUtils.listToJSONArray(receiveOilValues, jsonArray.toString()); if (array.size() > 0) { List oilAnalyseList = array.toJavaList(ReceiveOilAnalyse.class); receiveOilAnalyseService.saveOrUpdateBatch(oilAnalyseList); } } } }