UPDATE: 修改导出计划检测结果数据,根据被检设备过滤

This commit is contained in:
贾同学
2025-08-29 15:07:17 +08:00
parent 52b99c2669
commit 3951b71fff
3 changed files with 36 additions and 12 deletions

View File

@@ -386,12 +386,13 @@ public class AdPlanController extends BaseController {
@ApiOperation("导出计划检测结果数据") @ApiOperation("导出计划检测结果数据")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "planId", value = "计划id", required = true), @ApiImplicitParam(name = "planId", value = "计划id", required = true),
@ApiImplicitParam(name = "devIds", value = "被检设备ids", required = true),
@ApiImplicitParam(name = "report", value = "是否导出报告, 0 否1 是", required = true) @ApiImplicitParam(name = "report", value = "是否导出报告, 0 否1 是", required = true)
}) })
public void exportPlanCheckData(@RequestParam("planId") String planId,@RequestParam("report") Integer report, HttpServletResponse response) { public void exportPlanCheckData(@RequestParam("planId") String planId, @RequestParam("devIds") String devIds, @RequestParam("report") Integer report, HttpServletResponse response) {
String methodDescribe = getMethodDescribe("exportPlanCheckData"); String methodDescribe = getMethodDescribe("exportPlanCheckData");
LogUtil.njcnDebug(log, "{}导出ID数据为{}", methodDescribe, planId); LogUtil.njcnDebug(log, "{}导出ID数据为{} {} {}", methodDescribe, planId, devIds, report);
adPlanService.exportPlanCheckDataZip(planId,report, response); adPlanService.exportPlanCheckDataZip(planId, StrUtil.split(devIds, StrUtil.COMMA), report, response);
} }

View File

@@ -178,6 +178,7 @@ public interface IAdPlanService extends IService<AdPlan> {
* @param response * @param response
*/ */
void exportSubPlanDataZip(String planId, HttpServletResponse response); void exportSubPlanDataZip(String planId, HttpServletResponse response);
/** /**
* 项目成员导入子计划元信息 * 项目成员导入子计划元信息
* *
@@ -191,10 +192,11 @@ public interface IAdPlanService extends IService<AdPlan> {
* 导出计划检测结果数据 * 导出计划检测结果数据
* *
* @param planId * @param planId
* @param devIds
* @param report * @param report
* @param response * @param response
*/ */
void exportPlanCheckDataZip(String planId,Integer report, HttpServletResponse response); void exportPlanCheckDataZip(String planId, List<String> devIds, Integer report, HttpServletResponse response);
/** /**
* 导入计划检测结果数据 * 导入计划检测结果数据
@@ -204,6 +206,7 @@ public interface IAdPlanService extends IService<AdPlan> {
* @param response * @param response
*/ */
boolean importSubPlanCheckDataZip(MultipartFile file, String patternId, HttpServletResponse response); boolean importSubPlanCheckDataZip(MultipartFile file, String patternId, HttpServletResponse response);
/** /**
* 合并计划检测结果数据 * 合并计划检测结果数据
* *

View File

@@ -1828,29 +1828,49 @@ public class AdPlanServiceImpl extends ServiceImpl<AdPlanMapper, AdPlan> impleme
} }
@Override @Override
public void exportPlanCheckDataZip(String planId, Integer report, HttpServletResponse response) { public void exportPlanCheckDataZip(String planId, List<String> devIds, Integer report, HttpServletResponse response) {
AdPlanCheckDataVO planCheckDataVO = new AdPlanCheckDataVO(); AdPlanCheckDataVO planCheckDataVO = new AdPlanCheckDataVO();
// 获取检测计划基本数据 // 获取检测计划基本数据
AdPlan plan = this.getById(planId); AdPlan plan = this.getById(planId);
planCheckDataVO.setPlan(plan); planCheckDataVO.setPlan(plan);
// 获取检测计划绑定的被检设备数据 // 获取检测计划绑定的被检设备数据
List<PqDev> devList = pqDevService.list(new LambdaQueryWrapper<PqDev>().eq(PqDev::getPlanId, planId)); List<PqDev> devList = pqDevService.list(new LambdaQueryWrapper<PqDev>().eq(PqDev::getPlanId, planId).in(PqDev::getId, devIds));
if (CollUtil.isEmpty(devList)) {
throw new BusinessException(CommonResponseEnum.FAIL, "选择的被检设备不存在");
}
planCheckDataVO.setDevList(devList); planCheckDataVO.setDevList(devList);
List<String> devIds = devList.stream().map(PqDev::getId).collect(Collectors.toList()); List<String> devIdList = devList.stream().map(PqDev::getId).collect(Collectors.toList());
// 被检设备状态统计 // 被检设备状态统计
List<PqDevSub> devSubList = pqDevSubService.list(new LambdaQueryWrapper<PqDevSub>().in(PqDevSub::getDevId, devIds)); List<PqDevSub> devSubList = pqDevSubService.list(new LambdaQueryWrapper<PqDevSub>().in(PqDevSub::getDevId, devIdList));
planCheckDataVO.setDevSubList(devSubList); planCheckDataVO.setDevSubList(devSubList);
// 被检设备监测点信息
List<PqMonitor> monitorList = pqMonitorService.list(new LambdaQueryWrapper<PqMonitor>().in(PqMonitor::getDevId, devIdList));
List<String> monitorIds = monitorList.stream().map(PqMonitor::getId).collect(Collectors.toList());
// 设备通道匹对关系 // 设备通道匹对关系
List<AdPair> pairList = adPairService.list(new LambdaQueryWrapper<AdPair>().eq(AdPair::getPlanId, planId)); List<AdPair> pairList = adPairService.list(new LambdaQueryWrapper<AdPair>().eq(AdPair::getPlanId, planId).in(AdPair::getDevMonitorId, monitorIds));
planCheckDataVO.setPairList(pairList); planCheckDataVO.setPairList(pairList);
// 获取计划检测结果数据表以及数据 // 获取计划检测结果数据表以及数据
Integer code = plan.getCode(); Integer code = plan.getCode();
Map<String, List<Map<String, Object>>> checkData = new HashMap<>(); Map<String, List<Map<String, Object>>> checkData = new HashMap<>();
List<String> dataTableNames = CollUtil.newArrayList("ad_harmonic_" + code, "ad_non_harmonic_" + code, "ad_harmonic_result_" + code, "ad_non_harmonic_result_" + code); List<String> dataTableNames = CollUtil.newArrayList("ad_harmonic_" + code, "ad_non_harmonic_" + code, "ad_harmonic_result_" + code, "ad_non_harmonic_result_" + code);
if (CollUtil.isNotEmpty(monitorIds)) {
for (String dataTableName : dataTableNames) { for (String dataTableName : dataTableNames) {
List<Map<String, Object>> dataList = jdbcTemplate.queryForList("select * from " + dataTableName); StringBuilder sql = new StringBuilder("select * from " + dataTableName);
sql.append(" where Dev_Monitor_Id in (");
for (int i = 0; i < monitorIds.size(); i++) {
sql.append("'").append(monitorIds.get(i)).append("'");
if (i < monitorIds.size() - 1) {
sql.append(",");
}
}
sql.append(")");
List<Map<String, Object>> dataList = jdbcTemplate.queryForList(sql.toString());
checkData.put(dataTableName, dataList); checkData.put(dataTableName, dataList);
} }
}
planCheckDataVO.setCheckData(checkData); planCheckDataVO.setCheckData(checkData);
// 导出数据.zip文件 // 导出数据.zip文件