| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -146,13 +146,24 @@ public class ObtainGenerationServiceImpl implements ObtainGenerationService { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            if(CollectionUtil.isEmpty(records)){ | 
					 | 
					 | 
					 | 
					                            if(CollectionUtil.isEmpty(records)){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                return; | 
					 | 
					 | 
					 | 
					                                return; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            } | 
					 | 
					 | 
					 | 
					                            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            List<AnalyseDataTaosVO> reactives = dataService.periodTargetData(start,end,5,3,device.getEmCode(),HomePageConstant.HYDROPOWER_REACTIVE_GENERATE); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            // 是否包含今日累计发电量数据
 | 
					 | 
					 | 
					 | 
					                            // 是否包含今日累计发电量数据
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            Optional<ThirtyGenerationEntity> optional = generations.stream().filter(o->o.getStationId().equals(station.getCode()) && o.getDeviceCode().equals(device.getEmCode())).findFirst(); | 
					 | 
					 | 
					 | 
					                            Optional<ThirtyGenerationEntity> optional = generations.stream().filter(o->o.getStationId().equals(station.getCode()) && o.getDeviceCode().equals(device.getEmCode())).findFirst(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            if(optional.isPresent()){ | 
					 | 
					 | 
					 | 
					                            if(optional.isPresent()){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                if(StringUtil.isEmpty(records.get(0).getVal())){ | 
					 | 
					 | 
					 | 
					                                if(StringUtil.isEmpty(records.get(0).getVal())){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                    optional.get().setGenerate(BigDecimal.ZERO); | 
					 | 
					 | 
					 | 
					                                    optional.get().setGenerate(BigDecimal.ZERO); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                }else{ | 
					 | 
					 | 
					 | 
					                                }else{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                    optional.get().setGenerate(BigDecimal.valueOf(Double.parseDouble(records.get(0).getVal()) * device.getRideCount())); | 
					 | 
					 | 
					 | 
					                                    optional.get().setGenerate(BigDecimal.valueOf(Double.parseDouble(records.get(0).getVal()) * device.getRideCount()).setScale(2, RoundingMode.HALF_UP)); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                // 无功电量
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                if(CollectionUtil.isEmpty(reactives)){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    optional.get().setReactiveGenerate(BigDecimal.ZERO); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                }else{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    if(StringUtil.isEmpty(reactives.get(0).getVal())){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                        optional.get().setReactiveGenerate(BigDecimal.ZERO); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    }else{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                        optional.get().setReactiveGenerate(BigDecimal.valueOf(Double.parseDouble(reactives.get(0).getVal()))); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                } | 
					 | 
					 | 
					 | 
					                                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                saves.add(optional.get()); | 
					 | 
					 | 
					 | 
					                                saves.add(optional.get()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            }else{ | 
					 | 
					 | 
					 | 
					                            }else{ | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -165,7 +176,12 @@ public class ObtainGenerationServiceImpl implements ObtainGenerationService { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                generate.setCreateDept(station.getRefDept()); | 
					 | 
					 | 
					 | 
					                                generate.setCreateDept(station.getRefDept()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                generate.setCreateUser(station.getCreateUser()); | 
					 | 
					 | 
					 | 
					                                generate.setCreateUser(station.getCreateUser()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                generate.setUpdateUser(station.getUpdateUser()); | 
					 | 
					 | 
					 | 
					                                generate.setUpdateUser(station.getUpdateUser()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                Date time = DateUtil.parse(records.get(0).getTs(), "yyyy-MM-dd HH:mm:ss.s"); | 
					 | 
					 | 
					 | 
					                                Date time; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                if(records.get(0).getTs().contains(".0")){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    time = DateUtil.parse(records.get(0).getTs(), "yyyy-MM-dd HH:mm:ss.s"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                }else{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    time = DateUtil.parse(records.get(0).getTs() + ".0", "yyyy-MM-dd HH:mm:ss.s"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                generate.setStrDay(DateUtil.format(time,DateUtil.PATTERN_DATETIME)); | 
					 | 
					 | 
					 | 
					                                generate.setStrDay(DateUtil.format(time,DateUtil.PATTERN_DATETIME)); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                generate.setDay(time.getDate()); | 
					 | 
					 | 
					 | 
					                                generate.setDay(time.getDate()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                if(StringUtil.isEmpty(records.get(0).getVal())){ | 
					 | 
					 | 
					 | 
					                                if(StringUtil.isEmpty(records.get(0).getVal())){ | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -173,6 +189,16 @@ public class ObtainGenerationServiceImpl implements ObtainGenerationService { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                }else{ | 
					 | 
					 | 
					 | 
					                                }else{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                    generate.setGenerate(BigDecimal.valueOf(Double.parseDouble(records.get(0).getVal()) * device.getRideCount())); | 
					 | 
					 | 
					 | 
					                                    generate.setGenerate(BigDecimal.valueOf(Double.parseDouble(records.get(0).getVal()) * device.getRideCount())); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                } | 
					 | 
					 | 
					 | 
					                                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                // 无功电量
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                if(CollectionUtil.isEmpty(reactives)){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    generate.setReactiveGenerate(BigDecimal.ZERO); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                }else{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    if(StringUtil.isEmpty(reactives.get(0).getVal())){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                        generate.setReactiveGenerate(BigDecimal.ZERO); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    }else{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                        generate.setReactiveGenerate(BigDecimal.valueOf(Double.parseDouble(reactives.get(0).getVal()))); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                saves.add(generate); | 
					 | 
					 | 
					 | 
					                                saves.add(generate); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            } | 
					 | 
					 | 
					 | 
					                            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        }); | 
					 | 
					 | 
					 | 
					                        }); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -271,8 +297,8 @@ public class ObtainGenerationServiceImpl implements ObtainGenerationService { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        List<List<StationEntity>> limits = Stream.iterate(0, n -> n + 1).limit(limit).parallel().map(a -> stations.stream().skip((long) a * 3).limit(3).parallel().collect(Collectors.toList())).collect(Collectors.toList()); | 
					 | 
					 | 
					 | 
					        List<List<StationEntity>> limits = Stream.iterate(0, n -> n + 1).limit(limit).parallel().map(a -> stations.stream().skip((long) a * 3).limit(3).parallel().collect(Collectors.toList())).collect(Collectors.toList()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        CountDownLatch countDownLatch = new CountDownLatch(limits.size()); | 
					 | 
					 | 
					 | 
					        CountDownLatch countDownLatch = new CountDownLatch(limits.size()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        for(List<StationEntity> item : limits){ | 
					 | 
					 | 
					 | 
					        for(List<StationEntity> item : limits){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            try{ | 
					 | 
					 | 
					 | 
					            pool.submit(()->{ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                pool.submit(()->{ | 
					 | 
					 | 
					 | 
					                try{ | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    item.forEach(station->{ | 
					 | 
					 | 
					 | 
					                    item.forEach(station->{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        // 站点设备集合
 | 
					 | 
					 | 
					 | 
					                        // 站点设备集合
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        List<EminfoAndEmParamVo> eminfos = devices.stream().filter(device -> device.getCreateDept().equals(station.getRefDept())).collect(Collectors.toList()); | 
					 | 
					 | 
					 | 
					                        List<EminfoAndEmParamVo> eminfos = devices.stream().filter(device -> device.getCreateDept().equals(station.getRefDept())).collect(Collectors.toList()); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -282,6 +308,7 @@ public class ObtainGenerationServiceImpl implements ObtainGenerationService { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            if(CollectionUtil.isEmpty(records)){ | 
					 | 
					 | 
					 | 
					                            if(CollectionUtil.isEmpty(records)){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                return; | 
					 | 
					 | 
					 | 
					                                return; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            } | 
					 | 
					 | 
					 | 
					                            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            List<AnalyseDataTaosVO> reactives = dataService.periodTargetData(start,end,5,3,device.getEmCode(),HomePageConstant.HYDROPOWER_REACTIVE_GENERATE); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            // 保存设备发电量
 | 
					 | 
					 | 
					 | 
					                            // 保存设备发电量
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            thirtyGenerateService.saveBatch(records.stream().map(record -> { | 
					 | 
					 | 
					 | 
					                            thirtyGenerateService.saveBatch(records.stream().map(record -> { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                ThirtyGenerationEntity generate = new ThirtyGenerationEntity(); | 
					 | 
					 | 
					 | 
					                                ThirtyGenerationEntity generate = new ThirtyGenerationEntity(); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -293,13 +320,33 @@ public class ObtainGenerationServiceImpl implements ObtainGenerationService { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                generate.setCreateDept(station.getRefDept()); | 
					 | 
					 | 
					 | 
					                                generate.setCreateDept(station.getRefDept()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                generate.setCreateUser(station.getCreateUser()); | 
					 | 
					 | 
					 | 
					                                generate.setCreateUser(station.getCreateUser()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                generate.setUpdateUser(station.getUpdateUser()); | 
					 | 
					 | 
					 | 
					                                generate.setUpdateUser(station.getUpdateUser()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                Date time = DateUtil.parse(record.getTs(), "yyyy-MM-dd HH:mm:ss.s"); | 
					 | 
					 | 
					 | 
					                                Date time; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                if(record.getTs().contains(".0")){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    time = DateUtil.parse(record.getTs(), "yyyy-MM-dd HH:mm:ss.s"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                }else{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    time = DateUtil.parse(record.getTs() + ".0", "yyyy-MM-dd HH:mm:ss.s"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                generate.setStrDay(DateUtil.format(time,DateUtil.PATTERN_DATETIME)); | 
					 | 
					 | 
					 | 
					                                generate.setStrDay(DateUtil.format(time,DateUtil.PATTERN_DATETIME)); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                generate.setDay(time.getDate()); | 
					 | 
					 | 
					 | 
					                                generate.setDay(time.getDate()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                if(StringUtil.isEmpty(record.getVal())){ | 
					 | 
					 | 
					 | 
					                                if(StringUtil.isEmpty(record.getVal())){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                    generate.setGenerate(BigDecimal.ZERO); | 
					 | 
					 | 
					 | 
					                                    generate.setGenerate(BigDecimal.ZERO); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                }else{ | 
					 | 
					 | 
					 | 
					                                }else{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                    generate.setGenerate(BigDecimal.valueOf(Double.parseDouble(record.getVal()) * device.getRideCount())); | 
					 | 
					 | 
					 | 
					                                    generate.setGenerate(BigDecimal.valueOf(Double.parseDouble(record.getVal()) * device.getRideCount()).setScale(2, RoundingMode.HALF_UP)); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                // 无功电量
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                if(CollectionUtil.isEmpty(reactives)){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    generate.setReactiveGenerate(BigDecimal.ZERO); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                }else{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    Optional<AnalyseDataTaosVO> optional = reactives.stream().filter(reactive-> record.getTs().equals(reactive.getTs())).findFirst(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    if(optional.isPresent()){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                        if(StringUtil.isEmpty(optional.get().getVal())){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                            generate.setReactiveGenerate(BigDecimal.ZERO); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                        }else{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                            generate.setReactiveGenerate(BigDecimal.valueOf(Double.parseDouble(optional.get().getVal()))); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    }else{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                        generate.setReactiveGenerate(BigDecimal.ZERO); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                } | 
					 | 
					 | 
					 | 
					                                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                return generate; | 
					 | 
					 | 
					 | 
					                                return generate; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            }).collect(Collectors.toList())); | 
					 | 
					 | 
					 | 
					                            }).collect(Collectors.toList())); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -307,11 +354,11 @@ public class ObtainGenerationServiceImpl implements ObtainGenerationService { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    }); | 
					 | 
					 | 
					 | 
					                    }); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    countDownLatch.countDown(); | 
					 | 
					 | 
					 | 
					                    countDownLatch.countDown(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    log.error("save_generation_execute_complete: {}" ,item.stream().map(StationEntity::getName).collect(Collectors.toList())); | 
					 | 
					 | 
					 | 
					                    log.error("save_generation_execute_complete: {}" ,item.stream().map(StationEntity::getName).collect(Collectors.toList())); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                }); | 
					 | 
					 | 
					 | 
					                }catch (Exception e){ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            }catch (Exception e){ | 
					 | 
					 | 
					 | 
					                    countDownLatch.countDown(); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                countDownLatch.countDown(); | 
					 | 
					 | 
					 | 
					                    log.error("save_generation_execute_complete_error : {}" ,e.getMessage()); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                log.error("save_generation_execute_complete_error : {}" ,e.getMessage()); | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            }); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        // 等待所有线程执行完成
 | 
					 | 
					 | 
					 | 
					        // 等待所有线程执行完成
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        try { | 
					 | 
					 | 
					 | 
					        try { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -342,49 +389,70 @@ public class ObtainGenerationServiceImpl implements ObtainGenerationService { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        List<List<StationEntity>> limits = Stream.iterate(0, n -> n + 1).limit(limit).parallel().map(a -> stations.stream().skip((long) a * 3).limit(3).parallel().collect(Collectors.toList())).collect(Collectors.toList()); | 
					 | 
					 | 
					 | 
					        List<List<StationEntity>> limits = Stream.iterate(0, n -> n + 1).limit(limit).parallel().map(a -> stations.stream().skip((long) a * 3).limit(3).parallel().collect(Collectors.toList())).collect(Collectors.toList()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        CountDownLatch countDownLatch = new CountDownLatch(limits.size()); | 
					 | 
					 | 
					 | 
					        CountDownLatch countDownLatch = new CountDownLatch(limits.size()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        for(List<StationEntity> item : limits){ | 
					 | 
					 | 
					 | 
					        for(List<StationEntity> item : limits){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            try{ | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                pool.submit(()->{ | 
					 | 
					 | 
					 | 
					                pool.submit(()->{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    item.forEach(station->{ | 
					 | 
					 | 
					 | 
					                    try{ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        // 站点设备集合
 | 
					 | 
					 | 
					 | 
					                        item.forEach(station->{ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        List<EminfoAndEmParamVo> eminfos = devices.stream().filter(device -> device.getCreateDept().equals(station.getRefDept())).collect(Collectors.toList()); | 
					 | 
					 | 
					 | 
					                            // 站点设备集合
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        // 遍历查询发电量
 | 
					 | 
					 | 
					 | 
					                            List<EminfoAndEmParamVo> eminfos = devices.stream().filter(device -> device.getCreateDept().equals(station.getRefDept())).collect(Collectors.toList()); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        eminfos.forEach(device->{ | 
					 | 
					 | 
					 | 
					                            // 遍历查询发电量
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            List<AnalyseDataTaosVO> records = dataService.periodTargetData(start,end,5,5,device.getEmCode(),HomePageConstant.HYDROPOWER_GENERATE_POWER); | 
					 | 
					 | 
					 | 
					                            eminfos.forEach(device->{ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            if(CollectionUtil.isEmpty(records)){ | 
					 | 
					 | 
					 | 
					                                List<AnalyseDataTaosVO> records = dataService.periodTargetData(start,end,5,5,device.getEmCode(),HomePageConstant.HYDROPOWER_GENERATE_POWER); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                return; | 
					 | 
					 | 
					 | 
					                                if(CollectionUtil.isEmpty(records)){ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            } | 
					 | 
					 | 
					 | 
					                                    return; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            // 保存设备发电量
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            threeGenerateService.saveBatch(records.stream().map(record -> { | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                ThreeGenerationEntity generate = new ThreeGenerationEntity(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                generate.setStationId(station.getCode()); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                generate.setStationName(station.getName()); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                generate.setDeviceCode(device.getEmCode()); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                generate.setDeviceName(device.getName()); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                generate.setTenantId(station.getTenantId()); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                generate.setCreateDept(station.getRefDept()); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                generate.setCreateUser(station.getCreateUser()); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                generate.setUpdateUser(station.getUpdateUser()); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                Date time = DateUtil.parse(record.getTs(), "yyyy-MM-dd HH:mm:ss.s"); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                generate.setStrMonth(DateUtil.format(time,DateUtil.PATTERN_DATE)); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                generate.setMonth(time.getMonth() + 1); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                if(StringUtil.isEmpty(record.getVal())){ | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                    generate.setGenerate(BigDecimal.ZERO); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                }else{ | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                    generate.setGenerate(BigDecimal.valueOf(Double.parseDouble(record.getVal()) * device.getRideCount())); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                } | 
					 | 
					 | 
					 | 
					                                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                                return generate; | 
					 | 
					 | 
					 | 
					                                List<AnalyseDataTaosVO> reactives = dataService.periodTargetData(start,end,5,5,device.getEmCode(),HomePageConstant.HYDROPOWER_REACTIVE_GENERATE); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            }).collect(Collectors.toList())); | 
					 | 
					 | 
					 | 
					                                // 保存设备发电量
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                threeGenerateService.saveBatch(records.stream().map(record -> { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    ThreeGenerationEntity generate = new ThreeGenerationEntity(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    generate.setStationId(station.getCode()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    generate.setStationName(station.getName()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    generate.setDeviceCode(device.getEmCode()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    generate.setDeviceName(device.getName()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    generate.setTenantId(station.getTenantId()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    generate.setCreateDept(station.getRefDept()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    generate.setCreateUser(station.getCreateUser()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    generate.setUpdateUser(station.getUpdateUser()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    Date time; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    if(record.getTs().contains(".0")){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                        time = DateUtil.parse(record.getTs(), "yyyy-MM-dd HH:mm:ss.s"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    }else{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                        time = DateUtil.parse(record.getTs() + ".0", "yyyy-MM-dd HH:mm:ss.s"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    generate.setStrMonth(DateUtil.format(time,DateUtil.PATTERN_DATE)); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    generate.setMonth(time.getMonth() + 1); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    if(StringUtil.isEmpty(record.getVal())){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                        generate.setGenerate(BigDecimal.ZERO); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    }else{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                        generate.setGenerate(BigDecimal.valueOf(Double.parseDouble(record.getVal()) * device.getRideCount()).setScale(2, RoundingMode.HALF_UP)); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    // 无功电量
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    if(CollectionUtil.isEmpty(reactives)){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                        generate.setReactiveGenerate(BigDecimal.ZERO); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    }else{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                        Optional<AnalyseDataTaosVO> optional = reactives.stream().filter(reactive-> record.getTs().equals(reactive.getTs())).findFirst(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                        if(optional.isPresent()){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                            if(StringUtil.isEmpty(optional.get().getVal())){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                                generate.setReactiveGenerate(BigDecimal.ZERO); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                            }else{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                                generate.setReactiveGenerate(BigDecimal.valueOf(Double.parseDouble(optional.get().getVal()))); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                        }else{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                            generate.setReactiveGenerate(BigDecimal.ZERO); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                    return generate; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                }).collect(Collectors.toList())); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            }); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            // 填报发电量保存
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            threeGenerateService.saveBatch(this.saveFillGenerate(station,start,end)); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        }); | 
					 | 
					 | 
					 | 
					                        }); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        // 填报发电量保存
 | 
					 | 
					 | 
					 | 
					                        countDownLatch.countDown(); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        threeGenerateService.saveBatch(this.saveFillGenerate(station,start,end)); | 
					 | 
					 | 
					 | 
					                        log.error("save_generation_execute_complete: {}" ,item.stream().map(StationEntity::getName).collect(Collectors.toList())); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    }); | 
					 | 
					 | 
					 | 
					                    }catch (Exception e){ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    countDownLatch.countDown(); | 
					 | 
					 | 
					 | 
					                        countDownLatch.countDown(); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    log.error("save_generation_execute_complete: {}" ,item.stream().map(StationEntity::getName).collect(Collectors.toList())); | 
					 | 
					 | 
					 | 
					                        log.error("save_generation_execute_complete_error : {}" ,item.stream().map(StationEntity::getName).collect(Collectors.toList())); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                }); | 
					 | 
					 | 
					 | 
					                }); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            }catch (Exception e){ | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                countDownLatch.countDown(); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                log.error("save_generation_execute_complete_error : {}" ,e.getMessage()); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        // 等待所有线程执行完成
 | 
					 | 
					 | 
					 | 
					        // 等待所有线程执行完成
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        try { | 
					 | 
					 | 
					 | 
					        try { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -432,6 +500,9 @@ public class ObtainGenerationServiceImpl implements ObtainGenerationService { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            }else{ | 
					 | 
					 | 
					 | 
					            }else{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                generation.setGenerate(BigDecimal.valueOf(Double.parseDouble(power.getPower().toString())).setScale(2, RoundingMode.HALF_UP)); | 
					 | 
					 | 
					 | 
					                generation.setGenerate(BigDecimal.valueOf(Double.parseDouble(power.getPower().toString())).setScale(2, RoundingMode.HALF_UP)); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            generation.setReactiveGenerate(BigDecimal.ZERO | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            ); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            return generation; | 
					 | 
					 | 
					 | 
					            return generation; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        }).collect(Collectors.toList()); | 
					 | 
					 | 
					 | 
					        }).collect(Collectors.toList()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |