package com.zhgd.jeecg; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.zhgd.xmgl.modules.foundation.entity.DeepExcavationCurrentData; import com.zhgd.xmgl.modules.foundation.entity.DeepExcavationSensor; import com.zhgd.xmgl.modules.foundation.enums.DataStatusEnum; import com.zhgd.xmgl.modules.foundation.service.DeepExcavationSensorService; import com.zhgd.xmgl.modules.foundation.service.IDeepExcavationCurrentDataService; import com.zhgd.xmgl.task.DevExcavationTask; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; /** * @author 邱平毅 * @ClassName DeepTest * @date 2022/9/22 18:06 * @Version 1.0 */ @SpringBootTest @RunWith(SpringRunner.class) public class DeepTest { @Autowired DeepExcavationSensorService deepExcavationSensorService; @Autowired IDeepExcavationCurrentDataService deepExcavationCurrentDataService; /** * 生成监测类型 */ @Test public void monitorTypeGenerate() { String sensorSn = "21830"; List dataList = deepExcavationCurrentDataService.list(Wrappers.lambdaQuery() .eq(DeepExcavationCurrentData::getSensorSn, sensorSn).ge(DeepExcavationCurrentData::getReceiveTime, "2022-09-27 17:59:05")); // String receiveTime = "0001-01-01 01:01:01"; Map> dateAndDataMap = dataList.stream().collect(Collectors.groupingBy(DeepExcavationCurrentData::getReceiveTime)); // // int size = 0; // Set>> entrySet = dateAndDataMap.entrySet(); // for (Map.Entry> entry : entrySet) { // int valueSize = entry.getValue().size(); // if (valueSize > size && entry.getKey() != null && DateUtil.parse(entry.getKey(), DatePattern.NORM_DATETIME_PATTERN).getTime() >= DateUtil.parse(receiveTime, DatePattern.NORM_DATETIME_PATTERN).getTime()) { // receiveTime = entry.getKey(); // size = valueSize; // } // } // log.info("数量最多的一次为:" + receiveTime); // log.info(dateAndDataMap); // // // List deepExcavationCurrentDataList = dateAndDataMap.get(receiveTime); // List sensorList = new LinkedList<>(); // // DeepExcavationSensor sensor = deepExcavationSensorService.getOne(Wrappers.lambdaQuery().eq(DeepExcavationSensor::getSensorSn, sensorSn)); // // log.info(); // for (int index = 1; index < deepExcavationCurrentDataList.size(); index++) { // DeepExcavationCurrentData data = deepExcavationCurrentDataList.get(index); // sensorList.add(new DeepExcavationSensor(sensorSn + "(" + (index + 1) + ")", sensor, data)); // } // // // log.info(sensorList); List newDataList = new LinkedList<>(); // deepExcavationSensorService.saveBatch(sensorList) for (Map.Entry> dateAndData : entrySet) { List value = dateAndData.getValue().stream().sorted(Comparator.comparing(DeepExcavationCurrentData::getId)).collect(Collectors.toList()); for (int index = 0; index < value.size(); index++) { value.get(index).setSensorSn(sensorSn + (index > 0 ? "(" + (index + 1) + ")" : "")); newDataList.add(value.get(index)); } } // deepExcavationCurrentDataService.updateBatchById(newDataList); System.out.println(newDataList); } /** * 生成监测类型 */ @Test public void deepStatus() { List allList = deepExcavationCurrentDataService.list(Wrappers.lambdaQuery().ge(DeepExcavationCurrentData::getReceiveTime, "2022-09-27 18:10:36")); List sensorList = deepExcavationSensorService.list(); Map sensorMap = sensorList.stream().collect(Collectors.toMap(DeepExcavationSensor::getSensorSn, Function.identity())); for (DeepExcavationCurrentData data : allList) { String sensorSn = data.getSensorSn(); Float rateAlarmValue = sensorMap.get(sensorSn).getRateAlarmValue(); Float alarmValue = sensorMap.get(sensorSn).getAlarmValue(); if (rateAlarmValue == null || alarmValue == null) { System.out.println("编号:" + sensorSn + "阈值有问题!"); continue; } Integer status = data.getAlarmState(); if (data.getDataRate() != null && data.getDataRate() > rateAlarmValue) { status = DataStatusEnum.RATE_OF_CHANGE_ALARM.getId(); } else if (data.getDataTotal() != null && data.getDataTotal() > alarmValue) { status = DataStatusEnum.SUPER_ALARM.getId(); } else { status = 1; } data.setAlarmState(status); } System.out.println(allList); // deepExcavationCurrentDataService.updateBatchById(allList); } @Autowired DevExcavationTask deepExcavationTask; @Test public void deepExcavationTaskTest() { deepExcavationTask.deepExcavationDropped(); } @Test public void deepExcavationTaskTest1() { List list = deepExcavationCurrentDataService.list(Wrappers.lambdaQuery().likeRight(DeepExcavationCurrentData::getSensorSn, "21830").le(DeepExcavationCurrentData::getReceiveTime, "2022-09-29 18:24:22").ge(DeepExcavationCurrentData::getReceiveTime, "2022-09-29 11:38:56")); Map floatMap = deepExcavationSensorService.list(Wrappers.lambdaQuery().likeRight(DeepExcavationSensor::getSensorSn, "21830")).stream().collect(Collectors.toMap(DeepExcavationSensor::getSensorSn, DeepExcavationSensor::getFiducialValue)); for (DeepExcavationCurrentData data : list) { data.setDataTotal(data.getData() + floatMap.get(data.getSensorSn())); data.setData(data.getDataTotal() + floatMap.get(data.getSensorSn())); data.setData(data.getDataTotal() - floatMap.get(data.getSensorSn())); data.setDataTotal(data.getData() + floatMap.get(data.getSensorSn())); } System.out.println(list); } }