diff --git a/detection/src/main/java/com/njcn/gather/monitor/mapper/PqMonitorMapper.java b/detection/src/main/java/com/njcn/gather/monitor/mapper/PqMonitorMapper.java index 17d59a0c..f45eedab 100644 --- a/detection/src/main/java/com/njcn/gather/monitor/mapper/PqMonitorMapper.java +++ b/detection/src/main/java/com/njcn/gather/monitor/mapper/PqMonitorMapper.java @@ -1,8 +1,10 @@ package com.njcn.gather.monitor.mapper; import com.github.yulichang.base.MPJBaseMapper; +import com.njcn.gather.device.pojo.po.PqDevSub; import com.njcn.gather.device.pojo.vo.PreDetection; import com.njcn.gather.monitor.pojo.po.PqMonitor; +import com.njcn.gather.plan.pojo.po.AdPlan; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -33,5 +35,21 @@ public interface PqMonitorMapper extends MPJBaseMapper { PqMonitor getByDevIdAndNum(@Param("devId") String devId, @Param("num") Integer num); List listByDevIds(@Param("devIds") List devIds); + + void updateDeviceCheckState(@Param("devId")String devId, @Param("value") Integer value); + + void updateDeviceCheckResult(@Param("devId")String devId, @Param("value") Integer value); + + void updateDeviceReportRState(@Param("devId")String devId, @Param("value") Integer value); + + AdPlan getPlanByDevId(@Param("devId") String devId); + + List listDevSubByPlanId(@Param("planId") String planId); + + void updatePlanCheckState(@Param("planId") String planId, @Param("value") Integer value); + + void updatePlanCheckResult(@Param("planId") String planId, @Param("value") Integer value); + + void updatePlanReportRState(@Param("planId") String planId, @Param("value") Integer value); } diff --git a/detection/src/main/java/com/njcn/gather/monitor/mapper/mapping/PqMonitorMapper.xml b/detection/src/main/java/com/njcn/gather/monitor/mapper/mapping/PqMonitorMapper.xml index eb0ea731..76048adf 100644 --- a/detection/src/main/java/com/njcn/gather/monitor/mapper/mapping/PqMonitorMapper.xml +++ b/detection/src/main/java/com/njcn/gather/monitor/mapper/mapping/PqMonitorMapper.xml @@ -2,6 +2,7 @@ + + + + update pq_dev_sub + set Check_State = #{value} + where dev_Id = #{devId} + + + + update pq_dev_sub + set Check_Result = #{value} + where dev_Id = #{devId} + + + + update pq_dev_sub + set Report_State = #{value} + where dev_Id = #{devId} + + + + + + + + update ad_plan + set Test_State = #{value} + where id = #{planId} + + + + update ad_plan + set Result = #{value} + where id = #{planId} + + + + update ad_plan + set Report_State = #{value} + where id = #{planId} + diff --git a/detection/src/main/java/com/njcn/gather/monitor/service/impl/PqMonitorServiceImpl.java b/detection/src/main/java/com/njcn/gather/monitor/service/impl/PqMonitorServiceImpl.java index 8acec3fc..dc3f56f2 100644 --- a/detection/src/main/java/com/njcn/gather/monitor/service/impl/PqMonitorServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/monitor/service/impl/PqMonitorServiceImpl.java @@ -10,11 +10,15 @@ import com.njcn.common.pojo.exception.BusinessException; import com.njcn.gather.detection.util.socket.CnSocketUtil; import com.njcn.gather.device.pojo.enums.CheckResultEnum; import com.njcn.gather.device.pojo.enums.CheckStateEnum; +import com.njcn.gather.device.pojo.enums.DevReportStateEnum; +import com.njcn.gather.device.pojo.po.PqDevSub; import com.njcn.gather.monitor.mapper.PqMonitorMapper; import com.njcn.gather.monitor.pojo.param.PqMonitorParam; import com.njcn.gather.monitor.pojo.po.PqMonitor; import com.njcn.gather.monitor.service.IPqMonitorService; import com.njcn.gather.plan.pojo.enums.DataSourceEnum; +import com.njcn.gather.plan.pojo.enums.PlanReportStateEnum; +import com.njcn.gather.plan.pojo.po.AdPlan; import com.njcn.gather.pojo.enums.DetectionResponseEnum; import com.njcn.gather.storage.service.DetectionDataDealService; import com.njcn.gather.storage.service.impl.DetectionDataServiceImpl; @@ -26,6 +30,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicReference; @@ -62,11 +67,104 @@ public class PqMonitorServiceImpl extends ServiceImpl paramList) { // 先删除原有数据 - this.deletePqMonitorByDevId(devId); - // 再添加新数据 +// this.deletePqMonitorByDevId(devId); + + // 添加新数据 List pqMonitorList = BeanUtil.copyToList(paramList, PqMonitor.class); pqMonitorList.forEach(pqMonitor -> pqMonitor.setDevId(devId)); - return this.saveBatch(pqMonitorList); + + List existedMonitorList = this.listPqMonitorByDevIds(Collections.singletonList(devId)); + + Map> map = pqMonitorList.stream().collect(Collectors.groupingBy(PqMonitor::getNum)); + + List newMonitorList = new ArrayList<>(); + map.forEach((num, monitorList) -> { + PqMonitor pqMonitor = existedMonitorList.stream().filter(monitor -> monitor.getNum() == num).findFirst().orElse(null); + + if (ObjectUtil.isNotNull(pqMonitor)) { + BeanUtil.copyProperties(monitorList.get(0), pqMonitor, "id", "realtimeResult", "statisticsResult", "recordedResult", "realtimeNum", "statisticsNum", "recordedNum", "resultType", "qualifiedNum"); + newMonitorList.add(pqMonitor); + } else { + newMonitorList.addAll(monitorList); + } + }); + + // 同步更新设备的状态 + List enableCheckMonitorList = newMonitorList.stream().filter(pqMonitor -> pqMonitor.getCheckFlag() == 1).collect(Collectors.toList()); + List checkedMonitorList = enableCheckMonitorList.stream().filter(pqMonitor -> ObjectUtil.isNotNull(pqMonitor.getResultType())).collect(Collectors.toList()); + + if (enableCheckMonitorList.size() == checkedMonitorList.size() && checkedMonitorList.size() > 0) { + this.baseMapper.updateDeviceCheckState(devId, CheckStateEnum.CHECKED.getValue()); + this.baseMapper.updateDeviceReportRState(devId, DevReportStateEnum.NOT_GENERATED.getValue()); + } + if (enableCheckMonitorList.size() > checkedMonitorList.size() && checkedMonitorList.size() > 0) { + this.baseMapper.updateDeviceCheckState(devId, CheckStateEnum.CHECKING.getValue()); + this.baseMapper.updateDeviceReportRState(devId, DevReportStateEnum.NOT_GENERATED.getValue()); + } + if (enableCheckMonitorList.size() > 0 && checkedMonitorList.size() == 0) { + this.baseMapper.updateDeviceCheckState(devId, CheckStateEnum.UNCHECKED.getValue()); + } + + List monitorResultList = checkedMonitorList.stream().map(pqMonitor -> { + String resultType = pqMonitor.getResultType(); + DataSourceEnum dataSourceEnum = DataSourceEnum.ofByValue(resultType); + switch (dataSourceEnum) { + case REAL_DATA: + return pqMonitor.getRealtimeResult(); + case WAVE_DATA: + return pqMonitor.getRecordedResult(); + case MINUTE_STATISTICS_MAX: + case MINUTE_STATISTICS_MIN: + case MINUTE_STATISTICS_AVG: + case MINUTE_STATISTICS_CP95: + return pqMonitor.getStatisticsResult(); + default: + break; + } + return null; + }).collect(Collectors.toList()); + + long qualifiedCount = monitorResultList.stream().filter(result -> result != null && result == 1).count(); + if (qualifiedCount == monitorResultList.size() && monitorResultList.size() > 0) { + this.baseMapper.updateDeviceCheckResult(devId, CheckResultEnum.ACCORD.getValue()); + } else if (monitorResultList.size() > 0) { + this.baseMapper.updateDeviceCheckResult(devId, CheckResultEnum.NOT_ACCORD.getValue()); + } else { + this.baseMapper.updateDeviceCheckResult(devId, CheckResultEnum.UNCHECKED.getValue()); + } + + // 同步更新计划的状态 + AdPlan plan = this.baseMapper.getPlanByDevId(devId); + List devSubList = this.baseMapper.listDevSubByPlanId(plan.getId()); + + List checkedDevSubList = devSubList.stream().filter(pqDevSub -> pqDevSub.getCheckState() == CheckStateEnum.CHECKED.getValue()).collect(Collectors.toList()); + List checkingDevSubList = devSubList.stream().filter(pqDevSub -> pqDevSub.getCheckState() == CheckStateEnum.CHECKING.getValue()).collect(Collectors.toList()); + if (checkedDevSubList.size() == devSubList.size() && devSubList.size() > 0) { + this.baseMapper.updatePlanCheckState(plan.getId(), CheckStateEnum.CHECKED.getValue()); + } else if (checkedDevSubList.size() > 0 || checkingDevSubList.size() > 0) { + this.baseMapper.updatePlanCheckState(plan.getId(), CheckStateEnum.CHECKING.getValue()); + } else { + this.baseMapper.updatePlanCheckState(plan.getId(), CheckStateEnum.UNCHECKED.getValue()); + } + + List accordDevSubList = checkedDevSubList.stream().filter(pqDevSub -> pqDevSub.getCheckResult() == CheckResultEnum.ACCORD.getValue()).collect(Collectors.toList()); + if (accordDevSubList.size() == checkedDevSubList.size() && checkedDevSubList.size() > 0) { + this.baseMapper.updatePlanCheckResult(plan.getId(), CheckResultEnum.ACCORD.getValue()); + } else if (accordDevSubList.size() > 0) { + this.baseMapper.updatePlanCheckResult(plan.getId(), CheckResultEnum.NOT_ACCORD.getValue()); + } else { + this.baseMapper.updatePlanCheckResult(plan.getId(), CheckResultEnum.UNCHECKED.getValue()); + } + + List generatedDevSubList = checkedDevSubList.stream().filter(pqDevSub -> pqDevSub.getReportState() == DevReportStateEnum.GENERATED.getValue()).collect(Collectors.toList()); + if (generatedDevSubList.size() == checkedDevSubList.size() && checkedDevSubList.size() > 0) { + this.baseMapper.updatePlanReportRState(plan.getId(), PlanReportStateEnum.REPORT_STATE_ALL_GENERATED.getValue()); + } else if (generatedDevSubList.size() > 0) { + this.baseMapper.updatePlanReportRState(plan.getId(), PlanReportStateEnum.REPORT_STATE_PARTIALLY_GENERATED.getValue()); + } else { + this.baseMapper.updatePlanReportRState(plan.getId(), PlanReportStateEnum.REPORT_STATE_NOT_GENERATED.getValue()); + } + return this.saveOrUpdateBatch(newMonitorList); } @Override diff --git a/user/src/main/java/com/njcn/gather/user/user/filter/AuthGlobalFilter.java b/user/src/main/java/com/njcn/gather/user/user/filter/AuthGlobalFilter.java index b2238322..ea9ea77c 100644 --- a/user/src/main/java/com/njcn/gather/user/user/filter/AuthGlobalFilter.java +++ b/user/src/main/java/com/njcn/gather/user/user/filter/AuthGlobalFilter.java @@ -6,7 +6,6 @@ import com.njcn.common.pojo.constant.SecurityConstants; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.JwtUtil; -import com.njcn.web.utils.HttpResultUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.core.Ordered; import org.springframework.stereotype.Component; @@ -25,7 +24,7 @@ import java.util.List; @Slf4j @Component public class AuthGlobalFilter implements Filter, Ordered { - private final static List IGNORE_URI = Arrays.asList("/admin/login","/admin/getPublicKey", "/report/generateReport"); + private final static List IGNORE_URI = Arrays.asList("/doc.html", "/admin/login", "/admin/getPublicKey", "/report/generateReport"); @Override public int getOrder() {