diff --git a/detection/src/main/java/com/njcn/gather/detection/handler/SocketDevResponseService.java b/detection/src/main/java/com/njcn/gather/detection/handler/SocketDevResponseService.java index 460f02fa..a34f23db 100644 --- a/detection/src/main/java/com/njcn/gather/detection/handler/SocketDevResponseService.java +++ b/detection/src/main/java/com/njcn/gather/detection/handler/SocketDevResponseService.java @@ -465,12 +465,12 @@ public class SocketDevResponseService { coefficientVO.setCIeData(String.valueOf(optionalIC)); if (XiNumberManager.stepNumber == 0 || XiNumberManager.stepNumber == 1) { - Integer aXi = (int) ((2-(optionalA / devParameter.getDevVolt())) * 10000); - Integer bXi = (int) ((2-(optionalB / devParameter.getDevVolt())) * 10000); - Integer cXi = (int) ((2-(optionalC / devParameter.getDevVolt())) * 10000); - Integer aIXi = (int) ((2-(optionalIA / devParameter.getDevCurr())) * 10000); - Integer bIXi = (int) ((2-(optionalIB / devParameter.getDevCurr())) * 10000); - Integer cIXi = (int) ((2-(optionalIC / devParameter.getDevCurr())) * 10000); + Integer aXi = (int) ((2 - (optionalA / devParameter.getDevVolt())) * 10000); + Integer bXi = (int) ((2 - (optionalB / devParameter.getDevVolt())) * 10000); + Integer cXi = (int) ((2 - (optionalC / devParameter.getDevVolt())) * 10000); + Integer aIXi = (int) ((2 - (optionalIA / devParameter.getDevCurr())) * 10000); + Integer bIXi = (int) ((2 - (optionalIB / devParameter.getDevCurr())) * 10000); + Integer cIXi = (int) ((2 - (optionalIC / devParameter.getDevCurr())) * 10000); coefficientVO.setAVuXi(aXi.toString()); coefficientVO.setBVuXi(bXi.toString()); @@ -551,7 +551,6 @@ public class SocketDevResponseService { completeJudgment(param); - break; case UNPROCESSED_BUSINESS: webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(socketDataMsg)); @@ -592,14 +591,14 @@ public class SocketDevResponseService { } - private void completeJudgment(PreDetectionParam param){ - if(successDevComm.size()+failDevComm.size() == FormalTestManager.devList.size() && successComm.size() + failComm.size() == FormalTestManager.monitorIdListComm.size()){ + private void completeJudgment(PreDetectionParam param) { + if (successDevComm.size() + failDevComm.size() == FormalTestManager.devList.size() && successComm.size() + failComm.size() == FormalTestManager.monitorIdListComm.size()) { //全部装置返回 - if(!failDevComm.isEmpty()){ + if (!failDevComm.isEmpty()) { CnSocketUtil.quitSend(param); WebSocketVO webSocketVO = new WebSocketVO<>(); webSocketVO.setRequestId(SourceOperateCodeEnum.ERROR_FLOW_END.getValue()); - webSocketHandler.sendMsgToUser(param.getUserPageId(),JSON.toJSONString(webSocketVO)); + webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(webSocketVO)); } successDevComm.clear(); failDevComm.clear(); @@ -648,7 +647,6 @@ public class SocketDevResponseService { completeJudgment(param); - } else if (socketDataMsg.getOperateCode().equals(SourceOperateCodeEnum.DEV_INIT_GATHER_03.getValue())) { successDevComm.add(socketDataMsg.getData().split(splitTag)[0]); successComm.add(socketDataMsg.getData()); @@ -673,7 +671,7 @@ public class SocketDevResponseService { List sourceIssues; if (SourceOperateCodeEnum.FORMAL_TEST.getValue().equals(param.getOperateType()) || SourceOperateCodeEnum.RE_ERROR_TEST.getValue().equals(param.getOperateType())) { - if(param.getOperateType().equals(SourceOperateCodeEnum.RE_ERROR_TEST.getValue())){ + if (param.getOperateType().equals(SourceOperateCodeEnum.RE_ERROR_TEST.getValue())) { //不合格项复检 StorageParam storageParam = new StorageParam(); storageParam.setCode(Integer.valueOf(param.getPlanCode())); @@ -681,7 +679,7 @@ public class SocketDevResponseService { List indexes = adHarmonicService.getIndex(storageParam); issueParam.setIndexList(indexes); issueParam.setIsPhaseSequence(SourceOperateCodeEnum.COEFFICIENT_TEST.getValue()); - }else { + } else { issueParam.setIsPhaseSequence(SourceOperateCodeEnum.FORMAL_TEST.getValue()); } //正式检测 @@ -694,7 +692,7 @@ public class SocketDevResponseService { socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue() + stepTag + sourceIssues.get(0).getType()); SocketManager.sendMsg(param.getUserPageId() + handlerSourceStr, JSON.toJSONString(socketMsg)); - } else if (SourceOperateCodeEnum.PRE_TEST.getValue().equals(param.getOperateType())||SourceOperateCodeEnum.COEFFICIENT_TEST.getValue().equals(param.getOperateType())) { + } else if (SourceOperateCodeEnum.PRE_TEST.getValue().equals(param.getOperateType()) || SourceOperateCodeEnum.COEFFICIENT_TEST.getValue().equals(param.getOperateType())) { //预检测的相序检测 以及系数校验都需要进行相序检测 issueParam.setIsPhaseSequence(SourceOperateCodeEnum.PHASE_TEST.getValue()); sourceIssues = pqScriptDtlsService.listSourceIssue(issueParam); @@ -873,21 +871,22 @@ public class SocketDevResponseService { //FormalTestManager.devXiNumDataMap.put(devData.getId(),) - if(SocketManager.clockMap.containsKey(sourceIssue.getIndex())){ - SocketManager.clockMap.put(sourceIssue.getIndex(),0L); + if (SocketManager.clockMap.containsKey(sourceIssue.getIndex())) { + SocketManager.clockMap.put(sourceIssue.getIndex(), 0L); } if (successComm.size() == FormalTestManager.monitorIdListComm.size()) { //TODO 理论上遇到返回code10200的数量与监测点数量一致则认为数据返回结束,但是会存在缺失数据情况,例如有部分装置是没有暂降功能的 System.out.println(sourceIssue.getType() + splitTag + sourceIssue.getIndex() + "当前测试小项读取数据已经全部结束。。。。。。。。。"); - + //修改装置为监测中 + iPqDevService.updateCheckState(param.getDevIds()); //开启线程进行入库原始数据操作 baseDataInsert(realDataXiList, sourceIssue, param, SocketManager.valueTypeMap); - + //调用判断方法 Map textResult = detectionServiceImpl.processing(realDataXiList, param, FormalTestManager.devIdMapComm, sourceIssue, dataRule); - + long tem = SocketManager.getSourceTarget(sourceIssue.getType()) - 1; SocketManager.addTargetMap(sourceIssue.getType(), tem); System.out.println("该大项还有" + tem + "个小项没有进行检测!!!!!!!!"); @@ -940,9 +939,9 @@ public class SocketDevResponseService { SocketManager.sendMsg(param.getUserPageId() + handlerSourceStr, JSON.toJSONString(xuMsg)); } else { //TODO 是否最终检测完成需要推送给用户 + iPqDevService.updateResult(param.getDevIds(), param.getCode()); CnSocketUtil.quitSend(param); } - successComm.clear(); realDataXiList.clear(); @@ -977,7 +976,6 @@ public class SocketDevResponseService { } - /** * 退出检测返回 */ @@ -1157,7 +1155,7 @@ public class SocketDevResponseService { List pqDevList = iPqDevService.getDevInfo(param.getDevIds()); FormalTestManager.devList = pqDevList; - FormalTestManager.devMapMonitorNum = pqDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP,it->it.getMonitorList().stream().map(PreDetection.MonitorListDTO::getLineId).collect(Collectors.toList()))); + FormalTestManager.devMapMonitorNum = pqDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, it -> it.getMonitorList().stream().map(PreDetection.MonitorListDTO::getLineId).collect(Collectors.toList()))); FormalTestManager.monitorIdListComm = pqDevList.stream().flatMap(x -> x.getMonitorList().stream()).map(PreDetection.MonitorListDTO::getLineId).collect(Collectors.toList()); FormalTestManager.devNameMapComm = pqDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevName)); @@ -1175,7 +1173,7 @@ public class SocketDevResponseService { //字典树 SocketManager.valueTypeMap = iPqScriptCheckDataService.getValueTypeMap(param.getScriptId()); - if(param.getOperateType().equals(SourceOperateCodeEnum.COEFFICIENT_TEST.getValue())){ + if (param.getOperateType().equals(SourceOperateCodeEnum.COEFFICIENT_TEST.getValue())) { initXiManager(param); } } @@ -1204,7 +1202,7 @@ public class SocketDevResponseService { issueParam.setDevIds(param.getDevIds()); issueParam.setScriptId(param.getScriptId()); issueParam.setIsPhaseSequence(SourceOperateCodeEnum.COEFFICIENT_TEST.getValue()); - issueParam.setIndexList(Stream.of(-2,-3).collect(Collectors.toList())); + issueParam.setIndexList(Stream.of(-2, -3).collect(Collectors.toList())); List sourceIssues = pqScriptDtlsService.listSourceIssue(issueParam); for (int j = 0; j < sourceIssues.size(); j++) { if (j == 0) { @@ -1290,7 +1288,7 @@ public class SocketDevResponseService { adHarmonicResult.setDataType("avg"); if (!DicDataEnum.HI.getCode().equals(sourceIssue.getType()) && !DicDataEnum.HSI.getCode().equals(sourceIssue.getType()) && !DicDataEnum.HP.getCode().equals(sourceIssue.getType())) { - if(CollUtil.isNotEmpty(data.getSqlData())){ + if (CollUtil.isNotEmpty(data.getSqlData())) { DevData.SqlDataDTO.ListDTO vvv = data.getSqlData().get(0).getList(); Double aV = vvv.getA(); Double bV = vvv.getB(); diff --git a/detection/src/main/java/com/njcn/gather/detection/handler/SocketSourceResponseService.java b/detection/src/main/java/com/njcn/gather/detection/handler/SocketSourceResponseService.java index 10d0571b..eddd90aa 100644 --- a/detection/src/main/java/com/njcn/gather/detection/handler/SocketSourceResponseService.java +++ b/detection/src/main/java/com/njcn/gather/detection/handler/SocketSourceResponseService.java @@ -286,11 +286,11 @@ public class SocketSourceResponseService { int readData; if(sourceIssue.getType().equals(DicDataEnum.F.getCode())){ ignoreCount = 1; - readData = 1; + readData = 2; socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_01.getValue()); }else if(sourceIssue.getType().equals(DicDataEnum.HP.getCode())){ ignoreCount = 2; - readData = 3; + readData = 5; socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_01.getValue()); }else if(DicDataEnum.VOLTAGE.getCode().equals(sourceIssue.getType())){ ignoreCount = 5; diff --git a/device/pom.xml b/device/pom.xml index 93a7c2a0..eeaf245c 100644 --- a/device/pom.xml +++ b/device/pom.xml @@ -39,6 +39,12 @@ fastjson 1.2.83 + + com.njcn.gather + storage + 1.0.0 + compile + diff --git a/device/src/main/java/com/njcn/gather/device/device/service/IPqDevService.java b/device/src/main/java/com/njcn/gather/device/device/service/IPqDevService.java index 99fb61ae..7abe1a55 100644 --- a/device/src/main/java/com/njcn/gather/device/device/service/IPqDevService.java +++ b/device/src/main/java/com/njcn/gather/device/device/service/IPqDevService.java @@ -171,4 +171,20 @@ public interface IPqDevService extends IService { * @return 归档成功返回true,否则返回false */ boolean documented(String id); + + /** + * 修改监测状态 + * @param ids + * @return + */ + boolean updateCheckState(List ids); + + + /** + * 正式监测完成,修改中断状态 + * @param ids + * @param code + * @return + */ + boolean updateResult(List ids,String code); } diff --git a/device/src/main/java/com/njcn/gather/device/device/service/impl/PqDevServiceImpl.java b/device/src/main/java/com/njcn/gather/device/device/service/impl/PqDevServiceImpl.java index 91e6b545..32afb639 100644 --- a/device/src/main/java/com/njcn/gather/device/device/service/impl/PqDevServiceImpl.java +++ b/device/src/main/java/com/njcn/gather/device/device/service/impl/PqDevServiceImpl.java @@ -5,7 +5,9 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.common.pojo.enums.common.DataStateEnum; @@ -24,6 +26,7 @@ import com.njcn.gather.device.monitor.pojo.po.PqMonitor; import com.njcn.gather.device.monitor.pojo.vo.PqMonitorExcel; import com.njcn.gather.device.monitor.service.IPqMonitorService; import com.njcn.gather.device.pojo.enums.*; +import com.njcn.gather.storage.service.DetectionDataDealService; import com.njcn.gather.system.dictionary.pojo.po.DictData; import com.njcn.gather.system.dictionary.service.IDictDataService; import com.njcn.web.factory.PageFactory; @@ -48,6 +51,8 @@ public class PqDevServiceImpl extends ServiceImpl implements private final IDictDataService dictDataService; private final IPqMonitorService pqMonitorService; + private final DetectionDataDealService detectionDataDealService; + @Override public Page listPqDevs(PqDevParam.QueryParam queryParam) { @@ -414,7 +419,7 @@ public class PqDevServiceImpl extends ServiceImpl implements @Override public List getDevInfo(List devIds) { List preDetections = this.baseMapper.selectDevInfo(devIds); - if(devIds.size() != preDetections.size()){ + if (devIds.size() != preDetections.size()) { throw new BusinessException(DevResponseEnum.DEVICE_DIS_ERROR); } @@ -451,6 +456,37 @@ public class PqDevServiceImpl extends ServiceImpl implements return false; } + @Override + public boolean updateCheckState(List ids) { + if (CollUtil.isNotEmpty(ids)) { + return this.update(new LambdaUpdateWrapper() + .set(PqDev::getCheckState, CheckStateEnum.CHECKING.getValue()) + .in(PqDev::getId, ids)); + } else { + return false; + } + } + + @Override + public boolean updateResult(List ids,String code) { + if(CollUtil.isNotEmpty(ids)){ + Map result = detectionDataDealService.devResult(ids, code); + List list = this.list(new LambdaQueryWrapper().in(PqDev::getId, ids)); + for (PqDev pqDev : list) { + if(result.containsKey(pqDev.getId())){ + this.update(new LambdaUpdateWrapper() + .set(PqDev::getReCheckNum, pqDev.getReCheckNum()+1) + .set(PqDev::getCheckState, CheckStateEnum.CHECKED.getValue()) + .set(PqDev::getCheckResult, result.get(pqDev.getId())) + .set(PqDev::getReportState, DevReportStateEnum.NOT_GENERATED.getValue()) + .eq(PqDev::getId, pqDev.getId())); + } + + } + } + return true; + } + /** * 获取检测状态饼状图数据 * diff --git a/device/src/main/java/com/njcn/gather/device/script/service/impl/PqScriptDtlsServiceImpl.java b/device/src/main/java/com/njcn/gather/device/script/service/impl/PqScriptDtlsServiceImpl.java index 8431c1ef..50199391 100644 --- a/device/src/main/java/com/njcn/gather/device/script/service/impl/PqScriptDtlsServiceImpl.java +++ b/device/src/main/java/com/njcn/gather/device/script/service/impl/PqScriptDtlsServiceImpl.java @@ -219,8 +219,8 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl { @@ -18,4 +19,12 @@ public interface DetectionDataDealService extends IReplenishMybatisService adNonHarmonicResultList,String code); Boolean acceptAdResult(List adHarmonicResultList,String code); + + /** + * 根据终端id查询终端所有监测项目是否合格 + * @param ids + * @param code + * @return + */ + Map devResult(List ids,String code); } diff --git a/storage/src/main/java/com/njcn/gather/storage/service/impl/DetectionDataServiceImpl.java b/storage/src/main/java/com/njcn/gather/storage/service/impl/DetectionDataServiceImpl.java index 1360f9f5..b08f7d8a 100644 --- a/storage/src/main/java/com/njcn/gather/storage/service/impl/DetectionDataServiceImpl.java +++ b/storage/src/main/java/com/njcn/gather/storage/service/impl/DetectionDataServiceImpl.java @@ -1,7 +1,9 @@ package com.njcn.gather.storage.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.njcn.db.mybatisplus.handler.DynamicTableNameHandler; import com.njcn.db.mybatisplus.service.impl.ReplenishMybatisServiceImpl; import com.njcn.gather.storage.mapper.DetectionDataDealMapper; @@ -13,7 +15,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -92,4 +94,57 @@ public class DetectionDataServiceImpl extends ReplenishMybatisServiceImpl devResult(List ids,String code) { + List noHarm=new ArrayList<>(); + for (String id : ids) { + DynamicTableNameHandler.setTableName("ad_non_harmonic_result_" + code); + noHarm.addAll(adNonHarmonicService.list( new LambdaQueryWrapper() + .like(AdNonHarmonicResult::getMonitorId,id) + )) ; + } + DynamicTableNameHandler.remove(); + List harm=new ArrayList<>(); + for (String id : ids) { + DynamicTableNameHandler.setTableName("ad_harmonic_result_" + code); + harm.addAll(this.list( new LambdaQueryWrapper() + .like(AdHarmonicResult::getMonitorId,id) + )) ; + } + DynamicTableNameHandler.remove(); + Map> noHarmMap = noHarm.stream().collect(Collectors.groupingBy(x -> x.getMonitorId().split("_")[0], + Collectors.mapping(AdNonHarmonicResult::getResultFlag, Collectors.toList()))); + Map> harmMap = harm.stream().collect(Collectors.groupingBy(x -> x.getMonitorId().split("_")[0], + Collectors.mapping(AdHarmonicResult::getResultFlag, Collectors.toList()))); + Map map=new HashMap<>(2); + for (String id : ids) { + List resultFlags=new ArrayList<>(); + if(noHarmMap.containsKey(id)){ + resultFlags.addAll(noHarmMap.get(id)); + } + if(harmMap.containsKey(id)){ + resultFlags.addAll(harmMap.get(id)); + } + map.put(id,isResultFlag(resultFlags)); + } + return map; + } + + private static Integer isResultFlag(List resultFlags) { + // 检测结果(0:不符合 1:符合 2:/[未检测无结果]) + resultFlags = resultFlags.stream().distinct().collect(Collectors.toList()); + if (CollUtil.isNotEmpty(resultFlags)) { + if (resultFlags.size() > 1) { + if (resultFlags.contains(4)) { + return 2; + } else if (resultFlags.contains(2)) { + return 0; + } + } + return resultFlags.get(0); + } else { + return 2; + } + } }