29 changed files with 1197 additions and 19 deletions
			
			
		@ -0,0 +1,13 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.operational.census.constants; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author ysj | 
				
			||||||
 | 
					 * @date 2023/02/23 13:37:22 | 
				
			||||||
 | 
					 * @version 4.0.0 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public interface CensusConstant { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						String  WATER_SIGNAGE = "front_water_level"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Integer QUERY_TYPE_DEFAULT = 0; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,25 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.operational.census.vo; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModelProperty; | 
				
			||||||
 | 
					import lombok.Data; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author ysj | 
				
			||||||
 | 
					 * @date 2023/02/23 13:37:22 | 
				
			||||||
 | 
					 * @version 4.0.0 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Data | 
				
			||||||
 | 
					public class CompleteDefectVo { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("区域名称") | 
				
			||||||
 | 
						private String areaName; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("缺陷总数") | 
				
			||||||
 | 
						private Integer defectCount; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("消缺数") | 
				
			||||||
 | 
						private Integer completeCount; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("消缺率") | 
				
			||||||
 | 
						private Double completeRate; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,25 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.operational.census.vo; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModelProperty; | 
				
			||||||
 | 
					import lombok.Data; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author ysj | 
				
			||||||
 | 
					 * @date 2023/02/23 13:37:22 | 
				
			||||||
 | 
					 * @version 4.0.0 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Data | 
				
			||||||
 | 
					public class CompleteGenerationVo { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("站点名称") | 
				
			||||||
 | 
						private String stationName; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("计划发电量") | 
				
			||||||
 | 
						private Double planGeneration; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("实际发电量") | 
				
			||||||
 | 
						private Double realityGeneration; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("完成率") | 
				
			||||||
 | 
						private Double completeRate; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,22 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.operational.census.vo; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModelProperty; | 
				
			||||||
 | 
					import lombok.Data; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author ysj | 
				
			||||||
 | 
					 * @date 2023/02/23 13:37:22 | 
				
			||||||
 | 
					 * @version 4.0.0 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Data | 
				
			||||||
 | 
					public class CompleteOtherVo { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("站点名称") | 
				
			||||||
 | 
						private String stationName; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("设备在线率") | 
				
			||||||
 | 
						private Double onlineRate; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("Fa投入条数") | 
				
			||||||
 | 
						private Double faCount; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,25 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.operational.census.vo; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModelProperty; | 
				
			||||||
 | 
					import lombok.Data; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author ysj | 
				
			||||||
 | 
					 * @date 2023/02/23 13:37:22 | 
				
			||||||
 | 
					 * @version 4.0.0 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Data | 
				
			||||||
 | 
					public class CompleteTicketVo { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("站点名称") | 
				
			||||||
 | 
						private String areaName; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("两票数量") | 
				
			||||||
 | 
						private Integer ticketCount; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("合格票据数量") | 
				
			||||||
 | 
						private Integer completeCount; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("合格率") | 
				
			||||||
 | 
						private String completeRate; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,22 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.operational.census.vo; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModelProperty; | 
				
			||||||
 | 
					import lombok.Data; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author ysj | 
				
			||||||
 | 
					 * @date 2023/02/23 13:37:22 | 
				
			||||||
 | 
					 * @version 4.0.0 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Data | 
				
			||||||
 | 
					public class ElectricGenerationVo { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("站点名称") | 
				
			||||||
 | 
						private String stationName; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("发容量") | 
				
			||||||
 | 
						private Double electricGeneration; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("详情") | 
				
			||||||
 | 
						private String detail; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,24 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.operational.census.vo; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModelProperty; | 
				
			||||||
 | 
					import lombok.Data; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.math.BigDecimal; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author ysj | 
				
			||||||
 | 
					 * @date 2023/02/23 13:37:22 | 
				
			||||||
 | 
					 * @version 4.0.0 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Data | 
				
			||||||
 | 
					public class ExamineCardVo { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("站点名称") | 
				
			||||||
 | 
						private String stationName; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("检修卡数量") | 
				
			||||||
 | 
						private Integer cardCount; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("检修卡总额") | 
				
			||||||
 | 
						private Double cardTotal; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,22 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.operational.census.vo; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModelProperty; | 
				
			||||||
 | 
					import lombok.Data; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author ysj | 
				
			||||||
 | 
					 * @date 2023/02/23 13:37:22 | 
				
			||||||
 | 
					 * @version 4.0.0 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Data | 
				
			||||||
 | 
					public class InstalledCapacityVo { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("站点名称") | 
				
			||||||
 | 
						private String stationName; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("装机容量") | 
				
			||||||
 | 
						private Double installedCapacity; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("详情") | 
				
			||||||
 | 
						private String detail; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,21 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.operational.census.vo; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModelProperty; | 
				
			||||||
 | 
					import lombok.Data; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author ysj | 
				
			||||||
 | 
					 * @date 2023/02/23 13:37:22 | 
				
			||||||
 | 
					 * @version 4.0.0 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Data | 
				
			||||||
 | 
					public class WaterFlowDataVo { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("时间") | 
				
			||||||
 | 
						private String time; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("值") | 
				
			||||||
 | 
						private String value; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,21 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.operational.census.vo; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModelProperty; | 
				
			||||||
 | 
					import lombok.Data; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author ysj | 
				
			||||||
 | 
					 * @date 2023/02/23 13:37:22 | 
				
			||||||
 | 
					 * @version 4.0.0 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Data | 
				
			||||||
 | 
					public class WaterFlowResponseVo { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("站点名称") | 
				
			||||||
 | 
						private String station; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("站点集合") | 
				
			||||||
 | 
						private List<WaterFlowDataVo> datas; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,31 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.operational.census.vo; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.swagger.annotations.ApiModelProperty; | 
				
			||||||
 | 
					import lombok.Data; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.Date; | 
				
			||||||
 | 
					import java.util.List; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author ysj | 
				
			||||||
 | 
					 * @date 2023/02/23 13:37:22 | 
				
			||||||
 | 
					 * @version 4.0.0 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Data | 
				
			||||||
 | 
					public class WaterFlowVo { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("站点集合") | 
				
			||||||
 | 
						private List<String> stations; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("监测类型:水位/流量") | 
				
			||||||
 | 
						private String type; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("时间跨域单位:2->h(小时)/3->d(天)/5->n(自然月)/6->y(自然年)") | 
				
			||||||
 | 
						private Integer timeType; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("开始时间") | 
				
			||||||
 | 
						private String startDate; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiModelProperty("结束时间") | 
				
			||||||
 | 
						private String endDate; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,34 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.operational.census.controller; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.census.service.CensusService; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.census.vo.WaterFlowVo; | 
				
			||||||
 | 
					import io.swagger.annotations.Api; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiOperation; | 
				
			||||||
 | 
					import lombok.AllArgsConstructor; | 
				
			||||||
 | 
					import org.springblade.core.tool.api.R; | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.PostMapping; | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.RequestBody; | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.RequestMapping; | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.RestController; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author ysj | 
				
			||||||
 | 
					 * @date 2023/02/23 13:37:22 | 
				
			||||||
 | 
					 * @version 4.0.0 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@RestController | 
				
			||||||
 | 
					@AllArgsConstructor | 
				
			||||||
 | 
					@RequestMapping("/census") | 
				
			||||||
 | 
					@Api(value = "统计", tags = "数据统计") | 
				
			||||||
 | 
					public class CensusController { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final CensusService service; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiOperation("水位-流量统计") | 
				
			||||||
 | 
						@PostMapping("/water-flow") | 
				
			||||||
 | 
						@ApiOperationSupport(order = 1) | 
				
			||||||
 | 
						public R waterFlow(@RequestBody WaterFlowVo waterFlow) { | 
				
			||||||
 | 
							return R.data(service.waterFlow(waterFlow)); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,94 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.operational.census.controller; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.core.metadata.IPage; | 
				
			||||||
 | 
					import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.access.dto.OperAccessTaskDTO; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.access.vo.OperAccessTaskVO; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.census.service.TargetService; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.maintenance.dto.OperMaintenanceTaskDTO; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.maintenance.vo.OperMaintenanceTaskVO; | 
				
			||||||
 | 
					import io.swagger.annotations.Api; | 
				
			||||||
 | 
					import io.swagger.annotations.ApiOperation; | 
				
			||||||
 | 
					import lombok.AllArgsConstructor; | 
				
			||||||
 | 
					import org.springblade.core.mp.support.Condition; | 
				
			||||||
 | 
					import org.springblade.core.mp.support.Query; | 
				
			||||||
 | 
					import org.springblade.core.tool.api.R; | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.*; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author ysj | 
				
			||||||
 | 
					 * @date 2023/03/01 16:12:22 | 
				
			||||||
 | 
					 * @version 4.0.0 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@RestController | 
				
			||||||
 | 
					@AllArgsConstructor | 
				
			||||||
 | 
					@RequestMapping("/target") | 
				
			||||||
 | 
					@Api(value = "指标关联数据", tags = "指标关联数据") | 
				
			||||||
 | 
					public class TargetController { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final TargetService service; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiOperation("装机容量统计") | 
				
			||||||
 | 
						@PostMapping("/installed-capacity") | 
				
			||||||
 | 
						@ApiOperationSupport(order = 1) | 
				
			||||||
 | 
						public R installedCapacity(@RequestParam(value = "stationName") String stationName,@RequestParam(value = "type") Integer type) { | 
				
			||||||
 | 
							return R.data(service.installedCapacity(stationName,type)); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiOperation("发电量统计") | 
				
			||||||
 | 
						@PostMapping("/electric-generation") | 
				
			||||||
 | 
						@ApiOperationSupport(order = 2) | 
				
			||||||
 | 
						public R electricGeneration() { | 
				
			||||||
 | 
							return R.data(service.electricGeneration()); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiOperation("计划发电量/实际发电量统计") | 
				
			||||||
 | 
						@PostMapping("/complete-generation") | 
				
			||||||
 | 
						@ApiOperationSupport(order = 3) | 
				
			||||||
 | 
						public R completeGeneration() { | 
				
			||||||
 | 
							return R.data(service.completeGeneration()); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiOperation("两票统计") | 
				
			||||||
 | 
						@PostMapping("/complete-ticket") | 
				
			||||||
 | 
						@ApiOperationSupport(order = 4) | 
				
			||||||
 | 
						public R completeTicket(@RequestParam(value = "areaName") String areaName,@RequestParam(value = "type") Integer type) { | 
				
			||||||
 | 
							return R.data(service.completeTicket(areaName,type)); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiOperation("缺陷率统计") | 
				
			||||||
 | 
						@GetMapping("/complete-defect") | 
				
			||||||
 | 
						@ApiOperationSupport(order = 6) | 
				
			||||||
 | 
						public R completeDefect(@RequestParam(value = "areaName") String areaName,@RequestParam(value = "type") Integer type) { | 
				
			||||||
 | 
							return  R.data(service.defect(areaName,type)); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiOperation("上线率/Fa投入条数统计") | 
				
			||||||
 | 
						@GetMapping("/complete-other") | 
				
			||||||
 | 
						@ApiOperationSupport(order = 6) | 
				
			||||||
 | 
						public R completeOther(@RequestParam(value = "stationName") String stationName,@RequestParam(value = "type") Integer type,@RequestParam(value = "queryType") Integer queryType) { | 
				
			||||||
 | 
							return  R.data(service.completeOther(stationName,type,queryType)); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiOperation("日常维护统计") | 
				
			||||||
 | 
						@GetMapping("/routine-maintenance") | 
				
			||||||
 | 
						@ApiOperationSupport(order = 5) | 
				
			||||||
 | 
						public R<IPage<OperMaintenanceTaskVO>> routineMaintenance(OperMaintenanceTaskDTO params,Query query,Integer type) { | 
				
			||||||
 | 
							return service.routineMaintenance(params,query,type); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiOperation("检修任务统计") | 
				
			||||||
 | 
						@GetMapping("/examine-repair") | 
				
			||||||
 | 
						@ApiOperationSupport(order = 6) | 
				
			||||||
 | 
						public R<IPage<OperAccessTaskVO>> examineRepair(OperAccessTaskDTO params, Query query, Integer type) { | 
				
			||||||
 | 
							return service.examineRepair(params, query,type); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@ApiOperation("检修卡统计") | 
				
			||||||
 | 
						@GetMapping("/examineCard") | 
				
			||||||
 | 
						@ApiOperationSupport(order = 6) | 
				
			||||||
 | 
						public R examineCard(@RequestParam(value = "stationName") String stationName,@RequestParam(value = "type") Integer type) { | 
				
			||||||
 | 
							return R.data(service.examineCard(stationName,type)); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,18 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.operational.census.service; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.hnac.hzims.operational.census.vo.WaterFlowResponseVo; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.census.vo.WaterFlowVo; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author ysj | 
				
			||||||
 | 
					 * @date 2023/02/23 13:37:22 | 
				
			||||||
 | 
					 * @version 4.0.0 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public interface CensusService { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 查询水位/流量数据
 | 
				
			||||||
 | 
						List<WaterFlowResponseVo> waterFlow(WaterFlowVo waterFlow); | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,49 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.operational.census.service; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.core.metadata.IPage; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.access.dto.OperAccessStatisticsDTO; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.access.dto.OperAccessTaskDTO; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.access.vo.OperAccessStatisticsVO; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.access.vo.OperAccessTaskVO; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.census.vo.*; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.maintenance.dto.OperMaintenanceTaskDTO; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.maintenance.vo.OperMaintenanceTaskVO; | 
				
			||||||
 | 
					import org.springblade.core.mp.support.Query; | 
				
			||||||
 | 
					import org.springblade.core.tool.api.R; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author ysj | 
				
			||||||
 | 
					 * @date 2023/03/01 16:12:22 | 
				
			||||||
 | 
					 * @version 4.0.0 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public interface TargetService { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 获取站点装机容量
 | 
				
			||||||
 | 
						List<InstalledCapacityVo> installedCapacity(String stationName,Integer type); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 发电量统计
 | 
				
			||||||
 | 
						List<ElectricGenerationVo> electricGeneration(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 计划发电量/实际发电量统计
 | 
				
			||||||
 | 
						List<CompleteGenerationVo> completeGeneration(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 两票统计
 | 
				
			||||||
 | 
						List<CompleteTicketVo> completeTicket(String areaName,Integer type); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 缺陷率统计
 | 
				
			||||||
 | 
						List<CompleteDefectVo> defect(String areaName, Integer type); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 检修卡统计
 | 
				
			||||||
 | 
						List<ExamineCardVo> examineCard(String stationName, Integer type); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 设备在线率/Fa投入条数统计
 | 
				
			||||||
 | 
						List<CompleteOtherVo> completeOther(String stationName, Integer type,Integer queryType); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 日常维护统计
 | 
				
			||||||
 | 
						R<IPage<OperMaintenanceTaskVO>> routineMaintenance(OperMaintenanceTaskDTO params, Query query, Integer type); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 检修任务统计
 | 
				
			||||||
 | 
						R<IPage<OperAccessTaskVO>> examineRepair(OperAccessTaskDTO params, Query query, Integer type); | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,137 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.operational.census.service.impl; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.hnac.hzims.EquipmentConstants; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.census.constants.CensusConstant; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.census.service.CensusService; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.census.vo.WaterFlowDataVo; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.census.vo.WaterFlowResponseVo; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.census.vo.WaterFlowVo; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.station.entity.HzimsAnalyzeModelStationEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.station.service.IHzimsAnalyzeModelStationService; | 
				
			||||||
 | 
					import com.hnac.hzinfo.datasearch.analyse.IAnalyseDataSearchClient; | 
				
			||||||
 | 
					import com.hnac.hzinfo.datasearch.analyse.po.AnalyseCodeByAnalyseDataPO; | 
				
			||||||
 | 
					import com.hnac.hzinfo.datasearch.analyse.po.AnalyzeDataConditionPO; | 
				
			||||||
 | 
					import com.hnac.hzinfo.datasearch.analyse.vo.AnalyzeDataConditionVO; | 
				
			||||||
 | 
					import lombok.RequiredArgsConstructor; | 
				
			||||||
 | 
					import org.springblade.core.tool.utils.DateUtil; | 
				
			||||||
 | 
					import org.springframework.stereotype.Service; | 
				
			||||||
 | 
					import org.springframework.util.CollectionUtils; | 
				
			||||||
 | 
					import org.springframework.util.ObjectUtils; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.time.LocalDateTime; | 
				
			||||||
 | 
					import java.time.format.DateTimeFormatter; | 
				
			||||||
 | 
					import java.util.ArrayList; | 
				
			||||||
 | 
					import java.util.Date; | 
				
			||||||
 | 
					import java.util.List; | 
				
			||||||
 | 
					import java.util.Optional; | 
				
			||||||
 | 
					import java.util.stream.Collectors; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author ysj | 
				
			||||||
 | 
					 * @date 2023/02/23 13:37:22 | 
				
			||||||
 | 
					 * @version 4.0.0 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Service | 
				
			||||||
 | 
					@RequiredArgsConstructor | 
				
			||||||
 | 
					public class CensusServiceImpl implements CensusService { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final IAnalyseDataSearchClient dateSearch; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final IHzimsAnalyzeModelStationService analyzeStationService; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * 查询水位/流量统计数据 | 
				
			||||||
 | 
						 * @param waterFlow | 
				
			||||||
 | 
						 * @return | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						@Override | 
				
			||||||
 | 
						public List<WaterFlowResponseVo> waterFlow(WaterFlowVo waterFlow) { | 
				
			||||||
 | 
							// 查询参数设置
 | 
				
			||||||
 | 
							List<String> instances = this.getDefaultStations(waterFlow.getStations()); | 
				
			||||||
 | 
							if(CollectionUtils.isEmpty(instances)){ | 
				
			||||||
 | 
								return new ArrayList<>(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							List<AnalyseCodeByAnalyseDataPO> params = instances.stream().map(instance->{ | 
				
			||||||
 | 
								AnalyseCodeByAnalyseDataPO analyseCodeByAnalyseData = new AnalyseCodeByAnalyseDataPO(); | 
				
			||||||
 | 
								analyseCodeByAnalyseData.setDeviceCode(instance); | 
				
			||||||
 | 
								List<AnalyzeDataConditionPO> signboardConditions = new ArrayList<>(); | 
				
			||||||
 | 
								AnalyzeDataConditionPO analyzeDataCondition = new AnalyzeDataConditionPO(); | 
				
			||||||
 | 
								analyzeDataCondition.setFull(1); | 
				
			||||||
 | 
								analyzeDataCondition.setSignages(Optional.ofNullable(waterFlow.getType()).orElse(CensusConstant.WATER_SIGNAGE)); | 
				
			||||||
 | 
								// 取数规则: 0=(整点值/最早值)、1=最大值、2=最小值、3=平均值、4=(累计值/和值)、5=(变化值/差值) 6=最新值
 | 
				
			||||||
 | 
								analyzeDataCondition.setAccessRules(EquipmentConstants.AccessRulesEnum.AVG_CYCLE.getType()); | 
				
			||||||
 | 
								// 周期类型: 0-> s(秒) 1->、m(分)、2->h(小时)3->、d(天)4->、w(周)5->、n(自然月)、6->y(自然年)
 | 
				
			||||||
 | 
								analyzeDataCondition.setSaveTimeType(Optional.ofNullable(waterFlow.getTimeType()).orElse(3)); | 
				
			||||||
 | 
								// 间隔
 | 
				
			||||||
 | 
								analyzeDataCondition.setTimeInterval(1); | 
				
			||||||
 | 
								analyzeDataCondition.setBeginTime(this.getSearchStartTime(waterFlow.getStartDate())); | 
				
			||||||
 | 
								analyzeDataCondition.setEndTime(this.getSearchEndTime(waterFlow.getEndDate())); | 
				
			||||||
 | 
								signboardConditions.add(analyzeDataCondition); | 
				
			||||||
 | 
								analyseCodeByAnalyseData.setSignboardConditions(signboardConditions); | 
				
			||||||
 | 
								return analyseCodeByAnalyseData; | 
				
			||||||
 | 
							}).collect(Collectors.toList()); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// 查询数据
 | 
				
			||||||
 | 
							return params.stream().map(o->{ | 
				
			||||||
 | 
								WaterFlowResponseVo waterFlowResponse = new WaterFlowResponseVo(); | 
				
			||||||
 | 
								waterFlowResponse.setStation(o.getDeviceCode()); | 
				
			||||||
 | 
								List<AnalyzeDataConditionVO> data = dateSearch.getAnalyzeDataByAnalyzeCodeAndSignages(o).getData(); | 
				
			||||||
 | 
								if(CollectionUtils.isEmpty(data)){ | 
				
			||||||
 | 
									waterFlowResponse.setDatas(null); | 
				
			||||||
 | 
								}else{ | 
				
			||||||
 | 
									List<WaterFlowDataVo> datas = data.get(0).getList().stream().map(m->{ | 
				
			||||||
 | 
										WaterFlowDataVo waterFlowDataVo = new WaterFlowDataVo(); | 
				
			||||||
 | 
										waterFlowDataVo.setTime(m.getTs()); | 
				
			||||||
 | 
										waterFlowDataVo.setValue(m.getVal()); | 
				
			||||||
 | 
										return waterFlowDataVo; | 
				
			||||||
 | 
									}).collect(Collectors.toList()); | 
				
			||||||
 | 
									waterFlowResponse.setDatas(datas); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								return waterFlowResponse; | 
				
			||||||
 | 
							}).collect(Collectors.toList()); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * 查询默认水位/流量站点 | 
				
			||||||
 | 
						 * @return | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						private List<String> getDefaultStations(List<String> stations) { | 
				
			||||||
 | 
							if(CollectionUtils.isEmpty(stations)){ | 
				
			||||||
 | 
								List<HzimsAnalyzeModelStationEntity> models = analyzeStationService.list(); | 
				
			||||||
 | 
								if(CollectionUtils.isEmpty(models)){ | 
				
			||||||
 | 
									return new ArrayList<>(); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								return models.stream().map(HzimsAnalyzeModelStationEntity::getInstanceCode).collect(Collectors.toList()); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							return stations; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * 获取开始时间 | 
				
			||||||
 | 
						 * @param date | 
				
			||||||
 | 
						 * @return | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						private LocalDateTime getSearchStartTime(String date) { | 
				
			||||||
 | 
							if(ObjectUtils.isEmpty(date)){ | 
				
			||||||
 | 
								Date startDate = new Date(); | 
				
			||||||
 | 
								startDate.setMonth(startDate.getMonth()-1); | 
				
			||||||
 | 
								date = DateUtil.format(startDate, "yyyy-MM-dd HH:mm:ss"); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							return LocalDateTime.parse(DateUtil.format(new Date(), date), DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATETIME)); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * 获取结束时间 | 
				
			||||||
 | 
						 * @param date | 
				
			||||||
 | 
						 * @return | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						private LocalDateTime getSearchEndTime(String date) { | 
				
			||||||
 | 
							if(ObjectUtils.isEmpty(date)){ | 
				
			||||||
 | 
								date = DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							return LocalDateTime.parse(DateUtil.format(new Date(), date), DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATETIME)); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,519 @@ | 
				
			|||||||
 | 
					package com.hnac.hzims.operational.census.service.impl; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.core.metadata.IPage; | 
				
			||||||
 | 
					import com.baomidou.mybatisplus.core.toolkit.Wrappers; | 
				
			||||||
 | 
					import com.hnac.hzims.equipment.entity.EmInfoEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.equipment.entity.PlanGenerationEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.equipment.feign.IPlanGenertionClient; | 
				
			||||||
 | 
					import com.hnac.hzims.equipment.vo.EminfoAndEmParamVo; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.access.dto.OperAccessStatisticsDTO; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.access.dto.OperAccessTaskDTO; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.access.service.IOperAccessStatisticsService; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.access.service.IOperAccessTaskService; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.access.vo.OperAccessStatisticsVO; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.access.vo.OperAccessTaskVO; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.census.constants.CensusConstant; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.census.service.TargetService; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.census.vo.*; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.defect.service.IOperPhenomenonService; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.fill.entity.*; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.fill.service.*; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.main.service.AreaService; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.main.service.IMainSystemMonitoringService; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.main.vo.HydropowerUnitTargetVo; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.maintenance.constants.HomePageConstant; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.maintenance.dto.OperMaintenanceTaskDTO; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.maintenance.service.IOperMaintenanceTaskService; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.maintenance.vo.OperMaintenanceTaskVO; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.report.vo.DutyDefectVO; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.station.entity.StationEntity; | 
				
			||||||
 | 
					import com.hnac.hzims.operational.station.service.IStationService; | 
				
			||||||
 | 
					import com.hnac.hzims.ticket.allTicket.fegin.ITicketInfoAllClient; | 
				
			||||||
 | 
					import com.hnac.hzims.ticket.allTicket.vo.DoublePassRateVO; | 
				
			||||||
 | 
					import io.swagger.models.auth.In; | 
				
			||||||
 | 
					import lombok.RequiredArgsConstructor; | 
				
			||||||
 | 
					import org.apache.commons.collections4.MapUtils; | 
				
			||||||
 | 
					import org.springblade.core.mp.support.Query; | 
				
			||||||
 | 
					import org.springblade.core.tool.api.R; | 
				
			||||||
 | 
					import org.springblade.core.tool.utils.DateUtil; | 
				
			||||||
 | 
					import org.springblade.core.tool.utils.ObjectUtil; | 
				
			||||||
 | 
					import org.springblade.system.entity.Dept; | 
				
			||||||
 | 
					import org.springframework.data.redis.core.RedisTemplate; | 
				
			||||||
 | 
					import org.springframework.stereotype.Service; | 
				
			||||||
 | 
					import org.springframework.util.CollectionUtils; | 
				
			||||||
 | 
					import org.springframework.util.StringUtils; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.math.BigDecimal; | 
				
			||||||
 | 
					import java.text.SimpleDateFormat; | 
				
			||||||
 | 
					import java.time.LocalDate; | 
				
			||||||
 | 
					import java.time.LocalDateTime; | 
				
			||||||
 | 
					import java.time.LocalTime; | 
				
			||||||
 | 
					import java.util.*; | 
				
			||||||
 | 
					import java.util.concurrent.CountDownLatch; | 
				
			||||||
 | 
					import java.util.concurrent.ExecutorService; | 
				
			||||||
 | 
					import java.util.concurrent.Executors; | 
				
			||||||
 | 
					import java.util.stream.Collectors; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * @author ysj | 
				
			||||||
 | 
					 * @date 2023/02/23 13:37:22 | 
				
			||||||
 | 
					 * @version 4.0.0 | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@Service | 
				
			||||||
 | 
					@RequiredArgsConstructor | 
				
			||||||
 | 
					public class TargetServiceImpl implements TargetService { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final IStationService stationService; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final IMainSystemMonitoringService maintenanceService; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final PowerService powerService; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final AreaService areaService; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final IOperMaintenanceTaskService maintenanceTaskService; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final IOperPhenomenonService phenomenonService; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final OverService overService; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final OverDetailsService overDetailsService; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final SolveService solveService; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final OtherService otherService; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final IOperAccessTaskService accessTaskService; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final IPlanGenertionClient planClient; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final ITicketInfoAllClient ticketInfoAllClient; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final RedisTemplate redisTemplate; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final SimpleDateFormat sdf = new SimpleDateFormat(DateUtil.PATTERN_DATETIME); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final static String load_hydropower_unit_target_key = "hzims:operation:loadhydropowerunit:target:key"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * 获取站点装机容量 | 
				
			||||||
 | 
						 * @return | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						@Override | 
				
			||||||
 | 
						public List<InstalledCapacityVo> installedCapacity(String stationName,Integer type) { | 
				
			||||||
 | 
							// 站点
 | 
				
			||||||
 | 
							List<StationEntity> stations = stationService.list(Wrappers.<StationEntity>lambdaQuery() | 
				
			||||||
 | 
								.eq(StationEntity::getType, type) | 
				
			||||||
 | 
								.eq(StationEntity::getServeType,2) | 
				
			||||||
 | 
								.like(StationEntity::getName,stationName) | 
				
			||||||
 | 
							); | 
				
			||||||
 | 
							if(CollectionUtils.isEmpty(stations)){ | 
				
			||||||
 | 
								return new ArrayList<>(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							if(HomePageConstant.HYDROPOWER.equals(type)){ | 
				
			||||||
 | 
								// 设备
 | 
				
			||||||
 | 
								List<EminfoAndEmParamVo> devices = maintenanceService.getEmInfoList(); | 
				
			||||||
 | 
								return stations.stream().map(station->{ | 
				
			||||||
 | 
									InstalledCapacityVo item = new InstalledCapacityVo(); | 
				
			||||||
 | 
									item.setStationName(station.getName()); | 
				
			||||||
 | 
									List<EminfoAndEmParamVo> stationDevices = devices.stream().filter(device->device.getCreateDept().equals(station.getRefDept())).collect(Collectors.toList()); | 
				
			||||||
 | 
									if(CollectionUtils.isEmpty(stationDevices)){ | 
				
			||||||
 | 
										item.setInstalledCapacity(0.0); | 
				
			||||||
 | 
										item.setDetail("站点暂无设备!"); | 
				
			||||||
 | 
										return item; | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									// 装机容量
 | 
				
			||||||
 | 
									double sum = stationDevices.stream().mapToDouble(EminfoAndEmParamVo::getInstalledCapacity).sum(); | 
				
			||||||
 | 
									item.setInstalledCapacity(sum); | 
				
			||||||
 | 
									// 装机容量详情
 | 
				
			||||||
 | 
									List<String> details = stationDevices.stream().map(device-> "[" + device.getName() + " " +device.getInstalledCapacity()  +"kw]").collect(Collectors.toList()); | 
				
			||||||
 | 
									item.setDetail(String.join("|",details)); | 
				
			||||||
 | 
									return item; | 
				
			||||||
 | 
								}).collect(Collectors.toList()); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							// 查询填报数据
 | 
				
			||||||
 | 
							String mon = DateUtil.format(new Date(),"yyyy"); | 
				
			||||||
 | 
							List<PowerEntity> powers = powerService.list(Wrappers.<PowerEntity>lambdaQuery() | 
				
			||||||
 | 
								.in(PowerEntity::getCreateDept,stations.stream().map(StationEntity::getRefDept).collect(Collectors.toList())) | 
				
			||||||
 | 
								.ge(PowerEntity::getMon, mon + "-01") | 
				
			||||||
 | 
							); | 
				
			||||||
 | 
							return stations.stream().map(station -> { | 
				
			||||||
 | 
								InstalledCapacityVo item = new InstalledCapacityVo(); | 
				
			||||||
 | 
								item.setStationName(station.getName()); | 
				
			||||||
 | 
								// 装机容量
 | 
				
			||||||
 | 
								List<PowerEntity> stationPowers = powers.stream().filter(o->o.getCreateDept().equals(station.getRefDept())).collect(Collectors.toList()); | 
				
			||||||
 | 
								if(CollectionUtils.isEmpty(stationPowers)){ | 
				
			||||||
 | 
									item.setInstalledCapacity(0.0); | 
				
			||||||
 | 
								}else{ | 
				
			||||||
 | 
									item.setInstalledCapacity(stationPowers.stream().sorted(Comparator.comparing(PowerEntity::getMon).reversed()).collect(Collectors.toList()).get(0).getInstalledCapacity()); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								item.setDetail("站点为填报数据,暂无设备装机容量信息!"); | 
				
			||||||
 | 
								return item; | 
				
			||||||
 | 
							}).collect(Collectors.toList()); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * 发电量 | 
				
			||||||
 | 
						 * @return | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						@Override | 
				
			||||||
 | 
						public List<ElectricGenerationVo> electricGeneration() { | 
				
			||||||
 | 
							// 站点
 | 
				
			||||||
 | 
							List<StationEntity> stations = stationService.getStationType(HomePageConstant.HYDROPOWER_SERVETYPE, Collections.singletonList(HomePageConstant.HYDROPOWER), null); | 
				
			||||||
 | 
							if(CollectionUtils.isEmpty(stations)){ | 
				
			||||||
 | 
								return new ArrayList<>(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							// 设备指标数据
 | 
				
			||||||
 | 
							List<HydropowerUnitTargetVo> targets = (List<HydropowerUnitTargetVo>) redisTemplate.opsForValue().get(load_hydropower_unit_target_key); | 
				
			||||||
 | 
							if(CollectionUtils.isEmpty(targets)){ | 
				
			||||||
 | 
								return new ArrayList<>(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							return stations.stream().map(station->{ | 
				
			||||||
 | 
								ElectricGenerationVo item = new ElectricGenerationVo(); | 
				
			||||||
 | 
								item.setStationName(station.getName()); | 
				
			||||||
 | 
								List<HydropowerUnitTargetVo> stationTargets = targets.stream().filter(device->device.getDeptId().equals(station.getRefDept())).collect(Collectors.toList()); | 
				
			||||||
 | 
								if(CollectionUtils.isEmpty(stationTargets)){ | 
				
			||||||
 | 
									item.setElectricGeneration(0.0); | 
				
			||||||
 | 
									item.setDetail("站点暂无发电"); | 
				
			||||||
 | 
									return item; | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								// 年发电量
 | 
				
			||||||
 | 
								double sum = targets.stream().mapToDouble(HydropowerUnitTargetVo::getPowerYear).sum(); | 
				
			||||||
 | 
								item.setElectricGeneration(sum); | 
				
			||||||
 | 
								// 装机容量详情
 | 
				
			||||||
 | 
								List<String> details = targets.stream().map(target-> "[" + target.getDeviceCode() + " " + target.getPowerYear()  +"kw]").collect(Collectors.toList()); | 
				
			||||||
 | 
								item.setDetail(String.join("|",details)); | 
				
			||||||
 | 
								return item; | 
				
			||||||
 | 
							}).collect(Collectors.toList()); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * 电量完成率 | 
				
			||||||
 | 
						 * @return | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						@Override | 
				
			||||||
 | 
						public List<CompleteGenerationVo> completeGeneration() { | 
				
			||||||
 | 
							// 站点
 | 
				
			||||||
 | 
							List<StationEntity> stations = stationService.getStationType(HomePageConstant.HYDROPOWER_SERVETYPE, Collections.singletonList(HomePageConstant.HYDROPOWER), null); | 
				
			||||||
 | 
							if(CollectionUtils.isEmpty(stations)){ | 
				
			||||||
 | 
								return new ArrayList<>(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							// 计划发电量
 | 
				
			||||||
 | 
							List<PlanGenerationEntity> plans = planClient.getPlanGenerationByParam(stations.stream().map(StationEntity::getCode).collect(Collectors.toList()), null, DateUtil.format(new Date(), "yyyy")); | 
				
			||||||
 | 
							// 设备指标数据
 | 
				
			||||||
 | 
							List<HydropowerUnitTargetVo> targets = (List<HydropowerUnitTargetVo>) redisTemplate.opsForValue().get(load_hydropower_unit_target_key); | 
				
			||||||
 | 
							if(CollectionUtils.isEmpty(targets)){ | 
				
			||||||
 | 
								return new ArrayList<>(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							return stations.stream().map(station->{ | 
				
			||||||
 | 
								CompleteGenerationVo item = new CompleteGenerationVo(); | 
				
			||||||
 | 
								item.setStationName(station.getName()); | 
				
			||||||
 | 
								List<HydropowerUnitTargetVo> stationTargets = targets.stream().filter(device->device.getDeptId().equals(station.getRefDept())).collect(Collectors.toList()); | 
				
			||||||
 | 
								// 实际发电量
 | 
				
			||||||
 | 
								if(CollectionUtils.isEmpty(stationTargets)){ | 
				
			||||||
 | 
									item.setRealityGeneration(0.0); | 
				
			||||||
 | 
								}else { | 
				
			||||||
 | 
									double sum = targets.stream().mapToDouble(HydropowerUnitTargetVo::getPowerYear).sum(); | 
				
			||||||
 | 
									item.setRealityGeneration(sum); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								// 计划发电量
 | 
				
			||||||
 | 
								List<Float> planGenerations = plans.stream().filter(plan->plan.getStationId().equals(station.getCode())).map(PlanGenerationEntity::getPlanGeneration).collect(Collectors.toList()); | 
				
			||||||
 | 
								if(CollectionUtils.isEmpty(planGenerations)){ | 
				
			||||||
 | 
									item.setPlanGeneration(0.0); | 
				
			||||||
 | 
								}else{ | 
				
			||||||
 | 
									item.setPlanGeneration(BigDecimal.valueOf(planGenerations.get(0)).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue()); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								// 完成率
 | 
				
			||||||
 | 
								if(Math.abs(item.getPlanGeneration()) <= 0){ | 
				
			||||||
 | 
									item.setCompleteRate(0.0); | 
				
			||||||
 | 
								}else{ | 
				
			||||||
 | 
									item.setCompleteRate(BigDecimal.valueOf(item.getRealityGeneration() / item.getPlanGeneration() * 100).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue()); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								return item; | 
				
			||||||
 | 
							}).collect(Collectors.toList()); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * 双票合格率 | 
				
			||||||
 | 
						 * @return | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						@Override | 
				
			||||||
 | 
						public List<CompleteTicketVo> completeTicket(String areaName,Integer type) { | 
				
			||||||
 | 
							// 获取水电站区域机构
 | 
				
			||||||
 | 
							Map<Dept, List<StationEntity>> areas = areaService.getAuthArea(null,null,Collections.singletonList(HomePageConstant.HYDROPOWER),HomePageConstant.HYDROPOWER_SERVETYPE); | 
				
			||||||
 | 
							if(MapUtils.isEmpty(areas)){ | 
				
			||||||
 | 
								return new ArrayList<>(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							List<Dept> depts = areas.keySet().stream().filter(dept -> StringUtils.isEmpty(areaName) || dept.getDeptName().contains(areaName)).collect(Collectors.toList()); | 
				
			||||||
 | 
							if(CollectionUtils.isEmpty(depts)){ | 
				
			||||||
 | 
								return new ArrayList<>(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							// 开始时间
 | 
				
			||||||
 | 
							LocalDate firstDay = LocalDate.now().withDayOfYear(1); | 
				
			||||||
 | 
							LocalDateTime firstDateTime = LocalDateTime.of(firstDay, LocalTime.MIN); | 
				
			||||||
 | 
							ExecutorService pool = Executors.newFixedThreadPool(depts.size()); | 
				
			||||||
 | 
							//监控线程执行完后返回结果
 | 
				
			||||||
 | 
							CountDownLatch countDownLatch = new CountDownLatch(depts.size()); | 
				
			||||||
 | 
							List<CompleteTicketVo> completeTickets = new ArrayList<>(); | 
				
			||||||
 | 
							pool.execute(()-> { | 
				
			||||||
 | 
								for (Dept dept: depts) { | 
				
			||||||
 | 
									// 双票
 | 
				
			||||||
 | 
									DoublePassRateVO doublePass = ticketInfoAllClient.getDoublePassRate(Collections.singletonList(dept.getId()), firstDateTime, LocalDateTime.now()); | 
				
			||||||
 | 
									CompleteTicketVo completeTicketVo = new CompleteTicketVo(); | 
				
			||||||
 | 
									if (ObjectUtil.isEmpty(doublePass)) { | 
				
			||||||
 | 
										completeTicketVo.setAreaName(dept.getDeptName()); | 
				
			||||||
 | 
										completeTicketVo.setTicketCount(0); | 
				
			||||||
 | 
										completeTicketVo.setCompleteCount(0); | 
				
			||||||
 | 
										completeTicketVo.setCompleteRate("0.0"); | 
				
			||||||
 | 
									} else { | 
				
			||||||
 | 
										completeTicketVo.setAreaName(dept.getDeptName()); | 
				
			||||||
 | 
										completeTicketVo.setTicketCount(doublePass.getDoubleTicketCount()); | 
				
			||||||
 | 
										completeTicketVo.setCompleteCount(doublePass.getDoubleTicketPassCount()); | 
				
			||||||
 | 
										completeTicketVo.setCompleteRate(doublePass.getDoublePassRate()); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									completeTickets.add(completeTicketVo); | 
				
			||||||
 | 
									countDownLatch.countDown(); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
							// 等待所有线程执行完成
 | 
				
			||||||
 | 
							try { | 
				
			||||||
 | 
								countDownLatch.await(); | 
				
			||||||
 | 
							} catch (InterruptedException e) { | 
				
			||||||
 | 
								e.printStackTrace(); | 
				
			||||||
 | 
								Thread.currentThread().interrupt(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							pool.shutdown(); | 
				
			||||||
 | 
							return completeTickets; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * 缺陷统计 | 
				
			||||||
 | 
						 * @param areaName | 
				
			||||||
 | 
						 * @param type | 
				
			||||||
 | 
						 * @return | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						@Override | 
				
			||||||
 | 
						public List<CompleteDefectVo> defect(String areaName, Integer type) { | 
				
			||||||
 | 
							if(HomePageConstant.DISTRIBUTION_NETWORK.equals(type)){ | 
				
			||||||
 | 
								return this.getFillDefect(areaName,type); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// 获取区域机构
 | 
				
			||||||
 | 
							Map<Dept, List<StationEntity>> areas = areaService.getAuthArea(null,null,Collections.singletonList(type),HomePageConstant.HYDROPOWER_SERVETYPE); | 
				
			||||||
 | 
							if(MapUtils.isEmpty(areas)){ | 
				
			||||||
 | 
								return new ArrayList<>(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							List<Dept> depts = areas.keySet().stream().filter(dept -> StringUtils.isEmpty(areaName) || dept.getDeptName().contains(areaName)).collect(Collectors.toList()); | 
				
			||||||
 | 
							if(CollectionUtils.isEmpty(depts)){ | 
				
			||||||
 | 
								return new ArrayList<>(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							String startTime = this.getFristDayByYear(); | 
				
			||||||
 | 
							String endTime = DateUtil.format(new Date(),DateUtil.PATTERN_DATETIME); | 
				
			||||||
 | 
							ExecutorService pool = Executors.newFixedThreadPool(depts.size()); | 
				
			||||||
 | 
							//监控线程执行完后返回结果
 | 
				
			||||||
 | 
							CountDownLatch countDownLatch = new CountDownLatch(depts.size()); | 
				
			||||||
 | 
							List<CompleteDefectVo> completeDefects = new ArrayList<>(); | 
				
			||||||
 | 
							pool.execute(()-> { | 
				
			||||||
 | 
								for (Dept dept: depts) { | 
				
			||||||
 | 
									// 缺陷
 | 
				
			||||||
 | 
									DutyDefectVO defectVO = phenomenonService.getDutyDefect(startTime, endTime, Collections.singletonList(dept.getId())); | 
				
			||||||
 | 
									CompleteDefectVo defect = new CompleteDefectVo(); | 
				
			||||||
 | 
									defect.setDefectCount(defectVO.getDefectSum()); | 
				
			||||||
 | 
									defect.setCompleteCount(defectVO.getDefect()); | 
				
			||||||
 | 
									if (defect.getDefectCount() <= 0) { | 
				
			||||||
 | 
										defect.setCompleteRate(0.0); | 
				
			||||||
 | 
									} else { | 
				
			||||||
 | 
										defect.setCompleteRate(BigDecimal.valueOf(defect.getCompleteCount() / defect.getDefectCount() * 100L).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue()); | 
				
			||||||
 | 
									} | 
				
			||||||
 | 
									completeDefects.add(defect); | 
				
			||||||
 | 
									countDownLatch.countDown(); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
							}); | 
				
			||||||
 | 
							// 等待所有线程执行完成
 | 
				
			||||||
 | 
							try { | 
				
			||||||
 | 
								countDownLatch.await(); | 
				
			||||||
 | 
							} catch (InterruptedException e) { | 
				
			||||||
 | 
								e.printStackTrace(); | 
				
			||||||
 | 
								Thread.currentThread().interrupt(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							pool.shutdown(); | 
				
			||||||
 | 
							return completeDefects; | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * 检修卡统计 | 
				
			||||||
 | 
						 * @param stationName | 
				
			||||||
 | 
						 * @param type | 
				
			||||||
 | 
						 * @return | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						@Override | 
				
			||||||
 | 
						public List<ExamineCardVo> examineCard(String stationName, Integer type) { | 
				
			||||||
 | 
							// 站点
 | 
				
			||||||
 | 
							List<StationEntity> stations = stationService.list(Wrappers.<StationEntity>lambdaQuery() | 
				
			||||||
 | 
								.eq(StationEntity::getType, type) | 
				
			||||||
 | 
								.eq(StationEntity::getServeType,HomePageConstant.HYDROPOWER_SERVETYPE) | 
				
			||||||
 | 
								.like(StationEntity::getName,stationName) | 
				
			||||||
 | 
							); | 
				
			||||||
 | 
							if(CollectionUtils.isEmpty(stations)){ | 
				
			||||||
 | 
								return new ArrayList<>(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							// 查询检修卡
 | 
				
			||||||
 | 
							String startTime = this.getFristDayByYear(); | 
				
			||||||
 | 
							String endTime = DateUtil.format(new Date(),DateUtil.PATTERN_DATETIME); | 
				
			||||||
 | 
							List<OverEntity> overs = overService.list(Wrappers.<OverEntity>lambdaQuery() | 
				
			||||||
 | 
									.in(OverEntity::getCreateDept,stations.stream().map(StationEntity::getRefDept).collect(Collectors.toList())) | 
				
			||||||
 | 
									.ge(OverEntity::getCreateTime,startTime) | 
				
			||||||
 | 
									.le(OverEntity::getCreateTime,endTime) | 
				
			||||||
 | 
							); | 
				
			||||||
 | 
							if(CollectionUtils.isEmpty(overs)){ | 
				
			||||||
 | 
								return new ArrayList<>(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							List<OverDetailsEntity> overDetails = overDetailsService.list(Wrappers.<OverDetailsEntity>lambdaQuery() | 
				
			||||||
 | 
								.in(OverDetailsEntity::getOverId,overs.stream().map(OverEntity::getId).collect(Collectors.toList())) | 
				
			||||||
 | 
							); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return overs.stream().collect(Collectors.groupingBy(OverEntity::getCreateDept)).entrySet().stream().map(entry->{ | 
				
			||||||
 | 
								ExamineCardVo examineCard = new ExamineCardVo(); | 
				
			||||||
 | 
								examineCard.setStationName(stations.stream().filter(station -> station.getRefDept().equals(entry.getKey())).collect(Collectors.toList()).get(0).getName()); | 
				
			||||||
 | 
								examineCard.setCardTotal(entry.getValue().stream().mapToDouble(over-> Double.valueOf(over.getTotalPrice().toString())).sum()); | 
				
			||||||
 | 
								examineCard.setCardCount(overDetails.stream().filter(detail-> detail.getOverId().equals(entry.getKey())).mapToInt(OverDetailsEntity::getQuantity).sum()); | 
				
			||||||
 | 
								return examineCard; | 
				
			||||||
 | 
							}).collect(Collectors.toList()); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * 配网设备在线率/Fa投入条数 | 
				
			||||||
 | 
						 * @param stationName | 
				
			||||||
 | 
						 * @param type | 
				
			||||||
 | 
						 * @param queryType | 
				
			||||||
 | 
						 * @return | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						@Override | 
				
			||||||
 | 
						public List<CompleteOtherVo> completeOther(String stationName, Integer type, Integer queryType) { | 
				
			||||||
 | 
							// 站点
 | 
				
			||||||
 | 
							List<StationEntity> stations = stationService.list(Wrappers.<StationEntity>lambdaQuery() | 
				
			||||||
 | 
								.eq(StationEntity::getType, type) | 
				
			||||||
 | 
								.eq(StationEntity::getServeType,HomePageConstant.HYDROPOWER_SERVETYPE) | 
				
			||||||
 | 
								.like(StationEntity::getName,stationName) | 
				
			||||||
 | 
							); | 
				
			||||||
 | 
							if(CollectionUtils.isEmpty(stations)){ | 
				
			||||||
 | 
								return new ArrayList<>(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							// 查询设备在线率/Fa投入条数
 | 
				
			||||||
 | 
							String startTime = this.getFristDayByYear(); | 
				
			||||||
 | 
							String endTime = DateUtil.format(new Date(),DateUtil.PATTERN_DATETIME); | 
				
			||||||
 | 
							List<OtherEntity> others = otherService.list(Wrappers.<OtherEntity>lambdaQuery() | 
				
			||||||
 | 
								.in(OtherEntity::getCreateDept,stations.stream().map(StationEntity::getRefDept).collect(Collectors.toList())) | 
				
			||||||
 | 
								.ge(OtherEntity::getCreateTime,startTime) | 
				
			||||||
 | 
								.le(OtherEntity::getCreateTime,endTime) | 
				
			||||||
 | 
							); | 
				
			||||||
 | 
							if(CollectionUtils.isEmpty(others)){ | 
				
			||||||
 | 
								return new ArrayList<>(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							return others.stream().collect(Collectors.groupingBy(OtherEntity::getCreateDept)).entrySet().stream().map(entry -> { | 
				
			||||||
 | 
								CompleteOtherVo other = new CompleteOtherVo(); | 
				
			||||||
 | 
								other.setStationName(stations.stream().filter(station -> station.getRefDept().equals(entry.getKey())).collect(Collectors.toList()).get(0).getName()); | 
				
			||||||
 | 
								if(CensusConstant.QUERY_TYPE_DEFAULT.equals(0)){ | 
				
			||||||
 | 
									other.setOnlineRate(entry.getValue().stream().mapToDouble(value ->Double.valueOf(value.getOnlineRate())).average().orElse(0.0)); | 
				
			||||||
 | 
								}else{ | 
				
			||||||
 | 
									other.setFaCount(entry.getValue().stream().mapToDouble(OtherEntity::getFaQuantity).sum()); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								return other; | 
				
			||||||
 | 
							}).collect(Collectors.toList()); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * 配网消缺 | 
				
			||||||
 | 
						 * @param areaName | 
				
			||||||
 | 
						 * @param type | 
				
			||||||
 | 
						 * @return | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						private List<CompleteDefectVo> getFillDefect(String areaName, Integer type) { | 
				
			||||||
 | 
							// 站点
 | 
				
			||||||
 | 
							List<StationEntity> stations = stationService.list(Wrappers.<StationEntity>lambdaQuery() | 
				
			||||||
 | 
								.eq(StationEntity::getType, type) | 
				
			||||||
 | 
								.eq(StationEntity::getServeType,2) | 
				
			||||||
 | 
								.like(StationEntity::getName,areaName) | 
				
			||||||
 | 
							); | 
				
			||||||
 | 
							if(CollectionUtils.isEmpty(stations)){ | 
				
			||||||
 | 
								return new ArrayList<>(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							// 缺陷填报记录
 | 
				
			||||||
 | 
							String startTime = this.getFristDayByYear(); | 
				
			||||||
 | 
							String endTime = DateUtil.format(new Date(),DateUtil.PATTERN_DATETIME); | 
				
			||||||
 | 
							List<SolveEntity> solves = solveService.list(Wrappers.<SolveEntity>lambdaQuery() | 
				
			||||||
 | 
								.in(SolveEntity::getCreateDept,stations.stream().map(StationEntity::getRefDept).collect(Collectors.toList())) | 
				
			||||||
 | 
								.ge(SolveEntity::getCreateTime,startTime) | 
				
			||||||
 | 
								.le(SolveEntity::getCreateTime,endTime) | 
				
			||||||
 | 
							); | 
				
			||||||
 | 
							if(CollectionUtils.isEmpty(solves)){ | 
				
			||||||
 | 
								return new ArrayList<>(); | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							return solves.stream().collect(Collectors.groupingBy(SolveEntity::getCreateDept)).entrySet().stream().map(entry -> { | 
				
			||||||
 | 
								CompleteDefectVo defect = new CompleteDefectVo(); | 
				
			||||||
 | 
								defect.setAreaName(stations.stream().filter(station -> station.getRefDept().equals(entry.getKey())).collect(Collectors.toList()).get(0).getName()); | 
				
			||||||
 | 
								defect.setDefectCount(entry.getValue().stream().mapToInt(SolveEntity::getSolveQuantity).sum()); | 
				
			||||||
 | 
								defect.setCompleteCount(entry.getValue().stream().mapToInt(SolveEntity::getSolveSucQuantity).sum()); | 
				
			||||||
 | 
								if (Math.abs(defect.getDefectCount()) <= 0) { | 
				
			||||||
 | 
									defect.setCompleteRate(0.0); | 
				
			||||||
 | 
								} else { | 
				
			||||||
 | 
									defect.setCompleteRate(BigDecimal.valueOf(defect.getCompleteCount() / defect.getDefectCount() * 100L).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue()); | 
				
			||||||
 | 
								} | 
				
			||||||
 | 
								return defect; | 
				
			||||||
 | 
							}).collect(Collectors.toList()); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * 日常维护统计 | 
				
			||||||
 | 
						 * @param param | 
				
			||||||
 | 
						 * @param query | 
				
			||||||
 | 
						 * @param type | 
				
			||||||
 | 
						 * @return | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						@Override | 
				
			||||||
 | 
						public R<IPage<OperMaintenanceTaskVO>> routineMaintenance(OperMaintenanceTaskDTO params, Query query, Integer type) { | 
				
			||||||
 | 
							// 获取区域机构
 | 
				
			||||||
 | 
							Map<Dept, List<StationEntity>> areas = areaService.getAuthArea(null,null,Collections.singletonList(type),HomePageConstant.HYDROPOWER_SERVETYPE); | 
				
			||||||
 | 
							if(MapUtils.isEmpty(areas)){ | 
				
			||||||
 | 
								return null; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							// 查询日常维护任务
 | 
				
			||||||
 | 
							params.setDeptIds(areas.entrySet().stream().map(entry->entry.getKey().getId()).collect(Collectors.toList())); | 
				
			||||||
 | 
							return maintenanceTaskService.list(params,query); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * 检修任务统计 | 
				
			||||||
 | 
						 * @param params | 
				
			||||||
 | 
						 * @param query | 
				
			||||||
 | 
						 * @param type | 
				
			||||||
 | 
						 * @return | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						@Override | 
				
			||||||
 | 
						public R<IPage<OperAccessTaskVO>> examineRepair(OperAccessTaskDTO params, Query query, Integer type) { | 
				
			||||||
 | 
							// 获取区域机构
 | 
				
			||||||
 | 
							Map<Dept, List<StationEntity>> areas = areaService.getAuthArea(null,null,Collections.singletonList(type),HomePageConstant.HYDROPOWER_SERVETYPE); | 
				
			||||||
 | 
							if(MapUtils.isEmpty(areas)){ | 
				
			||||||
 | 
								return null; | 
				
			||||||
 | 
							} | 
				
			||||||
 | 
							// 查询检修任务
 | 
				
			||||||
 | 
							params.setDeptIds(areas.keySet().stream().map(key-> key.getId()).collect(Collectors.toList())); | 
				
			||||||
 | 
							return accessTaskService.list(params,query); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** | 
				
			||||||
 | 
						 * 获取当年的第一天 | 
				
			||||||
 | 
						 * @return | 
				
			||||||
 | 
						 */ | 
				
			||||||
 | 
						private String getFristDayByYear() { | 
				
			||||||
 | 
							Calendar calendar = Calendar.getInstance(); | 
				
			||||||
 | 
							calendar.add(Calendar.MONTH, -calendar.get(Calendar.MONTH)); | 
				
			||||||
 | 
							calendar.add(Calendar.DATE, -calendar.get(Calendar.DATE) + 1); | 
				
			||||||
 | 
							calendar.add(Calendar.HOUR_OF_DAY, -calendar.get(Calendar.HOUR_OF_DAY)); | 
				
			||||||
 | 
							calendar.add(Calendar.MINUTE, -calendar.get(Calendar.MINUTE)); | 
				
			||||||
 | 
							calendar.add(Calendar.SECOND, -calendar.get(Calendar.SECOND)); | 
				
			||||||
 | 
							return sdf.format(calendar.getTime()); | 
				
			||||||
 | 
						} | 
				
			||||||
 | 
					} | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue