| 
					
				 | 
			
			
				@@ -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(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 |