监测点变化时同步更新设备状态、计划状态
This commit is contained in:
@@ -1,8 +1,10 @@
|
|||||||
package com.njcn.gather.monitor.mapper;
|
package com.njcn.gather.monitor.mapper;
|
||||||
|
|
||||||
import com.github.yulichang.base.MPJBaseMapper;
|
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.device.pojo.vo.PreDetection;
|
||||||
import com.njcn.gather.monitor.pojo.po.PqMonitor;
|
import com.njcn.gather.monitor.pojo.po.PqMonitor;
|
||||||
|
import com.njcn.gather.plan.pojo.po.AdPlan;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -33,5 +35,21 @@ public interface PqMonitorMapper extends MPJBaseMapper<PqMonitor> {
|
|||||||
PqMonitor getByDevIdAndNum(@Param("devId") String devId, @Param("num") Integer num);
|
PqMonitor getByDevIdAndNum(@Param("devId") String devId, @Param("num") Integer num);
|
||||||
|
|
||||||
List<PqMonitor> listByDevIds(@Param("devIds") List<String> devIds);
|
List<PqMonitor> listByDevIds(@Param("devIds") List<String> 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<PqDevSub> 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.njcn.gather.monitor.mapper.PqMonitorMapper">
|
<mapper namespace="com.njcn.gather.monitor.mapper.PqMonitorMapper">
|
||||||
|
|
||||||
|
|
||||||
<select id="selectMonitorInfo"
|
<select id="selectMonitorInfo"
|
||||||
resultType="com.njcn.gather.device.pojo.vo.PreDetection$MonitorListDTO">
|
resultType="com.njcn.gather.device.pojo.vo.PreDetection$MonitorListDTO">
|
||||||
SELECT CONCAT(pq_dev.IP, '_', Num) as lineId,
|
SELECT CONCAT(pq_dev.IP, '_', Num) as lineId,
|
||||||
@@ -41,5 +42,55 @@
|
|||||||
</foreach>
|
</foreach>
|
||||||
order by Num
|
order by Num
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<update id="updateDeviceCheckState">
|
||||||
|
update pq_dev_sub
|
||||||
|
set Check_State = #{value}
|
||||||
|
where dev_Id = #{devId}
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<update id="updateDeviceCheckResult">
|
||||||
|
update pq_dev_sub
|
||||||
|
set Check_Result = #{value}
|
||||||
|
where dev_Id = #{devId}
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<update id="updateDeviceReportRState">
|
||||||
|
update pq_dev_sub
|
||||||
|
set Report_State = #{value}
|
||||||
|
where dev_Id = #{devId}
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<select id="getPlanByDevId" resultType="com.njcn.gather.plan.pojo.po.AdPlan">
|
||||||
|
select *
|
||||||
|
from ad_plan
|
||||||
|
inner join pq_dev on ad_plan.id = pq_dev.Plan_Id
|
||||||
|
where pq_dev.Id = #{devId}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="listDevSubByPlanId" resultType="com.njcn.gather.device.pojo.po.PqDevSub">
|
||||||
|
select *
|
||||||
|
from pq_dev_sub
|
||||||
|
inner join pq_dev on pq_dev_sub.dev_Id = pq_dev.Id
|
||||||
|
where pq_dev.Plan_Id = #{planId}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<update id="updatePlanCheckState">
|
||||||
|
update ad_plan
|
||||||
|
set Test_State = #{value}
|
||||||
|
where id = #{planId}
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<update id="updatePlanCheckResult">
|
||||||
|
update ad_plan
|
||||||
|
set Result = #{value}
|
||||||
|
where id = #{planId}
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<update id="updatePlanReportRState">
|
||||||
|
update ad_plan
|
||||||
|
set Report_State = #{value}
|
||||||
|
where id = #{planId}
|
||||||
|
</update>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
||||||
|
|||||||
@@ -10,11 +10,15 @@ import com.njcn.common.pojo.exception.BusinessException;
|
|||||||
import com.njcn.gather.detection.util.socket.CnSocketUtil;
|
import com.njcn.gather.detection.util.socket.CnSocketUtil;
|
||||||
import com.njcn.gather.device.pojo.enums.CheckResultEnum;
|
import com.njcn.gather.device.pojo.enums.CheckResultEnum;
|
||||||
import com.njcn.gather.device.pojo.enums.CheckStateEnum;
|
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.mapper.PqMonitorMapper;
|
||||||
import com.njcn.gather.monitor.pojo.param.PqMonitorParam;
|
import com.njcn.gather.monitor.pojo.param.PqMonitorParam;
|
||||||
import com.njcn.gather.monitor.pojo.po.PqMonitor;
|
import com.njcn.gather.monitor.pojo.po.PqMonitor;
|
||||||
import com.njcn.gather.monitor.service.IPqMonitorService;
|
import com.njcn.gather.monitor.service.IPqMonitorService;
|
||||||
import com.njcn.gather.plan.pojo.enums.DataSourceEnum;
|
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.pojo.enums.DetectionResponseEnum;
|
||||||
import com.njcn.gather.storage.service.DetectionDataDealService;
|
import com.njcn.gather.storage.service.DetectionDataDealService;
|
||||||
import com.njcn.gather.storage.service.impl.DetectionDataServiceImpl;
|
import com.njcn.gather.storage.service.impl.DetectionDataServiceImpl;
|
||||||
@@ -26,6 +30,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
@@ -62,11 +67,104 @@ public class PqMonitorServiceImpl extends ServiceImpl<PqMonitorMapper, PqMonitor
|
|||||||
@Transactional
|
@Transactional
|
||||||
public boolean updatePqMonitorByDevId(String devId, List<PqMonitorParam> paramList) {
|
public boolean updatePqMonitorByDevId(String devId, List<PqMonitorParam> paramList) {
|
||||||
// 先删除原有数据
|
// 先删除原有数据
|
||||||
this.deletePqMonitorByDevId(devId);
|
// this.deletePqMonitorByDevId(devId);
|
||||||
// 再添加新数据
|
|
||||||
|
// 添加新数据
|
||||||
List<PqMonitor> pqMonitorList = BeanUtil.copyToList(paramList, PqMonitor.class);
|
List<PqMonitor> pqMonitorList = BeanUtil.copyToList(paramList, PqMonitor.class);
|
||||||
pqMonitorList.forEach(pqMonitor -> pqMonitor.setDevId(devId));
|
pqMonitorList.forEach(pqMonitor -> pqMonitor.setDevId(devId));
|
||||||
return this.saveBatch(pqMonitorList);
|
|
||||||
|
List<PqMonitor> existedMonitorList = this.listPqMonitorByDevIds(Collections.singletonList(devId));
|
||||||
|
|
||||||
|
Map<Integer, List<PqMonitor>> map = pqMonitorList.stream().collect(Collectors.groupingBy(PqMonitor::getNum));
|
||||||
|
|
||||||
|
List<PqMonitor> 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<PqMonitor> enableCheckMonitorList = newMonitorList.stream().filter(pqMonitor -> pqMonitor.getCheckFlag() == 1).collect(Collectors.toList());
|
||||||
|
List<PqMonitor> 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<Integer> 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<PqDevSub> devSubList = this.baseMapper.listDevSubByPlanId(plan.getId());
|
||||||
|
|
||||||
|
List<PqDevSub> checkedDevSubList = devSubList.stream().filter(pqDevSub -> pqDevSub.getCheckState() == CheckStateEnum.CHECKED.getValue()).collect(Collectors.toList());
|
||||||
|
List<PqDevSub> 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<PqDevSub> 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<PqDevSub> 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
|
@Override
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import com.njcn.common.pojo.constant.SecurityConstants;
|
|||||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||||
import com.njcn.common.pojo.response.HttpResult;
|
import com.njcn.common.pojo.response.HttpResult;
|
||||||
import com.njcn.common.utils.JwtUtil;
|
import com.njcn.common.utils.JwtUtil;
|
||||||
import com.njcn.web.utils.HttpResultUtil;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.core.Ordered;
|
import org.springframework.core.Ordered;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@@ -25,7 +24,7 @@ import java.util.List;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
public class AuthGlobalFilter implements Filter, Ordered {
|
public class AuthGlobalFilter implements Filter, Ordered {
|
||||||
private final static List<String> IGNORE_URI = Arrays.asList("/admin/login","/admin/getPublicKey", "/report/generateReport");
|
private final static List<String> IGNORE_URI = Arrays.asList("/doc.html", "/admin/login", "/admin/getPublicKey", "/report/generateReport");
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getOrder() {
|
public int getOrder() {
|
||||||
|
|||||||
Reference in New Issue
Block a user