diff --git a/detection/src/main/java/com/njcn/gather/result/controller/ResultController.java b/detection/src/main/java/com/njcn/gather/result/controller/ResultController.java index a281c0eb..bd034f23 100644 --- a/detection/src/main/java/com/njcn/gather/result/controller/ResultController.java +++ b/detection/src/main/java/com/njcn/gather/result/controller/ResultController.java @@ -6,6 +6,7 @@ import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.LogUtil; import com.njcn.gather.result.pojo.param.ResultParam; import com.njcn.gather.result.pojo.vo.FormContentVO; +import com.njcn.gather.result.pojo.vo.ResultVO; import com.njcn.gather.result.pojo.vo.TreeDataVO; import com.njcn.gather.result.service.IResultService; import com.njcn.web.controller.BaseController; @@ -55,4 +56,15 @@ public class ResultController extends BaseController { List infoVOS = resultService.treeData(queryParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, infoVOS, methodDescribe); } + + + @OperateInfo + @PostMapping("/resultData") + @ApiOperation("查询检测结果-表格具体检测项") + @ApiImplicitParam(name = "queryParam", value = "查询参数", required = true) + public HttpResult resultData(@RequestBody @Validated ResultParam queryParam) { + String methodDescribe = getMethodDescribe("resultData"); + ResultVO resultVO = resultService.resultData(queryParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, resultVO, methodDescribe); + } } diff --git a/detection/src/main/java/com/njcn/gather/result/pojo/param/ResultParam.java b/detection/src/main/java/com/njcn/gather/result/pojo/param/ResultParam.java index 84e5f900..83a3897c 100644 --- a/detection/src/main/java/com/njcn/gather/result/pojo/param/ResultParam.java +++ b/detection/src/main/java/com/njcn/gather/result/pojo/param/ResultParam.java @@ -40,6 +40,11 @@ public class ResultParam { */ private Integer code; + /** + * 检测脚本序号 + */ + private Integer index; + @Data public static class QueryParam { diff --git a/detection/src/main/java/com/njcn/gather/result/pojo/vo/ResultVO.java b/detection/src/main/java/com/njcn/gather/result/pojo/vo/ResultVO.java index 2ec9e331..89f69f41 100644 --- a/detection/src/main/java/com/njcn/gather/result/pojo/vo/ResultVO.java +++ b/detection/src/main/java/com/njcn/gather/result/pojo/vo/ResultVO.java @@ -1,9 +1,12 @@ package com.njcn.gather.result.pojo.vo; +import com.njcn.gather.storage.pojo.vo.RawDataVO; +import com.njcn.gather.storage.pojo.vo.RawResultDataVO; import lombok.Data; import java.math.BigDecimal; import java.util.List; +import java.util.Map; /** * @author caozehui @@ -15,82 +18,12 @@ public class ResultVO { /** * 结果数据 */ - private List resultData; + private Map resultData; /** * 原始数据 */ - private List rawData; + private Map> rawData; - @Data - public static class RawData { - - /** - * 时间 - */ - private String time; - - - /** - * (间)谐波次数 - */ - private Double harmNum; - - /** - * A相数据 - */ - private BigDecimal dataA; - - /** - * B相数据 - */ - private BigDecimal dataB; - - /** - * C相数据 - */ - private BigDecimal dataC; - - } - - @Data - public static class ResultData { - - - /** - * 类别 - */ - private String type; - - /** - * (间)谐波次数 - */ - private Double harmNum; - - /** - * A相数据 - */ - private BigDecimal DevDataA; - private BigDecimal SourceDataA; - - /** - * B相数据 - */ - private BigDecimal DevDataB; - private BigDecimal SourceDataB; - - /** - * C相数据 - */ - private BigDecimal DevDataC; - private BigDecimal SourceDataC; - - /** - * T相数据 - */ - private BigDecimal DevDataT; - private BigDecimal SourceDataT; - - } } diff --git a/detection/src/main/java/com/njcn/gather/result/service/IResultService.java b/detection/src/main/java/com/njcn/gather/result/service/IResultService.java index b809855a..96137d9c 100644 --- a/detection/src/main/java/com/njcn/gather/result/service/IResultService.java +++ b/detection/src/main/java/com/njcn/gather/result/service/IResultService.java @@ -14,6 +14,7 @@ import java.util.List; public interface IResultService { /** * 检测详情表单头 + * * @param queryParam * @return */ @@ -22,6 +23,7 @@ public interface IResultService { /** * 获取检测详情信息 + * * @param param * @return: java.util.List * @Author: wr @@ -31,9 +33,11 @@ public interface IResultService { /** * 展示结果数据 + * * @param param * @return */ - ResultVO resultData(ResultParam param); + ResultVO resultData(ResultParam param); + } diff --git a/detection/src/main/java/com/njcn/gather/result/service/impl/ResultServiceImpl.java b/detection/src/main/java/com/njcn/gather/result/service/impl/ResultServiceImpl.java index 734f274e..e4380d47 100644 --- a/detection/src/main/java/com/njcn/gather/result/service/impl/ResultServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/result/service/impl/ResultServiceImpl.java @@ -19,6 +19,7 @@ import com.njcn.gather.result.pojo.vo.FormContentVO; import com.njcn.gather.result.pojo.vo.ResultVO; import com.njcn.gather.result.pojo.vo.TreeDataVO; import com.njcn.gather.result.service.IResultService; +import com.njcn.gather.storage.pojo.param.StorageParam; import com.njcn.gather.storage.pojo.po.AdBaseResult; import com.njcn.gather.storage.service.AdHarmonicService; import com.njcn.gather.storage.service.AdNonHarmonicService; @@ -779,9 +780,27 @@ public class ResultServiceImpl implements IResultService { @Override public ResultVO resultData(ResultParam param) { - - - return null; + StorageParam storage=new StorageParam(); + storage.setIndex(param.getIndex()); + storage.setScriptId(param.getScriptId()); + storage.setDevId(param.getDevId()); + storage.setDevNum(param.getDevNum()); + storage.setCode(param.getCode()); + List list = pqScriptCheckDataService.list(new MPJLambdaWrapper() + .eq(PqScriptCheckData::getScriptId, param.getScriptId()) + .eq(PqScriptCheckData::getIndex, param.getIndex()) + ); + List harmNum = list.stream().map(PqScriptCheckData::getHarmNum).collect(Collectors.toList()); + ResultVO resultVO=new ResultVO(); + if(CollUtil.isNotEmpty(harmNum)){ + storage.setHarmNum(harmNum); + resultVO.setRawData(adNonHarmonicService.listNonHarmData(storage)); + resultVO.setResultData(adNonHarmonicService.listNonHarmResultData(storage)); + }else{ + resultVO.setRawData(adHarmonicService.listHarmData(storage)); + resultVO.setResultData(adHarmonicService.listHarmResultData(storage)); + } + return resultVO; } private static void dtlsSetBuffer(List scriptDtlIndex, StringBuffer buffer, String valueType, String name, String unit, Boolean fly) { diff --git a/storage/src/main/java/com/njcn/gather/storage/pojo/vo/RawDataVO.java b/storage/src/main/java/com/njcn/gather/storage/pojo/vo/RawDataVO.java index c21ea69d..84f90b40 100644 --- a/storage/src/main/java/com/njcn/gather/storage/pojo/vo/RawDataVO.java +++ b/storage/src/main/java/com/njcn/gather/storage/pojo/vo/RawDataVO.java @@ -2,7 +2,6 @@ package com.njcn.gather.storage.pojo.vo; import lombok.Data; -import java.math.BigDecimal; /** * @author wr @@ -26,20 +25,20 @@ public class RawDataVO { /** * A相数据 */ - private BigDecimal dataA; + private String dataA; /** * B相数据 */ - private BigDecimal dataB; + private String dataB; /** * C相数据 */ - private BigDecimal dataC; + private String dataC; /** - * C相数据 + * T相数据 */ - private BigDecimal dataT; + private String dataT; } diff --git a/storage/src/main/java/com/njcn/gather/storage/pojo/vo/RawResultDataVO.java b/storage/src/main/java/com/njcn/gather/storage/pojo/vo/RawResultDataVO.java new file mode 100644 index 00000000..11b47746 --- /dev/null +++ b/storage/src/main/java/com/njcn/gather/storage/pojo/vo/RawResultDataVO.java @@ -0,0 +1,80 @@ +package com.njcn.gather.storage.pojo.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author wr + * @description + * @date 2025/1/2 15:53 + */ +@Data +public class RawResultDataVO { + + + /** + * 是否是符合数据 + */ + private Integer isData; + + /** + * 第几次谐波 + */ + private Double harmNum; + + /** + * 误差范围 + */ + private String radius; + + /** + * A相数据 + */ + private DetectionData dataA; + + /** + * B相数据 + */ + private DetectionData dataB; + + /** + * C相数据 + */ + private DetectionData dataC; + + /** + * C相数据 + */ + private DetectionData dataT; + + @Data + public static class DetectionData { + + /** + * 第几次谐波 + */ + private Double num; + + /** + * 是否是符合数据 + */ + private Integer isData; + + /** + * 装置原始数据 + */ + private BigDecimal data; + + /** + * 检测源定值 + */ + private BigDecimal resultData; + + /** + * 误差范围 + */ + private String radius; + + } +} diff --git a/storage/src/main/java/com/njcn/gather/storage/service/AdHarmonicService.java b/storage/src/main/java/com/njcn/gather/storage/service/AdHarmonicService.java index ad3e7b44..9e34d81a 100644 --- a/storage/src/main/java/com/njcn/gather/storage/service/AdHarmonicService.java +++ b/storage/src/main/java/com/njcn/gather/storage/service/AdHarmonicService.java @@ -5,6 +5,7 @@ import com.njcn.gather.storage.pojo.param.StorageParam; import com.njcn.gather.storage.pojo.po.AdBaseResult; import com.njcn.gather.storage.pojo.po.AdHarmonicResult; import com.njcn.gather.storage.pojo.vo.RawDataVO; +import com.njcn.gather.storage.pojo.vo.RawResultDataVO; import java.util.List; import java.util.Map; @@ -33,5 +34,12 @@ public interface AdHarmonicService extends IService { * @param param * @return */ - Map> listResultData(StorageParam param); + Map> listHarmData(StorageParam param); + + /** + * 查询结果数据 + * @param param + * @return + */ + Map listHarmResultData(StorageParam param) ; } diff --git a/storage/src/main/java/com/njcn/gather/storage/service/AdNonHarmonicService.java b/storage/src/main/java/com/njcn/gather/storage/service/AdNonHarmonicService.java index 6442302f..bbc8983b 100644 --- a/storage/src/main/java/com/njcn/gather/storage/service/AdNonHarmonicService.java +++ b/storage/src/main/java/com/njcn/gather/storage/service/AdNonHarmonicService.java @@ -5,6 +5,7 @@ import com.njcn.gather.storage.pojo.param.StorageParam; import com.njcn.gather.storage.pojo.po.AdBaseResult; import com.njcn.gather.storage.pojo.po.AdNonHarmonicResult; import com.njcn.gather.storage.pojo.vo.RawDataVO; +import com.njcn.gather.storage.pojo.vo.RawResultDataVO; import java.util.List; import java.util.Map; @@ -16,17 +17,26 @@ public interface AdNonHarmonicService extends IService { * 根据设备ID和通道号获取非谐波结果 * * @param scriptId 脚本ID - * @param sort 总检测脚本中的测试项序号列表 + * @param sort 总检测脚本中的测试项序号列表 * @param deviceId 设备ID * @param chnNum 通道号,从1开始 * @return 非谐波结果 */ - List get(String scriptId, List sort, String deviceId, String chnNum,Integer code); + List get(String scriptId, List sort, String deviceId, String chnNum, Integer code); /** * 非谐波原始数据展示 + * * @param param * @return */ - Map> listNonResultData(StorageParam param) ; + Map> listNonHarmData(StorageParam param); + + /** + * 非谐波原始数据展示 + * + * @param param + * @return + */ + Map listNonHarmResultData(StorageParam param); } diff --git a/storage/src/main/java/com/njcn/gather/storage/service/impl/AdHarmonicServiceImpl.java b/storage/src/main/java/com/njcn/gather/storage/service/impl/AdHarmonicServiceImpl.java index a46d45d2..99319297 100644 --- a/storage/src/main/java/com/njcn/gather/storage/service/impl/AdHarmonicServiceImpl.java +++ b/storage/src/main/java/com/njcn/gather/storage/service/impl/AdHarmonicServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.njcn.db.mybatisplus.handler.DynamicTableNameHandler; @@ -12,6 +13,7 @@ import com.njcn.gather.storage.pojo.param.StorageParam; import com.njcn.gather.storage.pojo.po.AdBaseResult; import com.njcn.gather.storage.pojo.po.AdHarmonicResult; import com.njcn.gather.storage.pojo.vo.RawDataVO; +import com.njcn.gather.storage.pojo.vo.RawResultDataVO; import com.njcn.gather.storage.service.AdHarmonicService; import org.springframework.stereotype.Service; @@ -19,10 +21,7 @@ import java.lang.reflect.Field; import java.math.BigDecimal; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @author caozehui @@ -48,7 +47,7 @@ public class AdHarmonicServiceImpl extends ServiceImpl> listResultData(StorageParam param) { + public Map> listHarmData(StorageParam param) { String prefix = "ad_harmonic_"; DynamicTableNameHandler.setTableName(prefix + param.getCode()); MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); @@ -76,17 +75,17 @@ public class AdHarmonicServiceImpl extends ServiceImpl listHarmResultData(StorageParam param) { + String prefix = "ad_harmonic_result_"; + DynamicTableNameHandler.setTableName(prefix + param.getCode()); + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + wrapper.like(AdHarmonicResult::getMonitorId, param.getDevId() + "_" + param.getDevNum()) + .eq(ObjectUtil.isNotNull(param.getScriptId()), AdHarmonicResult::getScriptId, param.getScriptId()) + .in(ObjectUtil.isNotEmpty(param.getIndex()), AdHarmonicResult::getSort, param.getIndex()) + .orderByAsc(AdHarmonicResult::getTimeId); + + List adHarmonicResults = this.getBaseMapper().selectJoinList(AdHarmonicResult.class, wrapper); + List harmNum = param.getHarmNum(); + + Map info=new HashMap<>(3); + RawResultDataVO dataVO; + for (AdHarmonicResult harmonicResult : adHarmonicResults) { + for (Double i : harmNum) { + dataVO = new RawResultDataVO(); + dataVO.setHarmNum(i); + dataVO.setIsData(harmonicResult.getResultFlag()); + try { + Field fieldA = harmonicResult.getClass().getDeclaredField("aValue" + isHarmOrInHarm(i).intValue()); + fieldA.setAccessible(true); + RawResultDataVO.DetectionData a = JSON.parseObject(fieldA.get(harmonicResult)+"", RawResultDataVO.DetectionData.class); + dataVO.setDataA(a); + + Field fieldB = harmonicResult.getClass().getDeclaredField("bValue" + isHarmOrInHarm(i).intValue()); + fieldB.setAccessible(true); + RawResultDataVO.DetectionData b = JSON.parseObject(fieldB.get(harmonicResult)+"", RawResultDataVO.DetectionData.class); + dataVO.setDataB(b); + + Field fieldC = harmonicResult.getClass().getDeclaredField("cValue" + isHarmOrInHarm(i).intValue()); + fieldC.setAccessible(true); + RawResultDataVO.DetectionData c = JSON.parseObject(fieldC.get(harmonicResult)+"", RawResultDataVO.DetectionData.class); + dataVO.setDataC(c); + if(ObjectUtil.isNotNull(a)){ + dataVO.setRadius(a.getRadius()); + } + } catch (NoSuchFieldException e) { + throw new RuntimeException(e); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } + info.put(String.valueOf(i),dataVO) ; + } + } + DynamicTableNameHandler.remove(); + return info; + } + public Double isHarmOrInHarm(Double value) { if (value == value.longValue()) { return value; diff --git a/storage/src/main/java/com/njcn/gather/storage/service/impl/AdNonHarmonicServiceImpl.java b/storage/src/main/java/com/njcn/gather/storage/service/impl/AdNonHarmonicServiceImpl.java index 5d7826fd..1c6988a0 100644 --- a/storage/src/main/java/com/njcn/gather/storage/service/impl/AdNonHarmonicServiceImpl.java +++ b/storage/src/main/java/com/njcn/gather/storage/service/impl/AdNonHarmonicServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.njcn.db.mybatisplus.handler.DynamicTableNameHandler; @@ -12,6 +13,7 @@ import com.njcn.gather.storage.pojo.param.StorageParam; import com.njcn.gather.storage.pojo.po.AdBaseResult; import com.njcn.gather.storage.pojo.po.AdNonHarmonicResult; import com.njcn.gather.storage.pojo.vo.RawDataVO; +import com.njcn.gather.storage.pojo.vo.RawResultDataVO; import com.njcn.gather.storage.service.AdNonHarmonicService; import com.njcn.gather.system.dictionary.pojo.po.DictTree; import com.njcn.gather.system.dictionary.service.IDictTreeService; @@ -21,6 +23,7 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -51,7 +54,7 @@ public class AdNonHarmonicServiceImpl extends ServiceImpl> listNonResultData(StorageParam param) { + public Map> listNonHarmData(StorageParam param) { String prefix = "ad_non_harmonic_"; DynamicTableNameHandler.setTableName(prefix + param.getCode()); MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); @@ -70,13 +73,56 @@ public class AdNonHarmonicServiceImpl extends ServiceImpl listNonHarmResultData(StorageParam param) { + String prefix = "ad_non_harmonic_result_"; + DynamicTableNameHandler.setTableName(prefix + param.getCode()); + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + wrapper.like(AdNonHarmonicResult::getMonitorId, param.getDevId() + "_" + param.getDevNum()) + .eq(ObjectUtil.isNotNull(param.getScriptId()), AdNonHarmonicResult::getScriptId, param.getScriptId()) + .in(ObjectUtil.isNotEmpty(param.getIndex()), AdNonHarmonicResult::getSort, param.getIndex()); + + List adHarmonicResults = this.getBaseMapper().selectJoinList(AdNonHarmonicResult.class, wrapper); + + Map info = new HashMap<>(2); + Map adTypeMap = adHarmonicResults.stream().collect(Collectors.toMap(AdNonHarmonicResult::getAdType, Function.identity())); + List dictTreeById = dictTreeService.getDictTreeById(new ArrayList<>(adTypeMap.keySet())); + + Map dictTreeByName = dictTreeById.stream().collect(Collectors.toMap(DictTree::getId, DictTree::getName)); + adTypeMap.forEach((key, result) -> { + if (dictTreeByName.containsKey(key)) { + String treeName = dictTreeByName.get(key); + RawResultDataVO dataVO = new RawResultDataVO(); + dataVO.setIsData(result.getResultFlag()); + RawResultDataVO.DetectionData a = JSON.parseObject(result.getAValue(), RawResultDataVO.DetectionData.class); + RawResultDataVO.DetectionData b = JSON.parseObject(result.getBValue(), RawResultDataVO.DetectionData.class); + RawResultDataVO.DetectionData c = JSON.parseObject(result.getCValue(), RawResultDataVO.DetectionData.class); + RawResultDataVO.DetectionData t = JSON.parseObject(result.getTValue(), RawResultDataVO.DetectionData.class); + dataVO.setDataA(a); + dataVO.setDataB(b); + dataVO.setDataC(c); + dataVO.setDataC(t); + if(ObjectUtil.isNotNull(t)){ + dataVO.setRadius(t.getRadius()); + }else{ + if(ObjectUtil.isNotNull(b)){ + dataVO.setRadius(b.getRadius()); + } + } + info.put(treeName, dataVO); } }); DynamicTableNameHandler.remove();