|
@@ -0,0 +1,308 @@
|
|
|
+package com.gyee.wisdom.alarm.sharding.biz;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.gyee.wisdom.alarm.sharding.cache.DataDictionaryCache;
|
|
|
+import com.gyee.wisdom.alarm.sharding.entity.Alertrule2;
|
|
|
+import com.gyee.wisdom.alarm.sharding.entity.EarlyReport;
|
|
|
+import com.gyee.wisdom.alarm.sharding.entity.EarlyReportWindturbine;
|
|
|
+import com.gyee.wisdom.alarm.sharding.entity.InspectOrder;
|
|
|
+import com.gyee.wisdom.alarm.sharding.model.InspectOrderDto;
|
|
|
+import com.gyee.wisdom.alarm.sharding.service.EarlyReportService;
|
|
|
+import com.gyee.wisdom.alarm.sharding.service.EarlyReportWindturbineService;
|
|
|
+import com.gyee.wisdom.alarm.sharding.service.InspectOrderService;
|
|
|
+import com.gyee.wisdom.alarm.sharding.util.ResponseWrapper;
|
|
|
+import com.gyee.wisdom.alarm.sharding.util.SnowflakeGenerator;
|
|
|
+import com.gyee.wisdom.common.utils.DateUtil;
|
|
|
+import com.gyee.wisdom.common.utils.StringUtil;
|
|
|
+import com.mysql.cj.xdevapi.WarningImpl;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @description:
|
|
|
+ * @auther: Wanghs
|
|
|
+ * @date: 2022-09-12
|
|
|
+ */
|
|
|
+@Component
|
|
|
+public class InspectOrderBiz {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private EarlyReportWindturbineService earlyReportWindturbineService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private InspectOrderService inspectOrderService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private EarlyReportService earlyReportService;
|
|
|
+
|
|
|
+ public IPage<InspectOrderDto> getInspectOrderDtoPage(Integer pageNum, Integer pageSize, String windturbineId, Optional<Integer> step, Date startTime, Date endTime) {
|
|
|
+ //节点 1-待审核,2-已审核,3-未计划,4-已计划,5-未巡检,6-已巡检
|
|
|
+ IPage<InspectOrder> inspectOrderByStep = getInspectOrderByStep(pageNum, pageSize, step, windturbineId, startTime, endTime);
|
|
|
+ List<InspectOrderDto> inspectOrderDtos = packInspectOrderInspectOrderDto(inspectOrderByStep.getRecords());
|
|
|
+ Page<InspectOrderDto> pageDto = new Page<>();
|
|
|
+ pageDto.setPages(inspectOrderByStep.getPages()).setRecords(inspectOrderDtos).setTotal(inspectOrderByStep.getTotal()).setCurrent(inspectOrderByStep.getCurrent());
|
|
|
+ return pageDto;
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<InspectOrderDto> getInspectOrderDtoPage(String stationId, String windturbineId) {
|
|
|
+ List<EarlyReportWindturbine> noVerifiedPort = getNoVerifiedPort(stationId, windturbineId);
|
|
|
+ List<InspectOrderDto> inspectOrderDtos = packWindturbineReportInspectOrderDto(noVerifiedPort);
|
|
|
+ return inspectOrderDtos;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param
|
|
|
+ * @return
|
|
|
+ * @return java.util.List<com.gyee.wisdom.alarm.sharding.entity.EarlyReportWindturbine>
|
|
|
+ * @author Wanghs
|
|
|
+ * @description 获取最近的一批报告,没有被审核过的风机报告
|
|
|
+ * @date 2022/9/12
|
|
|
+ **/
|
|
|
+ private List<EarlyReportWindturbine> getNoVerifiedPort(String stationId, String windturbineId) {
|
|
|
+
|
|
|
+ List<EarlyReportWindturbine> resultList = new ArrayList<>();
|
|
|
+
|
|
|
+ //获取id最大的数据
|
|
|
+ EarlyReport lastEarlyReport = earlyReportService.findLastEarlyReport();
|
|
|
+ // 根据最后一条数据获取报告生成日期
|
|
|
+ Date date = DateUtil.truncate(lastEarlyReport.getReportDate());
|
|
|
+ QueryWrapper<EarlyReport> wrapper = new QueryWrapper<EarlyReport>().ge("REPORTDATE", date);
|
|
|
+ List<EarlyReport> earlyReportList = earlyReportService.list(wrapper);
|
|
|
+ List<String> collect = earlyReportList.stream().map(s -> s.getId()).collect(Collectors.toList());
|
|
|
+ List<EarlyReportWindturbine> reportWindturbineList = earlyReportWindturbineService.getReportWindturbineByReportId(collect);
|
|
|
+ //筛选出 不是对比数据,且不是全场平局,且没有审核过的数据
|
|
|
+ reportWindturbineList = reportWindturbineList.stream().filter(s -> s.isVerified() == false && s.isCompared() == false && !s.getWindturbineId().equals("全场平均")).collect(Collectors.toList());
|
|
|
+
|
|
|
+ if (StringUtil.isNotBlank(windturbineId))
|
|
|
+ reportWindturbineList = reportWindturbineList.stream().filter(s -> s.getWindturbineId().equals(windturbineId)).collect(Collectors.toList());
|
|
|
+ if (StringUtils.isNotBlank(stationId))
|
|
|
+ reportWindturbineList = reportWindturbineList.stream().filter(s -> s.getEarlyReport().getStationId().equals(stationId)).collect(Collectors.toList());
|
|
|
+
|
|
|
+ return reportWindturbineList;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<InspectOrderDto> packWindturbineReportInspectOrderDto(List<EarlyReportWindturbine> earlyReportWindturbineList) {
|
|
|
+ List<InspectOrderDto> resultList = new ArrayList<>();
|
|
|
+
|
|
|
+ earlyReportWindturbineList.stream().forEach(s -> {
|
|
|
+
|
|
|
+ InspectOrderDto dto = new InspectOrderDto()
|
|
|
+ .setReportWindturbineId(s.getId())
|
|
|
+ .setWindturbineId(s.getWindturbineId())
|
|
|
+ .setWindpowerStationId(s.getEarlyReport().getStationId())
|
|
|
+ .setEarlyReport(true)
|
|
|
+ .setEarlyReportWindturbine(s);
|
|
|
+ resultList.add(dto);
|
|
|
+ });
|
|
|
+ return resultList;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private IPage<InspectOrder> getInspectOrderByStep(int pageNum, int pageSize, Optional<Integer> step, String windturbineId, Date startTime, Date endTime) {
|
|
|
+ List<InspectOrder> resultList = new ArrayList<>();
|
|
|
+ //节点 1-待审核,2-已审核,3-未计划,4-已计划,5-未巡检,6-已巡检
|
|
|
+ QueryWrapper<InspectOrder> wrapper = new QueryWrapper<>();
|
|
|
+
|
|
|
+ if (step.isPresent()) {
|
|
|
+ if (step.get() == 2 || step.get() == 3) {
|
|
|
+ wrapper.isNotNull("VERIFYTIME");//评审时间不为空
|
|
|
+ wrapper.isNull("CREATEPLANTIME");//计划时间为空
|
|
|
+ wrapper.isNull("INSPECTTIME");//巡检时间为空
|
|
|
+ } else if (step.get() == 4 || step.get() == 5) {
|
|
|
+ wrapper.isNotNull("VERIFYTIME");//评审时间不为空
|
|
|
+ wrapper.isNotNull("CREATEPLANTIME");//计划时间不为空
|
|
|
+ wrapper.isNull("INSPECTTIME");//巡检时间为空
|
|
|
+ } else if (step.get() == 6) {
|
|
|
+ wrapper.isNotNull("VERIFYTIME");//评审时间不为空
|
|
|
+ wrapper.isNotNull("CREATEPLANTIME");//计划时间不为空
|
|
|
+ wrapper.isNotNull("INSPECTTIME");//巡检时间不为空
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtil.isNotBlank(windturbineId))
|
|
|
+ wrapper.eq("WINDTURBINEID", windturbineId);
|
|
|
+ if (startTime != null)
|
|
|
+ wrapper.gt("VERIFYTIME", startTime);
|
|
|
+ if (endTime != null)
|
|
|
+ wrapper.lt("VERIFYTIME", endTime);
|
|
|
+
|
|
|
+ Page<InspectOrder> page = new Page(pageNum, pageSize);
|
|
|
+
|
|
|
+ IPage<InspectOrder> pageResult = inspectOrderService.page(page, wrapper);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if (pageResult.getRecords().size() > 0) {
|
|
|
+ List<EarlyReportWindturbine> reportWindturbineById = earlyReportWindturbineService.getReportWindturbineById(pageResult.getRecords().stream().map(s -> s.getReportWindturbineId()).collect(Collectors.toList()));
|
|
|
+ pageResult.getRecords().forEach(s -> {
|
|
|
+ Optional<EarlyReportWindturbine> first = reportWindturbineById.stream().filter(k -> k.getId().equals(s.getReportWindturbineId())).findFirst();
|
|
|
+ if (first.isPresent())
|
|
|
+ s.setEarlyReportWindturbine(first.get());
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ return pageResult;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<InspectOrderDto> packInspectOrderInspectOrderDto(List<InspectOrder> orderList) {
|
|
|
+ List<InspectOrderDto> resultList = new ArrayList<>();
|
|
|
+
|
|
|
+ orderList.stream().forEach(s -> {
|
|
|
+ InspectOrderDto dto = new InspectOrderDto();
|
|
|
+ BeanUtils.copyProperties(s, dto);
|
|
|
+ dto.setEarlyReport(false);
|
|
|
+ resultList.add(dto);
|
|
|
+ });
|
|
|
+
|
|
|
+ return resultList;
|
|
|
+ }
|
|
|
+
|
|
|
+ public ResponseWrapper updateInspectOrder(String user, InspectOrderDto dto) {
|
|
|
+ ResponseWrapper wrapper = null;
|
|
|
+ //代表为 报告评审环节,因此需要 向InspectOrder表中新增数据
|
|
|
+ if (StringUtils.isBlank(dto.getId())) {
|
|
|
+
|
|
|
+ InspectOrder order = new InspectOrder();
|
|
|
+ order.setId(String.valueOf(SnowflakeGenerator.generateId()))
|
|
|
+ .setVerifyTime(new Date())
|
|
|
+ .setVerifyUser(user)
|
|
|
+ .setVerifyView(dto.getVerifyView())
|
|
|
+ .setVerifyResult(dto.isVerifyResult())
|
|
|
+ .setClosed(dto.isClosed());
|
|
|
+
|
|
|
+ boolean save = inspectOrderService.save(order);
|
|
|
+ if (save)
|
|
|
+ wrapper = ResponseWrapper.success("评审成功");
|
|
|
+ else
|
|
|
+ wrapper = ResponseWrapper.error("评审失败");
|
|
|
+ } else {
|
|
|
+ InspectOrder order = inspectOrderService.getById(dto.getId());
|
|
|
+
|
|
|
+ if (order == null) {
|
|
|
+ wrapper = ResponseWrapper.error("找不到对应的巡检单");
|
|
|
+ } else {
|
|
|
+ //计划环节
|
|
|
+ if (dto.getCreatePlanTime() != null) {
|
|
|
+ order.setCreatePlanUser(user)
|
|
|
+ .setCreatePlanTime(dto.getCreatePlanTime())
|
|
|
+ .setPlanStartTime(dto.getPlanStartTime())
|
|
|
+ .setPlanEndTime(dto.getPlanEndTime());
|
|
|
+ }
|
|
|
+ //巡检环节
|
|
|
+ if (dto.getInspectTime() != null) {
|
|
|
+ order.setInspectUser(user)
|
|
|
+ .setInspectTime(dto.getInspectTime())
|
|
|
+ .setInspectView(dto.getInspectView())
|
|
|
+ .setAccordreport(dto.isAccordreport())
|
|
|
+ .setClosed(dto.isClosed());
|
|
|
+ }
|
|
|
+
|
|
|
+ boolean b = inspectOrderService.updateById(order);
|
|
|
+ if (b)
|
|
|
+ wrapper = ResponseWrapper.success("更新成功");
|
|
|
+ else
|
|
|
+ wrapper = ResponseWrapper.error("更新失败");
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return wrapper;
|
|
|
+ }
|
|
|
+
|
|
|
+ public JSONObject getOrderCountInfo(String stationId) {
|
|
|
+
|
|
|
+ Map<String, Integer> inspectOrderCount = getInspectOrderCount(stationId);
|
|
|
+ Map<String, Integer> noVerifyReport = getNoVerifyReport(stationId);
|
|
|
+
|
|
|
+ String dicString="";
|
|
|
+ JSONObject orderObject = new JSONObject();
|
|
|
+ JSONObject reportObject = new JSONObject();
|
|
|
+ for (Map.Entry<String, Integer> entry :
|
|
|
+ inspectOrderCount.entrySet()) {
|
|
|
+ orderObject.put(entry.getKey(), entry.getValue());
|
|
|
+ }
|
|
|
+ for (Map.Entry<String, Integer> entry :
|
|
|
+ noVerifyReport.entrySet()) {
|
|
|
+ reportObject.put(entry.getKey(), entry.getValue());
|
|
|
+ String partName = DataDictionaryCache.getPartName(entry.getKey());
|
|
|
+ dicString=dicString+","+entry.getKey()+"-"+partName;
|
|
|
+ }
|
|
|
+ dicString=dicString+",YSH-已审核,WJH-未计划,YJH-已计划,DXJ-待巡检,YXJ-已巡检";
|
|
|
+
|
|
|
+ JSONObject resultObject = new JSONObject();
|
|
|
+ resultObject.put("report", reportObject);
|
|
|
+ resultObject.put("order", orderObject);
|
|
|
+ resultObject.put("dic",dicString);
|
|
|
+ return resultObject;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Map<String, Integer> getInspectOrderCount(String stationId) {
|
|
|
+
|
|
|
+ List<InspectOrder> list = new ArrayList<>();
|
|
|
+ if (StringUtils.isNotBlank(stationId)) {
|
|
|
+ QueryWrapper<InspectOrder> wrapper = new QueryWrapper<>();
|
|
|
+ wrapper.eq("WINDPOWERSTATIONID", stationId);
|
|
|
+ list = inspectOrderService.list(wrapper);
|
|
|
+ } else {
|
|
|
+ list = inspectOrderService.list();
|
|
|
+ }
|
|
|
+
|
|
|
+ //已审核
|
|
|
+ List<InspectOrder> ysh_collect = list.stream().filter(s -> s.getVerifyTime() != null && s.getCreatePlanTime() == null && s.getInspectTime() == null).collect(Collectors.toList());
|
|
|
+
|
|
|
+ //待计划
|
|
|
+ List<InspectOrder> wjh_collect = list.stream().filter(s -> s.getVerifyTime() != null && s.getCreatePlanTime() == null && s.getInspectTime() == null && s.isClosed() == false).collect(Collectors.toList());
|
|
|
+
|
|
|
+ //已计划 待巡检
|
|
|
+ List<InspectOrder> yjh_collect = list.stream().filter(s -> s.getVerifyTime() != null && s.getCreatePlanTime() != null && s.getInspectTime() == null).collect(Collectors.toList());
|
|
|
+
|
|
|
+ //已巡检
|
|
|
+ List<InspectOrder> yxj_collect = list.stream().filter(s -> s.getVerifyTime() != null && s.getCreatePlanTime() != null && s.getInspectTime() != null && s.isClosed() == true).collect(Collectors.toList());
|
|
|
+
|
|
|
+ Map<String, Integer> resultMap = new HashMap<>();
|
|
|
+
|
|
|
+ resultMap.put("YSH", ysh_collect.size());
|
|
|
+ resultMap.put("WJH", wjh_collect.size());
|
|
|
+ resultMap.put("YJH", yjh_collect.size());
|
|
|
+ resultMap.put("DXJ", yjh_collect.size());
|
|
|
+ resultMap.put("YXJ", yxj_collect.size());
|
|
|
+
|
|
|
+ return resultMap;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public Map<String, Integer> getNoVerifyReport(String stationId) {
|
|
|
+
|
|
|
+ Map<String, Integer> resultMap = new HashMap<>();
|
|
|
+
|
|
|
+ Map<String, List<EarlyReportWindturbine>> map = new HashMap<>();
|
|
|
+ List<EarlyReportWindturbine> noVerifiedPort = getNoVerifiedPort(stationId, "");
|
|
|
+ for (EarlyReportWindturbine windturbine :
|
|
|
+ noVerifiedPort) {
|
|
|
+ String relatedParts = windturbine.getEarlyReport().getRelatedParts();
|
|
|
+ if (!map.containsKey(relatedParts)) {
|
|
|
+ map.put(relatedParts, new ArrayList<>());
|
|
|
+ }
|
|
|
+ List<EarlyReportWindturbine> earlyReportWindturbines = map.get(relatedParts);
|
|
|
+ earlyReportWindturbines.add(windturbine);
|
|
|
+ }
|
|
|
+
|
|
|
+ for (Map.Entry<String, List<EarlyReportWindturbine>> entry :
|
|
|
+ map.entrySet()) {
|
|
|
+ if (!resultMap.containsKey(entry.getKey())) {
|
|
|
+ resultMap.put(entry.getKey(), entry.getValue().size());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return resultMap;
|
|
|
+ }
|
|
|
+}
|