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<ReceiveSelectRule> list = receiveSelectRuleService.list(new LambdaQueryWrapper<ReceiveSelectRule>() {{
|
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<ReceiveElectricityValue> receiveElectricityValues = receiveElectricityValueService.list(new LambdaQueryWrapper<ReceiveElectricityValue>() {{
|
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<ReceiveElectricityAnalyse> receiveElectricityAnalyses = array.toJavaList(ReceiveElectricityAnalyse.class);
|
receiveElectricityAnalyseService.saveOrUpdateBatch(receiveElectricityAnalyses);
|
}
|
}
|
}
|
|
public void waterAnalyse(String deviceName, int hour, String rule) {
|
List<ReceiveSelectRule> list = receiveSelectRuleService.list(new LambdaQueryWrapper<ReceiveSelectRule>() {{
|
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<ReceiveWaterValue> receiveWaterValues = receiveWaterValueService.list(new LambdaQueryWrapper<ReceiveWaterValue>() {{
|
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<ReceiveWaterAnalyse> waterAnalyseList = array.toJavaList(ReceiveWaterAnalyse.class);
|
receiveWaterAnalyseService.saveOrUpdateBatch(waterAnalyseList);
|
}
|
}
|
}
|
|
public void oilAnalyse(String deviceName, int hour, String rule) {
|
List<ReceiveSelectRule> list = receiveSelectRuleService.list(new LambdaQueryWrapper<ReceiveSelectRule>() {{
|
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<ReceiveOilValue> receiveOilValues = receiveOilValueService.list(new LambdaQueryWrapper<ReceiveOilValue>() {{
|
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<ReceiveOilAnalyse> oilAnalyseList = array.toJavaList(ReceiveOilAnalyse.class);
|
receiveOilAnalyseService.saveOrUpdateBatch(oilAnalyseList);
|
}
|
}
|
}
|
|
|
}
|