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 e20df2b9..037c31cd 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 @@ -413,5 +413,16 @@ public class AdPlanController extends BaseController { } + @OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.UPLOAD) + @PostMapping(value = "/mergePlanCheckData") + @ApiOperation("合并计划检测结果数据") + @ApiImplicitParam(name = "planId", value = "计划id", required = true) + public HttpResult mergePlanCheckData(@RequestParam("planId") String planId) { + String methodDescribe = getMethodDescribe("mergePlanCheckData"); + LogUtil.njcnDebug(log, "{},合并计划ID数据为:{}", methodDescribe, planId); + adPlanService.mergePlanCheckData(planId); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + + } } diff --git a/detection/src/main/java/com/njcn/gather/plan/mapper/AdPlanTestConfigMapper.java b/detection/src/main/java/com/njcn/gather/plan/mapper/AdPlanTestConfigMapper.java new file mode 100644 index 00000000..bfcc7489 --- /dev/null +++ b/detection/src/main/java/com/njcn/gather/plan/mapper/AdPlanTestConfigMapper.java @@ -0,0 +1,16 @@ +package com.njcn.gather.plan.mapper; + +import com.github.yulichang.base.MPJBaseMapper; +import com.njcn.gather.plan.pojo.po.AdPlanTestConfig; + +/** +* @author stary +* @date 2025-08-25 +*/ +public interface AdPlanTestConfigMapper extends MPJBaseMapper { + +} + + + + diff --git a/detection/src/main/java/com/njcn/gather/plan/pojo/param/AdPlanParam.java b/detection/src/main/java/com/njcn/gather/plan/pojo/param/AdPlanParam.java index 13d58b5f..9c20a4ed 100644 --- a/detection/src/main/java/com/njcn/gather/plan/pojo/param/AdPlanParam.java +++ b/detection/src/main/java/com/njcn/gather/plan/pojo/param/AdPlanParam.java @@ -1,6 +1,7 @@ package com.njcn.gather.plan.pojo.param; import com.njcn.common.pojo.constant.PatternRegex; +import com.njcn.gather.plan.pojo.po.AdPlanTestConfig; import com.njcn.gather.pojo.constant.DetectionValidMessage; import com.njcn.web.pojo.param.BaseParam; import io.swagger.annotations.ApiModelProperty; @@ -71,7 +72,8 @@ public class AdPlanParam { @ApiModelProperty(value = "测试项ID列表") private List<@Pattern(regexp = PatternRegex.SYSTEM_ID, message = DetectionValidMessage.SOURCE_ID_FORMAT_ERROR)String> testItems; - + @ApiModelProperty(value = "检测配置") + private AdPlanTestConfig testConfig; /** * 分页查询实体 */ diff --git a/detection/src/main/java/com/njcn/gather/plan/pojo/po/AdPlanTestConfig.java b/detection/src/main/java/com/njcn/gather/plan/pojo/po/AdPlanTestConfig.java new file mode 100644 index 00000000..cec168ba --- /dev/null +++ b/detection/src/main/java/com/njcn/gather/plan/pojo/po/AdPlanTestConfig.java @@ -0,0 +1,51 @@ +package com.njcn.gather.plan.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author stary + * @date 2025-08-25 + */ +@Data +@TableName("ad_plan_test_config") +@AllArgsConstructor +@NoArgsConstructor +public class AdPlanTestConfig implements Serializable { + private static final long serialVersionUID = -796292730578249530L; + /** + * 检测计划表Id + */ + private String planId; + + /** + * 录波数据有效组数 + */ + private Integer waveRecord; + + /** + * 实时数据有效组数 + */ + private Integer realTime; + + /** + * 统计数据有效组数 + */ + private Integer statistics; + + /** + * 短闪数据有效组数 + */ + private Integer flicker; + + /** + * 最大检测次数,默认3次 + */ + private Integer maxTime; + +} + diff --git a/detection/src/main/java/com/njcn/gather/plan/pojo/vo/AdPlanVO.java b/detection/src/main/java/com/njcn/gather/plan/pojo/vo/AdPlanVO.java index 631838b9..8aef5df0 100644 --- a/detection/src/main/java/com/njcn/gather/plan/pojo/vo/AdPlanVO.java +++ b/detection/src/main/java/com/njcn/gather/plan/pojo/vo/AdPlanVO.java @@ -1,6 +1,7 @@ package com.njcn.gather.plan.pojo.vo; import com.njcn.gather.device.pojo.vo.PqDevVO; +import com.njcn.gather.plan.pojo.po.AdPlanTestConfig; import lombok.Data; import lombok.EqualsAndHashCode; @@ -149,4 +150,6 @@ public class AdPlanVO { * 来源 */ private String origin; + + private AdPlanTestConfig testConfig; } 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 465c451c..b8591497 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 @@ -204,6 +204,12 @@ public interface IAdPlanService extends IService { * @param response */ boolean importSubPlanCheckDataZip(MultipartFile file, String patternId, HttpServletResponse response); + /** + * 合并计划检测结果数据 + * + * @param planId + */ + boolean mergePlanCheckData(String planId); } diff --git a/detection/src/main/java/com/njcn/gather/plan/service/IAdPlanTestConfigService.java b/detection/src/main/java/com/njcn/gather/plan/service/IAdPlanTestConfigService.java new file mode 100644 index 00000000..3663ec5e --- /dev/null +++ b/detection/src/main/java/com/njcn/gather/plan/service/IAdPlanTestConfigService.java @@ -0,0 +1,12 @@ +package com.njcn.gather.plan.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.gather.plan.pojo.po.AdPlanTestConfig; + +/** + * @author stary + * @date 2025-08-25 + */ +public interface IAdPlanTestConfigService extends IService { + +} 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 6e800a00..d54bed35 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 @@ -54,10 +54,12 @@ import com.njcn.gather.plan.pojo.enums.PlanReportStateEnum; import com.njcn.gather.plan.pojo.param.AdPlanParam; import com.njcn.gather.plan.pojo.po.AdPlan; import com.njcn.gather.plan.pojo.po.AdPlanStandardDev; +import com.njcn.gather.plan.pojo.po.AdPlanTestConfig; import com.njcn.gather.plan.pojo.vo.*; import com.njcn.gather.plan.service.IAdPlanService; import com.njcn.gather.plan.service.IAdPlanSourceService; import com.njcn.gather.plan.service.IAdPlanStandardDevService; +import com.njcn.gather.plan.service.IAdPlanTestConfigService; import com.njcn.gather.pojo.enums.DetectionResponseEnum; import com.njcn.gather.report.pojo.po.PqReport; import com.njcn.gather.report.service.IPqReportService; @@ -138,6 +140,7 @@ public class AdPlanServiceImpl extends ServiceImpl impleme private final IPqStandardDevService pqStandardDevService; private final IPqIcdPathService pqIcdPathService; private final IAdPariService adPairService; + private final IAdPlanTestConfigService adPlanTestConfigService; private final JdbcTemplate jdbcTemplate; @@ -207,6 +210,9 @@ public class AdPlanServiceImpl extends ServiceImpl impleme adPlanVO.setStandardDevNameStr(pqStandardDevs.stream().map(PqStandardDev::getName).reduce((a, b) -> a + "," + b).orElse("")); if (CommonEnum.FATHER_ID.getValue().equals(adPlan.getFatherPlanId())) { + // 查询检测配置 + AdPlanTestConfig testConfig = adPlanTestConfigService.getOne(new LambdaQueryWrapper().eq(AdPlanTestConfig::getPlanId, adPlan.getId())); + adPlanVO.setTestConfig(testConfig); List childrenPlan = this.lambdaQuery().eq(AdPlan::getFatherPlanId, adPlan.getId()).eq(AdPlan::getState, DataStateEnum.ENABLE.getCode()).list(); List childrenPlanIds = childrenPlan.stream().map(AdPlan::getId).collect(Collectors.toList()); if (CollUtil.isNotEmpty(childrenPlanIds)) { @@ -217,6 +223,10 @@ public class AdPlanServiceImpl extends ServiceImpl impleme Map standardDevIds = adPlanVO.getStandardDevMap(); standardDevIds.putAll(pqStandardDevs.stream().collect(Collectors.toMap(PqStandardDev::getId, obj -> 1))); // adPlanVO.setStandardDevNameStr(adPlanVO.getStandardDevNameStr() + pqStandardDevs.stream().map(PqStandardDev::getName).reduce((a, b) -> a + "," + b).orElse("")); + } else { + // 查询父计划检测配置 + AdPlanTestConfig testConfig = adPlanTestConfigService.getOne(new LambdaQueryWrapper().eq(AdPlanTestConfig::getPlanId, adPlan.getFatherPlanId())); + adPlanVO.setTestConfig(testConfig); } } @@ -233,7 +243,7 @@ public class AdPlanServiceImpl extends ServiceImpl impleme adPlan.setDatasourceId(String.join(StrUtil.COMMA, param.getDatasourceIds())); adPlan.setState(DataStateEnum.ENABLE.getCode()); - + boolean addTestConfig = true; if (StrUtil.isBlank(param.getFatherPlanId())) { // 默认为顶级检测计划 adPlan.setFatherPlanId(CommonEnum.FATHER_ID.getValue()); @@ -241,6 +251,7 @@ public class AdPlanServiceImpl extends ServiceImpl impleme AdPlan plan = this.getById(param.getFatherPlanId()); adPlan.setFatherPlanId(param.getFatherPlanId()); adPlan.setOrigin(plan.getName()); + addTestConfig = false; } adPlan.setTestState(CheckStateEnum.UNCHECKED.getValue()); adPlan.setReportState(PlanReportStateEnum.REPORT_STATE_NOT_GENERATED.getValue()); @@ -277,6 +288,12 @@ public class AdPlanServiceImpl extends ServiceImpl impleme adPlanStandardDevService.deleteAdPlanStandardDev(param.getFatherPlanId(), param.getStandardDevIds()); adPlanStandardDevService.addAdPlanStandardDev(planId, param.getStandardDevIds()); } + if (addTestConfig) { + // 添加检测配置 + AdPlanTestConfig testConfig = param.getTestConfig(); + testConfig.setPlanId(planId); + adPlanTestConfigService.save(testConfig); + } } else { // 关联检测源 adPlanSourceService.addAdPlanSource(planId, param.getSourceIds()); @@ -390,6 +407,10 @@ public class AdPlanServiceImpl extends ServiceImpl impleme List devIds = pqDevVOList.stream().map(PqDevVO::getId).collect(Collectors.toList()); param.getDevIds().removeAll(devIds); + // 更新检测配置 + AdPlanTestConfig testConfig = param.getTestConfig(); + adPlanTestConfigService.update(testConfig,new LambdaUpdateWrapper().eq(AdPlanTestConfig::getPlanId, testConfig.getPlanId())); + } else { // 修改检测计划、检测源关联 adPlanSourceService.updateAdPlanSource(param.getId(), param.getSourceIds()); @@ -400,7 +421,8 @@ public class AdPlanServiceImpl extends ServiceImpl impleme this.lambdaUpdate().in(AdPlan::getFatherPlanId, plan1.getId()).eq(AdPlan::getState, DataStateEnum.ENABLE.getCode()) .set(AdPlan::getOrigin, param.getName()).update(); } - return this.updateById(plan2); + + return this.updateById(plan2); } @Override @@ -423,6 +445,8 @@ public class AdPlanServiceImpl extends ServiceImpl impleme // 删除检测计划、标准设备关联 adPlanStandardDevService.deleteAdPlanStandardDev(ids); + // 删除检测配置 + adPlanTestConfigService.remove(new LambdaQueryWrapper().in(AdPlanTestConfig::getPlanId, ids)); } else { // 删除相关检测表格 List codeList = this.listByIds(ids).stream().map(plan -> String.valueOf(plan.getCode())).collect(Collectors.toList()); @@ -1976,4 +2000,27 @@ public class AdPlanServiceImpl extends ServiceImpl impleme } } + @Override + public boolean mergePlanCheckData(String planId) { + + AdPlan plan = this.getById(planId); + if (!plan.getFatherPlanId().equals(CommonEnum.FATHER_ID.getValue())) { + throw new BusinessException(CommonResponseEnum.FAIL, "该计划非主计划"); + } + Integer planCode = plan.getCode(); + // 获取所有子计划 + List subPlanList = this.lambdaQuery().eq(AdPlan::getFatherPlanId, planId).list(); + if (CollUtil.isEmpty(subPlanList)) { + throw new BusinessException(CommonResponseEnum.FAIL, "该计划未找到子计划"); + } + // 获取所有子计划检测数据 + List subPlanCodeList = subPlanList.stream().map(AdPlan::getCode).collect(Collectors.toList()); + for (Integer code : subPlanCodeList) { + List dataTableNames = CollUtil.newArrayList("ad_harmonic_" + code, "ad_non_harmonic_" + code, "ad_harmonic_result_" + code, "ad_non_harmonic_result_" + code); + + } + + return false; + } + } diff --git a/detection/src/main/java/com/njcn/gather/plan/service/impl/AdPlanTestConfigServiceImpl.java b/detection/src/main/java/com/njcn/gather/plan/service/impl/AdPlanTestConfigServiceImpl.java new file mode 100644 index 00000000..a4f3c561 --- /dev/null +++ b/detection/src/main/java/com/njcn/gather/plan/service/impl/AdPlanTestConfigServiceImpl.java @@ -0,0 +1,21 @@ +package com.njcn.gather.plan.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.gather.plan.mapper.AdPlanTestConfigMapper; +import com.njcn.gather.plan.pojo.po.AdPlanTestConfig; +import com.njcn.gather.plan.service.IAdPlanTestConfigService; +import org.springframework.stereotype.Service; + +/** + * @author stary + * @date 2025-08-25 + */ +@Service +public class AdPlanTestConfigServiceImpl extends ServiceImpl + implements IAdPlanTestConfigService { + +} + + + +