diff --git a/detection/src/main/java/com/njcn/gather/plan/controller/AdPlanController.java b/detection/src/main/java/com/njcn/gather/plan/controller/AdPlanController.java index 20f7bd56..3768bc4e 100644 --- a/detection/src/main/java/com/njcn/gather/plan/controller/AdPlanController.java +++ b/detection/src/main/java/com/njcn/gather/plan/controller/AdPlanController.java @@ -52,8 +52,6 @@ import java.util.Map; public class AdPlanController extends BaseController { private final IAdPlanService adPlanService; - private final IPqDevService pqDevService; - private final IDictDataService dictDataService; @OperateInfo @PostMapping("/list") @@ -166,7 +164,7 @@ public class AdPlanController extends BaseController { } else { List adPlanExcelList = adPlanExcelResult.getList(); if (ObjectUtil.isNotEmpty(adPlanExcelList)) { - adPlanService.importData(patternId,adPlanExcelList); + adPlanService.importData(patternId, adPlanExcelList); } } } catch (Exception e) { @@ -186,5 +184,16 @@ public class AdPlanController extends BaseController { // return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); // } + @OperateInfo + @GetMapping("/getBigTestItem") + @ApiOperation("获取检测大项数据") + @ApiImplicitParam(name = "id", value = "检测计划id", required = true) + public HttpResult>> getBigTestItem(@RequestParam("planId") String planId) { + String methodDescribe = getMethodDescribe("getBigTestItem"); + LogUtil.njcnDebug(log, "{},查询数据为:{}", methodDescribe, planId); + List> result = adPlanService.getBigTestItem(planId); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } + } diff --git a/detection/src/main/java/com/njcn/gather/plan/service/IAdPlanService.java b/detection/src/main/java/com/njcn/gather/plan/service/IAdPlanService.java index ef930f07..74ffcbc9 100644 --- a/detection/src/main/java/com/njcn/gather/plan/service/IAdPlanService.java +++ b/detection/src/main/java/com/njcn/gather/plan/service/IAdPlanService.java @@ -77,4 +77,19 @@ public interface IAdPlanService extends IService { */ void importData(String patternId, List adPlanExcelList); + + /** + * 可视化 + * + * @param planList 检测计划列表 + */ + void visualize(List planList); + + /** + * 获取检测大项 + * + * @param planId 检测计划Id + * @return + */ + List> getBigTestItem(String planId); } diff --git a/detection/src/main/java/com/njcn/gather/plan/service/impl/AdPlanServiceImpl.java b/detection/src/main/java/com/njcn/gather/plan/service/impl/AdPlanServiceImpl.java index 11b02c17..188e386f 100644 --- a/detection/src/main/java/com/njcn/gather/plan/service/impl/AdPlanServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/plan/service/impl/AdPlanServiceImpl.java @@ -15,6 +15,8 @@ import com.njcn.gather.device.device.pojo.po.PqDev; import com.njcn.gather.device.device.service.IPqDevService; import com.njcn.gather.device.err.service.IPqErrSysService; import com.njcn.gather.device.pojo.enums.*; +import com.njcn.gather.device.script.pojo.po.PqScriptDtls; +import com.njcn.gather.device.script.service.IPqScriptDtlsService; import com.njcn.gather.device.script.service.IPqScriptService; import com.njcn.gather.device.source.pojo.po.PqSource; import com.njcn.gather.device.source.service.IPqSourceService; @@ -26,7 +28,9 @@ import com.njcn.gather.plan.pojo.vo.AdPlanExcel; import com.njcn.gather.plan.pojo.vo.AdPlanVO; import com.njcn.gather.plan.service.IAdPlanService; import com.njcn.gather.plan.service.IAdPlanSourceService; +import com.njcn.gather.system.dictionary.pojo.po.DictTree; import com.njcn.gather.system.dictionary.service.IDictDataService; +import com.njcn.gather.system.dictionary.service.IDictTreeService; import com.njcn.web.factory.PageFactory; import com.njcn.web.utils.ExcelUtil; import lombok.RequiredArgsConstructor; @@ -53,6 +57,8 @@ public class AdPlanServiceImpl extends ServiceImpl impleme private final IPqDevService pqDevService; private final IDictDataService dictDataService; private final IPqSourceService pqSourceService; + private final IPqScriptDtlsService pqScriptDtlsService; + private final IDictTreeService dictTreeService; @Override public Page listAdPlan(AdPlanParam.QueryParam queryParam) { @@ -168,7 +174,7 @@ public class AdPlanServiceImpl extends ServiceImpl impleme child.put("id", adPlan.getId()); child.put("pid", adPlan.getFatherPlanId()); child.put("name", adPlan.getName()); - child.put("timeCheck",adPlan.getTimeCheck()); + child.put("timeCheck", adPlan.getTimeCheck()); children.add(child); }); } @@ -266,12 +272,8 @@ public class AdPlanServiceImpl extends ServiceImpl impleme return queryWrapper; } - /** - * 可视化 - * - * @param planList 检测计划列表 - */ - private void visualize(List planList) { + @Override + public void visualize(List planList) { planList.forEach(adPlan -> { // if (StrUtil.isNotBlank(adPlan.getPattern())) { // adPlan.setPattern(dictDataService.getDictDataById(adPlan.getPattern()).getName()); @@ -295,6 +297,30 @@ public class AdPlanServiceImpl extends ServiceImpl impleme }); } + @Override + public List> getBigTestItem(String planId) { + List> result = new ArrayList<>(); + AdPlan adPlan = this.getById(planId); + String scriptId = adPlan.getScriptId(); + + List scriptDtlsList = pqScriptDtlsService.listPqScriptDtlByScriptId(scriptId); + + Map> collect = scriptDtlsList.stream() + .sorted(Comparator.comparing(PqScriptDtls::getIndex)) + .collect(Collectors.groupingBy(PqScriptDtls::getScriptType, LinkedHashMap::new, Collectors.toList())); + + collect.forEach((key, value) -> { + Map map = new HashMap<>(); + map.put("id", key); + DictTree dictTree = dictTreeService.getById(key); + map.put("code", dictTree.getCode()); + map.put("scriptName", dictTree.getName()); + result.add(map); + }); + + return result; + } + /** * 逆向可视化 * @@ -327,5 +353,4 @@ public class AdPlanServiceImpl extends ServiceImpl impleme private Integer generateCode() { return this.count() + 1; } - } 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 new file mode 100644 index 00000000..13183a74 --- /dev/null +++ b/detection/src/main/java/com/njcn/gather/result/controller/ResultController.java @@ -0,0 +1,61 @@ +package com.njcn.gather.result.controller; + +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +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.TreeDataVO; +import com.njcn.gather.result.service.IResultService; +import com.njcn.web.controller.BaseController; +import com.njcn.web.utils.HttpResultUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @author caozehui + * @data 2024-12-30 + */ +@Slf4j +@Api(tags = "检测结果") +@RestController +@RequestMapping("/result") +@RequiredArgsConstructor +public class ResultController extends BaseController { + private final IResultService resultService; + + @OperateInfo + @PostMapping("/formContent") + @ApiOperation("查询检测结果-表单内容") + @ApiImplicitParam(name = "queryParam", value = "查询参数", required = true) + public HttpResult formContent(@RequestBody @Validated ResultParam.QueryParam queryParam) { + String methodDescribe = getMethodDescribe("formContent"); + LogUtil.njcnDebug(log, "{},查询数据为:{}", methodDescribe, queryParam); + FormContentVO result = resultService.getFormContent(queryParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } + + @OperateInfo + @PostMapping("/treeData") + @ApiOperation("查询检测结果-树形结构的具体检测项") + @ApiImplicitParam(name = "queryParam", value = "查询参数", required = true) + public HttpResult> treeData(@RequestBody @Validated ResultParam.QueryParam queryParam) { + String methodDescribe = getMethodDescribe("treeData"); + + + + + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, 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 new file mode 100644 index 00000000..3e64bec0 --- /dev/null +++ b/detection/src/main/java/com/njcn/gather/result/pojo/param/ResultParam.java @@ -0,0 +1,37 @@ +package com.njcn.gather.result.pojo.param; + +import com.njcn.common.pojo.constant.PatternRegex; +import com.njcn.gather.device.pojo.constant.DevValidMessage; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; + +/** + * @author caozehui + * @data 2024-12-30 + */ +@Data +public class ResultParam { + + @Data + public static class QueryParam { + + @ApiModelProperty(value = "检测计划Id", required = true) + @NotBlank(message = DevValidMessage.PLAN_ID_NOT_NULL) + @Pattern(regexp = PatternRegex.SYSTEM_ID, message = DevValidMessage.PLAN_ID_FORMAT_ERROR) + private String planId; + + // 脚本类型,当为null时,表示查询所有脚本类型,否则只查询指定脚本类型 + private String scriptType; + + @ApiModelProperty(value = "设备Id", required = true) + @NotBlank(message = DevValidMessage.DEV_ID_NOT_BLANK) + @Pattern(regexp = PatternRegex.SYSTEM_ID, message = DevValidMessage.DEV_ID_FORMAT_ERROR) + private String deviceId; + + // 通道号,当为-1时,表示查询所有通道号,否则只查询指定通道号 + private String chnNum; + } +} diff --git a/detection/src/main/java/com/njcn/gather/result/pojo/vo/FormContentVO.java b/detection/src/main/java/com/njcn/gather/result/pojo/vo/FormContentVO.java new file mode 100644 index 00000000..cca78a52 --- /dev/null +++ b/detection/src/main/java/com/njcn/gather/result/pojo/vo/FormContentVO.java @@ -0,0 +1,24 @@ +package com.njcn.gather.result.pojo.vo; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author caozehui + * @data 2024-12-30 + */ +@Data +public class FormContentVO { + + private String scriptName; + + private String errorSysName; + + private String dataRule; + + private String deviceName; + + private List> chnList; +} diff --git a/detection/src/main/java/com/njcn/gather/result/pojo/vo/TreeDataVO.java b/detection/src/main/java/com/njcn/gather/result/pojo/vo/TreeDataVO.java new file mode 100644 index 00000000..c459a4b1 --- /dev/null +++ b/detection/src/main/java/com/njcn/gather/result/pojo/vo/TreeDataVO.java @@ -0,0 +1,16 @@ +package com.njcn.gather.result.pojo.vo; + +import lombok.Data; + +/** + * @author caozehui + * @data 2024-12-31 + */ +@Data +public class TreeDataVO { + private String id; + + private String scriptName; + + private TreeDataVO[] children; +} 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 new file mode 100644 index 00000000..978208a5 --- /dev/null +++ b/detection/src/main/java/com/njcn/gather/result/service/IResultService.java @@ -0,0 +1,12 @@ +package com.njcn.gather.result.service; + +import com.njcn.gather.result.pojo.param.ResultParam; +import com.njcn.gather.result.pojo.vo.FormContentVO; + +/** + * @author caozehui + * @data 2024-12-30 + */ +public interface IResultService { + FormContentVO getFormContent(ResultParam.QueryParam queryParam); +} 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 new file mode 100644 index 00000000..5c2ad611 --- /dev/null +++ b/detection/src/main/java/com/njcn/gather/result/service/impl/ResultServiceImpl.java @@ -0,0 +1,109 @@ +package com.njcn.gather.result.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.njcn.db.mybatisplus.handler.DynamicTableNameHandler; +import com.njcn.gather.device.device.service.IPqDevService; +import com.njcn.gather.device.script.service.IPqScriptDtlsService; +import com.njcn.gather.plan.pojo.po.AdPlan; +import com.njcn.gather.plan.service.IAdPlanService; +import com.njcn.gather.result.pojo.param.ResultParam; +import com.njcn.gather.result.pojo.vo.FormContentVO; +import com.njcn.gather.result.service.IResultService; +import com.njcn.gather.storage.pojo.po.AdBaseResult; +import com.njcn.gather.storage.service.AdHarmonicService; +import com.njcn.gather.storage.service.AdNonHarmonicService; +import com.njcn.gather.system.config.service.ISysTestConfigService; +import com.njcn.gather.system.dictionary.pojo.po.DictTree; +import com.njcn.gather.system.dictionary.service.IDictTreeService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author caozehui + * @data 2024-12-30 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class ResultServiceImpl implements IResultService { + + private final IAdPlanService adPlanService; + private final ISysTestConfigService sysTestConfigService; + private final IPqDevService pqDevService; + private final AdNonHarmonicService adNonHarmonicService; + private final AdHarmonicService adHarmonicService; + private final IPqScriptDtlsService pqScriptDtlsService; + private final IDictTreeService dictTreeService; + + // 谐波类code,取树形字典表中的code + private final List HARMONIC_TYPE_CODE = Arrays.asList("HV", "HI", "HP", "HSV", "HSI"); + + + @Override + public FormContentVO getFormContent(ResultParam.QueryParam queryParam) { + FormContentVO formContentVO = new FormContentVO(); + AdPlan plan = adPlanService.getById(queryParam.getPlanId()); + String scriptId = null; + if (ObjectUtil.isNotNull(plan)) { + scriptId = plan.getScriptId(); + adPlanService.visualize(Collections.singletonList(plan)); + } + formContentVO.setScriptName(plan.getScriptId()); + formContentVO.setErrorSysName(plan.getErrorSysId()); + formContentVO.setDataRule(sysTestConfigService.getConfig().getDataRule()); + formContentVO.setDeviceName(pqDevService.getById(queryParam.getDeviceId()).getName()); + + List> chnList = new ArrayList<>(); + + List allResultList = new ArrayList<>(); + + if (ObjectUtil.isNotNull(queryParam.getScriptType())) { //只查询指定的脚本类型 + List indexList = pqScriptDtlsService.getIndexList(queryParam.getScriptType(), scriptId); + DictTree dictTree = dictTreeService.getById(queryParam.getScriptType()); + + if (HARMONIC_TYPE_CODE.contains(dictTree.getCode())) { + String prefix = "ad_harmonic_result_"; + DynamicTableNameHandler.setTableName(prefix + plan.getCode()); + allResultList.addAll(adHarmonicService.get(scriptId, indexList, queryParam.getDeviceId(), queryParam.getChnNum())); + DynamicTableNameHandler.remove(); + } else { + String prefix = "ad_non_harmonic_result_"; + DynamicTableNameHandler.setTableName(prefix + plan.getCode()); + allResultList.addAll(adNonHarmonicService.get(scriptId, indexList, queryParam.getDeviceId(), queryParam.getChnNum())); + DynamicTableNameHandler.remove(); + } + } else { //查询所有的脚本类型 + String prefix = "ad_harmonic_result_"; + DynamicTableNameHandler.setTableName(prefix + plan.getCode()); + allResultList.addAll(adHarmonicService.get(scriptId, null, queryParam.getDeviceId(), queryParam.getChnNum())); + DynamicTableNameHandler.remove(); + + prefix = "ad_non_harmonic_result_"; + DynamicTableNameHandler.setTableName(prefix + plan.getCode()); + allResultList.addAll(adNonHarmonicService.get(scriptId, null, queryParam.getDeviceId(), queryParam.getChnNum())); + DynamicTableNameHandler.remove(); + } + + if(ObjectUtil.isNotEmpty(allResultList)){ + Map> chnMap = allResultList.stream().collect( + Collectors.groupingBy(obj -> obj.getMonitorId().substring(obj.getMonitorId().lastIndexOf("_") + 1)) + ); + chnMap.forEach((chn, list) -> { + Map map = new HashMap<>(); + map.put("value", chn); + long count = list.stream().filter(obj -> obj.getResultFlag() == 0).count(); + map.put("label", count > 0 ? "0" : "1"); + chnList.add(map); + }); + } + + chnList.sort(Comparator.comparingInt(o -> Integer.parseInt(o.get("value")))); + + formContentVO.setChnList(chnList); + return formContentVO; + } +} diff --git a/device/src/main/java/com/njcn/gather/device/pojo/constant/DevValidMessage.java b/device/src/main/java/com/njcn/gather/device/pojo/constant/DevValidMessage.java index a67ce41e..ddfbad04 100644 --- a/device/src/main/java/com/njcn/gather/device/pojo/constant/DevValidMessage.java +++ b/device/src/main/java/com/njcn/gather/device/pojo/constant/DevValidMessage.java @@ -138,9 +138,9 @@ public interface DevValidMessage { String PQ_SOURCE_PARAMETER_VALUE_NOT_BLANK = "参数值不能为空,请检查pqSourceParameterValue参数"; - String DEV_ID_NOT_BLANK = "所属设备ID不能为空"; + String DEV_ID_NOT_BLANK = "设备ID不能为空"; - String DEV_ID_FORMAT_ERROR = "所属设备ID格式错误"; + String DEV_ID_FORMAT_ERROR = "设备ID格式错误"; String BELONG_LINE_NOT_BLANK = "所属母线不能为空"; diff --git a/device/src/main/java/com/njcn/gather/device/script/pojo/po/PqScriptDtls.java b/device/src/main/java/com/njcn/gather/device/script/pojo/po/PqScriptDtls.java index 5720542b..097b6350 100644 --- a/device/src/main/java/com/njcn/gather/device/script/pojo/po/PqScriptDtls.java +++ b/device/src/main/java/com/njcn/gather/device/script/pojo/po/PqScriptDtls.java @@ -23,6 +23,7 @@ public class PqScriptDtls implements Serializable { /** * 检测脚本ID */ + @TableField("Script_Id") private String scriptId; /** @@ -34,6 +35,7 @@ public class PqScriptDtls implements Serializable { /** * 检测脚本类型 */ + @TableField("Script_Type") private String scriptType; /** @@ -51,6 +53,7 @@ public class PqScriptDtls implements Serializable { /** * 表明指标类型(例如:VOL电压、CUR电流、Freq频率...) */ + @TableField("Value_Type") private String valueType; /** diff --git a/device/src/main/java/com/njcn/gather/device/script/service/IPqScriptDtlsService.java b/device/src/main/java/com/njcn/gather/device/script/service/IPqScriptDtlsService.java index 29f54b6d..cddd847c 100644 --- a/device/src/main/java/com/njcn/gather/device/script/service/IPqScriptDtlsService.java +++ b/device/src/main/java/com/njcn/gather/device/script/service/IPqScriptDtlsService.java @@ -55,8 +55,18 @@ public interface IPqScriptDtlsService extends IService { /** * 根据计划绑定检测脚本id获取全部检测脚本 + * * @param param * @return */ List listSourceIssue(PqScriptIssueParam param); + + /** + * 根据脚本类型、脚本id获取index列表 + * + * @param scriptType 脚本类型 + * @param scriptId 脚本id + * @return index列表 + */ + List getIndexList(String scriptType, String scriptId); } 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 441fecf7..0d7b0a34 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 @@ -197,6 +197,16 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl getIndexList(String scriptType, String scriptId) { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + wrapper.select(PqScriptDtls::getIndex) + .distinct() + .eq(PqScriptDtls::getScriptType, scriptType) + .eq(PqScriptDtls::getScriptId, scriptId); + return this.getBaseMapper().selectJoinList(PqScriptDtls.class, wrapper).stream().map(PqScriptDtls::getIndex).collect(Collectors.toList()); + } + private List pqScriptDtls(String scriptId, Boolean isPhaseSequence, Double volt, Double curr) { List pqScriptDtls; MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); diff --git a/storage/src/main/java/com/njcn/gather/storage/mapper/AdHarmonicMappper.java b/storage/src/main/java/com/njcn/gather/storage/mapper/AdHarmonicMappper.java new file mode 100644 index 00000000..aa87c142 --- /dev/null +++ b/storage/src/main/java/com/njcn/gather/storage/mapper/AdHarmonicMappper.java @@ -0,0 +1,14 @@ +package com.njcn.gather.storage.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.github.yulichang.base.MPJBaseMapper; +import com.njcn.gather.storage.pojo.po.AdHarmonicResult; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author caozehui + * @data 2024-12-30 + */ +@Mapper +public interface AdHarmonicMappper extends MPJBaseMapper { +} diff --git a/storage/src/main/java/com/njcn/gather/storage/mapper/AdNonHarmonicMapper.java b/storage/src/main/java/com/njcn/gather/storage/mapper/AdNonHarmonicMapper.java index d1ba8687..7dee9ef1 100644 --- a/storage/src/main/java/com/njcn/gather/storage/mapper/AdNonHarmonicMapper.java +++ b/storage/src/main/java/com/njcn/gather/storage/mapper/AdNonHarmonicMapper.java @@ -1,9 +1,17 @@ package com.njcn.gather.storage.mapper; -import com.njcn.db.mybatisplus.mapper.BatchBaseMapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.github.yulichang.base.MPJBaseMapper; +import com.njcn.gather.storage.pojo.po.AdHarmonicResult; import com.njcn.gather.storage.pojo.po.AdNonHarmonicResult; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface AdNonHarmonicMapper extends MPJBaseMapper { + + + -public interface AdNonHarmonicMapper extends BatchBaseMapper { } diff --git a/storage/src/main/java/com/njcn/gather/storage/pojo/po/AdBaseResult.java b/storage/src/main/java/com/njcn/gather/storage/pojo/po/AdBaseResult.java new file mode 100644 index 00000000..3f80e20b --- /dev/null +++ b/storage/src/main/java/com/njcn/gather/storage/pojo/po/AdBaseResult.java @@ -0,0 +1,30 @@ +package com.njcn.gather.storage.pojo.po; + +import lombok.Data; + +/** + * @author caozehui + * @data 2024-12-30 + */ +@Data +public class AdBaseResult { + /** + * 监测点Id + */ + private String monitorId; + + /** + * 检测脚本Id + */ + private String scriptId; + + /** + * 总检测脚本中的测试项序号 + */ + private Integer index; + + /** + * 0.不合格 1.合格 + */ + private Integer resultFlag; +} diff --git a/storage/src/main/java/com/njcn/gather/storage/pojo/po/AdHarmonicResult.java b/storage/src/main/java/com/njcn/gather/storage/pojo/po/AdHarmonicResult.java index d05804cc..73bb8ffa 100644 --- a/storage/src/main/java/com/njcn/gather/storage/pojo/po/AdHarmonicResult.java +++ b/storage/src/main/java/com/njcn/gather/storage/pojo/po/AdHarmonicResult.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import java.time.LocalDateTime; + import lombok.Getter; import lombok.Setter; @@ -22,6 +23,9 @@ public class AdHarmonicResult { private static final long serialVersionUID = 1L; + @TableField(exist = false) + private String scriptDtlsId; + /** * 监测点Id */ @@ -37,7 +41,9 @@ public class AdHarmonicResult { */ private String scriptId; - @TableField("`INDEX`") + /** + * 总检测脚本中的测试项序号 + */ private Integer index; /** @@ -58,751 +64,901 @@ public class AdHarmonicResult { /** * A相基波 */ + @TableField(value = "A_Value_1") private String aValue1; /** * 2次A相谐波 */ + @TableField(value = "A_Value_2") private String aValue2; /** * 3次A相谐波 */ + @TableField(value = "A_Value_3") private String aValue3; /** * 4次A相谐波 */ + @TableField(value = "A_Value_4") private String aValue4; /** * 5次A相谐波 */ + @TableField(value = "A_Value_5") private String aValue5; /** * 6次A相谐波 */ + @TableField(value = "A_Value_6") private String aValue6; /** * 7次A相谐波 */ + @TableField(value = "A_Value_7") private String aValue7; /** * 8次A相谐波 */ + @TableField(value = "A_Value_8") private String aValue8; /** * 9次A相谐波 */ + @TableField(value = "A_Value_9") private String aValue9; /** * 10次A相谐波 */ + @TableField(value = "A_Value_10") private String aValue10; /** * 11次A相谐波 */ + @TableField(value = "A_Value_11") private String aValue11; /** * 12次A相谐波 */ + @TableField(value = "A_Value_12") private String aValue12; /** * 13次A相谐波 */ + @TableField(value = "A_Value_13") private String aValue13; /** * 14次A相谐波 */ + @TableField(value = "A_Value_14") private String aValue14; /** * 15次A相谐波 */ + @TableField(value = "A_Value_15") private String aValue15; /** * 16次A相谐波 */ + @TableField(value = "A_Value_16") private String aValue16; /** * 17次A相谐波 */ + @TableField(value = "A_Value_17") private String aValue17; /** * 18次A相谐波 */ + @TableField(value = "A_Value_18") private String aValue18; /** * 19次A相谐波 */ + @TableField(value = "A_Value_19") private String aValue19; /** * 20次A相谐波 */ + @TableField(value = "A_Value_20") private String aValue20; /** * 21次A相谐波 */ + @TableField(value = "A_Value_21") private String aValue21; /** * 22次A相谐波 */ + @TableField(value = "A_Value_22") private String aValue22; /** * 23次A相谐波 */ + @TableField(value = "A_Value_23") private String aValue23; /** * 24次A相谐波 */ + @TableField(value = "A_Value_24") private String aValue24; /** * 25次A相谐波 */ + @TableField(value = "A_Value_25") private String aValue25; /** * 26次A相谐波 */ + @TableField(value = "A_Value_26") private String aValue26; /** * 27次A相谐波 */ + @TableField(value = "A_Value_27") private String aValue27; /** * 28次A相谐波 */ + @TableField(value = "A_Value_28") private String aValue28; /** * 29次A相谐波 */ + @TableField(value = "A_Value_29") private String aValue29; /** * 30次A相谐波 */ + @TableField(value = "A_Value_30") private String aValue30; /** * 31次A相谐波 */ + @TableField(value = "A_Value_31") private String aValue31; /** * 32次A相谐波 */ + @TableField(value = "A_Value_32") private String aValue32; /** * 33次A相谐波 */ + @TableField(value = "A_Value_33") private String aValue33; /** * 34次A相谐波 */ + @TableField(value = "A_Value_34") private String aValue34; /** * 35次A相谐波 */ + @TableField(value = "A_Value_35") private String aValue35; /** * 36次A相谐波 */ + @TableField(value = "A_Value_36") private String aValue36; /** * 37次A相谐波 */ + @TableField(value = "A_Value_37") private String aValue37; /** * 38次A相谐波 */ + @TableField(value = "A_Value_38") private String aValue38; /** * 39次A相谐波 */ + @TableField(value = "A_Value_39") private String aValue39; /** * 40次A相谐波 */ + @TableField(value = "A_Value_40") private String aValue40; /** * 41次A相谐波 */ + @TableField(value = "A_Value_41") private String aValue41; /** * 42次A相谐波 */ + @TableField(value = "A_Value_42") private String aValue42; /** * 43次A相谐波 */ + @TableField(value = "A_Value_43") private String aValue43; /** * 44次A相谐波 */ + @TableField(value = "A_Value_44") private String aValue44; /** * 45次A相谐波 */ + @TableField(value = "A_Value_45") private String aValue45; /** * 46次A相谐波 */ + @TableField(value = "A_Value_46") private String aValue46; /** * 47次A相谐波 */ + @TableField(value = "A_Value_47") private String aValue47; /** * 48次A相谐波 */ + @TableField(value = "A_Value_48") private String aValue48; /** * 49次A相谐波 */ + @TableField(value = "A_Value_49") private String aValue49; /** * 50次A相谐波 */ + @TableField(value = "A_Value_50") private String aValue50; /** * B相基波 */ + @TableField(value = "B_Value_1") private String bValue1; /** * 2次B相谐波 */ + @TableField(value = "B_Value_2") private String bValue2; /** * 3次B相谐波 */ + @TableField(value = "B_Value_3") private String bValue3; /** * 4次B相谐波 */ + @TableField(value = "B_Value_4") private String bValue4; /** * 5次B相谐波 */ + @TableField(value = "B_Value_5") private String bValue5; /** * 6次B相谐波 */ + @TableField(value = "B_Value_6") private String bValue6; /** * 7次B相谐波 */ + @TableField(value = "B_Value_7") private String bValue7; /** * 8次B相谐波 */ + @TableField(value = "B_Value_8") private String bValue8; /** * 9次B相谐波 */ + @TableField(value = "B_Value_9") private String bValue9; /** * 10次B相谐波 */ + @TableField(value = "B_Value_10") private String bValue10; /** * 11次B相谐波 */ + @TableField(value = "B_Value_11") private String bValue11; /** * 12次B相谐波 */ + @TableField(value = "B_Value_12") private String bValue12; /** * 13次B相谐波 */ + @TableField(value = "B_Value_13") private String bValue13; /** * 14次B相谐波 */ + @TableField(value = "B_Value_14") private String bValue14; /** * 15次B相谐波 */ + @TableField(value = "B_Value_15") private String bValue15; /** * 16次B相谐波 */ + @TableField(value = "B_Value_16") private String bValue16; /** * 17次B相谐波 */ + @TableField(value = "B_Value_17") private String bValue17; /** * 18次B相谐波 */ + @TableField(value = "B_Value_18") private String bValue18; /** * 19次B相谐波 */ + @TableField(value = "B_Value_19") private String bValue19; /** * 20次B相谐波 */ + @TableField(value = "B_Value_20") private String bValue20; /** * 21次B相谐波 */ + @TableField(value = "B_Value_21") private String bValue21; /** * 22次B相谐波 */ + @TableField(value = "B_Value_22") private String bValue22; /** * 23次B相谐波 */ + @TableField(value = "B_Value_23") private String bValue23; /** * 24次B相谐波 */ + @TableField(value = "B_Value_24") private String bValue24; /** * 25次B相谐波 */ + @TableField(value = "B_Value_25") private String bValue25; /** * 26次B相谐波 */ + @TableField(value = "B_Value_26") private String bValue26; /** * 27次B相谐波 */ + @TableField(value = "B_Value_27") private String bValue27; /** * 28次B相谐波 */ + @TableField(value = "B_Value_28") private String bValue28; /** * 29次B相谐波 */ + @TableField(value = "B_Value_29") private String bValue29; /** * 30次B相谐波 */ + @TableField(value = "B_Value_30") private String bValue30; /** * 31次B相谐波 */ + @TableField(value = "B_Value_31") private String bValue31; /** * 32次B相谐波 */ + @TableField(value = "B_Value_32") private String bValue32; /** * 33次B相谐波 */ + @TableField(value = "B_Value_33") private String bValue33; /** * 34次B相谐波 */ + @TableField(value = "B_Value_34") private String bValue34; /** * 35次B相谐波 */ + @TableField(value = "B_Value_35") private String bValue35; /** * 36次B相谐波 */ + @TableField(value = "B_Value_36") private String bValue36; /** * 37次B相谐波 */ + @TableField(value = "B_Value_37") private String bValue37; /** * 38次B相谐波 */ + @TableField(value = "B_Value_38") private String bValue38; /** * 39次B相谐波 */ + @TableField(value = "B_Value_39") private String bValue39; /** * 40次B相谐波 */ + @TableField(value = "B_Value_40") private String bValue40; /** * 41次B相谐波 */ + @TableField(value = "B_Value_41") private String bValue41; /** * 42次B相谐波 */ + @TableField(value = "B_Value_42") private String bValue42; /** * 43次B相谐波 */ + @TableField(value = "B_Value_43") private String bValue43; /** * 44次B相谐波 */ + @TableField(value = "B_Value_44") private String bValue44; /** * 45次B相谐波 */ + @TableField(value = "B_Value_45") private String bValue45; /** * 46次B相谐波 */ + @TableField(value = "B_Value_46") private String bValue46; /** * 47次B相谐波 */ + @TableField(value = "B_Value_47") private String bValue47; /** * 48次B相谐波 */ + @TableField(value = "B_Value_48") private String bValue48; /** * 49次B相谐波 */ + @TableField(value = "B_Value_49") private String bValue49; /** * 50次B相谐波 */ + @TableField(value = "B_Value_50") private String bValue50; /** * C相基波 */ + @TableField(value = "C_Value_1") private String cValue1; /** * 2次C相谐波 */ + @TableField(value = "C_Value_2") private String cValue2; /** * 3次C相谐波 */ + @TableField(value = "C_Value_3") private String cValue3; /** * 4次C相谐波 */ + @TableField(value = "C_Value_4") private String cValue4; /** * 5次C相谐波 */ + @TableField(value = "C_Value_5") private String cValue5; /** * 6次C相谐波 */ + @TableField(value = "C_Value_6") private String cValue6; /** * 7次C相谐波 */ + @TableField(value = "C_Value_7") private String cValue7; /** * 8次C相谐波 */ + @TableField(value = "C_Value_8") private String cValue8; /** * 9次C相谐波 */ + @TableField(value = "C_Value_9") private String cValue9; /** * 10次C相谐波 */ + @TableField(value = "C_Value_10") private String cValue10; /** * 11次C相谐波 */ + @TableField(value = "C_Value_11") private String cValue11; /** * 12次C相谐波 */ + @TableField(value = "C_Value_12") private String cValue12; /** * 13次C相谐波 */ + @TableField(value = "C_Value_13") private String cValue13; /** * 14次C相谐波 */ + @TableField(value = "C_Value_14") private String cValue14; /** * 15次C相谐波 */ + @TableField(value = "C_Value_15") private String cValue15; /** * 16次C相谐波 */ + @TableField(value = "C_Value_16") private String cValue16; /** * 17次C相谐波 */ + @TableField(value = "C_Value_17") private String cValue17; /** * 18次C相谐波 */ + @TableField(value = "C_Value_18") private String cValue18; /** * 19次C相谐波 */ + @TableField(value = "C_Value_19") private String cValue19; /** * 20次C相谐波 */ + @TableField(value = "C_Value_20") private String cValue20; /** * 21次C相谐波 */ + @TableField(value = "C_Value_21") private String cValue21; /** * 22次C相谐波 */ + @TableField(value = "C_Value_22") private String cValue22; /** * 23次C相谐波 */ + @TableField(value = "C_Value_23") private String cValue23; /** * 24次C相谐波 */ + @TableField(value = "C_Value_24") private String cValue24; /** * 25次C相谐波 */ + @TableField(value = "C_Value_25") private String cValue25; /** * 26次C相谐波 */ + @TableField(value = "C_Value_26") private String cValue26; /** * 27次C相谐波 */ + @TableField(value = "C_Value_27") private String cValue27; /** * 28次C相谐波 */ + @TableField(value = "C_Value_28") private String cValue28; /** * 29次C相谐波 */ + @TableField(value = "C_Value_29") private String cValue29; /** * 30次C相谐波 */ + @TableField(value = "C_Value_30") private String cValue30; /** * 31次C相谐波 */ + @TableField(value = "C_Value_31") private String cValue31; /** * 32次C相谐波 */ + @TableField(value = "C_Value_32") private String cValue32; /** * 33次C相谐波 */ + @TableField(value = "C_Value_33") private String cValue33; /** * 34次C相谐波 */ + @TableField(value = "C_Value_34") private String cValue34; /** * 35次C相谐波 */ + @TableField(value = "C_Value_35") private String cValue35; /** * 36次C相谐波 */ + @TableField(value = "C_Value_36") private String cValue36; /** * 37次C相谐波 */ + @TableField(value = "C_Value_37") private String cValue37; /** * 38次C相谐波 */ + @TableField(value = "C_Value_38") private String cValue38; /** * 39次C相谐波 */ + @TableField(value = "C_Value_39") private String cValue39; /** * 40次C相谐波 */ + @TableField(value = "C_Value_40") private String cValue40; /** * 41次C相谐波 */ + @TableField(value = "C_Value_41") private String cValue41; /** * 42次C相谐波 */ + @TableField(value = "C_Value_42") private String cValue42; /** * 43次C相谐波 */ + @TableField(value = "C_Value_43") private String cValue43; /** * 44次C相谐波 */ + @TableField(value = "C_Value_44") private String cValue44; /** * 45次C相谐波 */ + @TableField(value = "C_Value_45") private String cValue45; /** * 46次C相谐波 */ + @TableField(value = "C_Value_46") private String cValue46; /** * 47次C相谐波 */ + @TableField(value = "C_Value_47") private String cValue47; /** * 48次C相谐波 */ + @TableField(value = "C_Value_48") private String cValue48; /** * 49次C相谐波 */ + @TableField(value = "C_Value_49") private String cValue49; /** * 50次C相谐波 */ + @TableField(value = "C_Value_50") private String cValue50; diff --git a/storage/src/main/java/com/njcn/gather/storage/pojo/po/AdNonHarmonicResult.java b/storage/src/main/java/com/njcn/gather/storage/pojo/po/AdNonHarmonicResult.java index 25b5ccc8..8be661d7 100644 --- a/storage/src/main/java/com/njcn/gather/storage/pojo/po/AdNonHarmonicResult.java +++ b/storage/src/main/java/com/njcn/gather/storage/pojo/po/AdNonHarmonicResult.java @@ -1,6 +1,5 @@ package com.njcn.gather.storage.pojo.po; -import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import java.time.LocalDateTime; @@ -37,7 +36,9 @@ public class AdNonHarmonicResult { */ private String scriptId; - @TableField("`INDEX`") + /** + * 总检测脚本中的测试项序号 + */ private Integer index; /** 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 new file mode 100644 index 00000000..9cb48e3e --- /dev/null +++ b/storage/src/main/java/com/njcn/gather/storage/service/AdHarmonicService.java @@ -0,0 +1,25 @@ +package com.njcn.gather.storage.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.gather.storage.pojo.po.AdBaseResult; +import com.njcn.gather.storage.pojo.po.AdHarmonicResult; + +import java.util.List; + +/** + * @author caozehui + * @data 2024-12-30 + */ +public interface AdHarmonicService extends IService { + + /** + * 根据设备ID和通道号获取谐波结果 + * + * @param scriptId 脚本id + * @param index 序号列表 + * @param deviceId 设备ID + * @param chnNum 通道号,从1开始 + * @return 谐波结果 + */ + List get(String scriptId, List index, String deviceId, String chnNum); +} 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 d4467682..888fd855 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 @@ -1,11 +1,24 @@ package com.njcn.gather.storage.service; -import com.njcn.db.mybatisplus.service.IReplenishMybatisService; +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.gather.storage.pojo.po.AdBaseResult; import com.njcn.gather.storage.pojo.po.AdNonHarmonicResult; +import java.util.List; -public interface AdNonHarmonicService extends IReplenishMybatisService { +public interface AdNonHarmonicService extends IService { + /** + * 根据设备ID和通道号获取非谐波结果 + * + * @param scriptId 脚本ID + * @param index 总检测脚本中的测试项序号列表 + * @param deviceId 设备ID + * @param chnNum 通道号,从1开始 + * @return 非谐波结果 + */ + List get(String scriptId, List index, String deviceId, String chnNum); + } 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 new file mode 100644 index 00000000..845012f7 --- /dev/null +++ b/storage/src/main/java/com/njcn/gather/storage/service/impl/AdHarmonicServiceImpl.java @@ -0,0 +1,34 @@ +package com.njcn.gather.storage.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.njcn.gather.storage.mapper.AdHarmonicMappper; +import com.njcn.gather.storage.pojo.po.AdBaseResult; +import com.njcn.gather.storage.pojo.po.AdHarmonicResult; +import com.njcn.gather.storage.service.AdHarmonicService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author caozehui + * @data 2024-12-30 + */ +@Service +public class AdHarmonicServiceImpl extends ServiceImpl implements AdHarmonicService { + @Override + public List get(String scriptId, List index, String deviceId, String chnNum) { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + String monitorId = deviceId + "_" + chnNum; + if ("-1".equals(chnNum)) { + monitorId = deviceId; + } + wrapper.like(AdHarmonicResult::getMonitorId, monitorId) + .eq(ObjectUtil.isNotNull(scriptId), AdHarmonicResult::getScriptId, scriptId) + .in(ObjectUtil.isNotEmpty(index), AdHarmonicResult::getIndex, index); + List list = this.getBaseMapper().selectJoinList(AdHarmonicResult.class, wrapper); + return BeanUtil.copyToList(list, AdBaseResult.class); + } +} 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 2701bd73..1bb209f0 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 @@ -1,17 +1,34 @@ package com.njcn.gather.storage.service.impl; -import com.njcn.db.mybatisplus.service.impl.ReplenishMybatisServiceImpl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.njcn.gather.storage.mapper.AdNonHarmonicMapper; +import com.njcn.gather.storage.pojo.po.AdBaseResult; import com.njcn.gather.storage.pojo.po.AdNonHarmonicResult; import com.njcn.gather.storage.service.AdNonHarmonicService; import org.springframework.stereotype.Service; +import java.util.List; /** * */ @Service -public class AdNonHarmonicServiceImpl extends ReplenishMybatisServiceImpl implements AdNonHarmonicService { - +public class AdNonHarmonicServiceImpl extends ServiceImpl implements AdNonHarmonicService { + @Override + public List get(String scriptId, List index, String deviceId, String chnNum) { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + String monitorId = deviceId + "_" + chnNum; + if ("-1".equals(chnNum)) { + monitorId = deviceId; + } + wrapper.like(AdNonHarmonicResult::getMonitorId, monitorId) + .eq(ObjectUtil.isNotNull(scriptId), AdNonHarmonicResult::getScriptId, scriptId) + .in(ObjectUtil.isNotEmpty(index), AdNonHarmonicResult::getIndex, index); + List list = this.getBaseMapper().selectJoinList(AdNonHarmonicResult.class, wrapper); + return BeanUtil.copyToList(list, AdBaseResult.class); + } }