|
@@ -120,7 +120,6 @@ public class TwinCalcStopServiceImpl implements ITwinCalcStopService {
|
|
|
public void process(LocalDateTime startTime, List<TwinDevice> deviceList) {
|
|
|
String config = configService.selectConfigByKey("data.legal.time");
|
|
|
int legalTime = Integer.parseInt(config) * 1000;
|
|
|
- Date s = new Date();
|
|
|
Date date = Date.from(startTime.toLocalDate().atStartOfDay(ZoneOffset.of("+8")).toInstant());
|
|
|
List<TwinCalcStop> insertList = new ArrayList<>();
|
|
|
List<TwinCalcStop> updateList = new ArrayList<>();
|
|
@@ -141,7 +140,6 @@ public class TwinCalcStopServiceImpl implements ITwinCalcStopService {
|
|
|
hourSearch.setDataDate(date);
|
|
|
hourSearch.setHour(startTime.getHour());
|
|
|
List<TwinCalcHour> hourList = calcHourService.selectTwinCalcHourList(hourSearch);
|
|
|
- List<TwinCalcHour> calcStopTimeList = new ArrayList<>();
|
|
|
|
|
|
List<TwinRecordStop> recordList = new ArrayList<>();
|
|
|
deviceList.forEach(device -> {
|
|
@@ -195,18 +193,6 @@ public class TwinCalcStopServiceImpl implements ITwinCalcStopService {
|
|
|
}
|
|
|
});
|
|
|
for (TwinRecordStop stop : recordList) {
|
|
|
- TwinCalcHour calcHour = new TwinCalcHour();
|
|
|
- //1.计算停机时长
|
|
|
- long stopTime = stop.getEndTime().getTime();
|
|
|
- if (stop.getStartTime().before(date)) {
|
|
|
- stopTime -= date.getTime();
|
|
|
- } else {
|
|
|
- stopTime -= stop.getStartTime().getTime();
|
|
|
- }
|
|
|
- calcHour.setDeviceId(stop.getDeviceId());
|
|
|
- calcHour.setCloseTime(stopTime);
|
|
|
- calcStopTimeList.add(calcHour);
|
|
|
-
|
|
|
//2.复制记录
|
|
|
TwinCalcStop v = new TwinCalcStop();
|
|
|
BeanUtils.copyProperties(stop, v);
|
|
@@ -220,11 +206,39 @@ public class TwinCalcStopServiceImpl implements ITwinCalcStopService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ try (SqlSession sqlSession = factory.openSession(ExecutorType.BATCH, false)) {
|
|
|
+ TwinCalcStopMapper mapper = sqlSession.getMapper(TwinCalcStopMapper.class);
|
|
|
+ if (insertList.size() > 0) {
|
|
|
+ insertList.forEach(mapper::insertTwinCalcStop);
|
|
|
+ }
|
|
|
+ if (updateList.size() > 0) {
|
|
|
+ updateList.forEach(mapper::updateTwinCalcStop);
|
|
|
+ }
|
|
|
+ sqlSession.commit();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ calcSearch = new TwinCalcStop();
|
|
|
+ calcSearch.setDataDate(date);
|
|
|
+ calcSearch.setHour(startTime.getHour());
|
|
|
+ List<TwinCalcStop> calcStops = selectTwinCalcStopList(calcSearch);
|
|
|
+ List<TwinCalcHour> calcStopTimeList = new ArrayList<>();
|
|
|
+ calcStops.forEach(stop -> {
|
|
|
+ TwinCalcHour calcHour = new TwinCalcHour();
|
|
|
+ //1.计算停机时长
|
|
|
+ if (stop.getStartTime().before(date)) {
|
|
|
+ stop.setStartTime(date);
|
|
|
+ }
|
|
|
+ long stopTime = stop.getEndTime().getTime() - stop.getStartTime().getTime();
|
|
|
+ calcHour.setDeviceId(stop.getDeviceId());
|
|
|
+ calcHour.setCloseTime(stopTime);
|
|
|
+ calcStopTimeList.add(calcHour);
|
|
|
+ });
|
|
|
+
|
|
|
//按ID分组,并统计停机时间
|
|
|
Map<Long, Long> resultMap = calcStopTimeList.stream().collect(Collectors.groupingBy(TwinCalcHour::getDeviceId, Collectors.reducing(0L, TwinCalcHour::getCloseTime, Long::sum)));
|
|
|
|
|
|
- Date e = new Date();
|
|
|
- System.err.println(e.getTime() - s.getTime());
|
|
|
hourList.forEach(hour -> {
|
|
|
Long closeTime = 0L;
|
|
|
if (resultMap.get(hour.getDeviceId()) != null) {
|
|
@@ -237,16 +251,8 @@ public class TwinCalcStopServiceImpl implements ITwinCalcStopService {
|
|
|
});
|
|
|
|
|
|
try (SqlSession sqlSession = factory.openSession(ExecutorType.BATCH, false)) {
|
|
|
- TwinCalcStopMapper mapper = sqlSession.getMapper(TwinCalcStopMapper.class);
|
|
|
- if (insertList.size() > 0) {
|
|
|
- insertList.forEach(mapper::insertTwinCalcStop);
|
|
|
- }
|
|
|
- if (updateList.size() > 0) {
|
|
|
- updateList.forEach(mapper::updateTwinCalcStop);
|
|
|
- }
|
|
|
-
|
|
|
- TwinCalcHourMapper hourMapper = sqlSession.getMapper(TwinCalcHourMapper.class);
|
|
|
- hourList.forEach(hourMapper::updateTwinCalcHour);
|
|
|
+ TwinCalcHourMapper mapper = sqlSession.getMapper(TwinCalcHourMapper.class);
|
|
|
+ hourList.forEach(mapper::updateTwinCalcHour);
|
|
|
sqlSession.commit();
|
|
|
}
|
|
|
}
|