ADD: 新增可选标准设备接口

This commit is contained in:
贾同学
2025-09-04 10:37:15 +08:00
parent efe92e28b1
commit b09438e29d
3 changed files with 68 additions and 0 deletions

View File

@@ -160,5 +160,17 @@ public class PqStandardDevController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, pqDevVOList, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, pqDevVOList, methodDescribe);
} }
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@GetMapping("/canBindingList")
@ApiOperation("查询可绑定的标准设备")
public HttpResult<List<PqStandardDev>> canBindingList() {
String methodDescribe = getMethodDescribe("canBindingList");
LogUtil.njcnDebug(log, "{},查询可绑定的标准设备", methodDescribe);
List<PqStandardDev> result = pqStandardDevService.canBindingList();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
} }

View File

@@ -91,4 +91,12 @@ public interface IPqStandardDevService extends IService<PqStandardDev> {
* @return * @return
*/ */
List<PreDetection> listStandardDevPreDetection(List<String> ids); List<PreDetection> listStandardDevPreDetection(List<String> ids);
/**
* 查询可绑定的标准设备列表
*
* @return
*/
List<PqStandardDev> canBindingList();
} }

View File

@@ -8,6 +8,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.spring.SpringUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -23,6 +24,10 @@ import com.njcn.gather.device.pojo.vo.PqStandardDevExcel;
import com.njcn.gather.device.pojo.vo.PreDetection; import com.njcn.gather.device.pojo.vo.PreDetection;
import com.njcn.gather.device.service.IPqStandardDevService; import com.njcn.gather.device.service.IPqStandardDevService;
import com.njcn.gather.plan.mapper.AdPlanStandardDevMapper; import com.njcn.gather.plan.mapper.AdPlanStandardDevMapper;
import com.njcn.gather.plan.pojo.po.AdPlan;
import com.njcn.gather.plan.pojo.po.AdPlanStandardDev;
import com.njcn.gather.plan.service.IAdPlanService;
import com.njcn.gather.plan.service.IAdPlanStandardDevService;
import com.njcn.gather.pojo.enums.DetectionResponseEnum; import com.njcn.gather.pojo.enums.DetectionResponseEnum;
import com.njcn.gather.system.dictionary.pojo.po.DictData; import com.njcn.gather.system.dictionary.pojo.po.DictData;
import com.njcn.gather.system.dictionary.pojo.po.DictType; import com.njcn.gather.system.dictionary.pojo.po.DictType;
@@ -58,6 +63,7 @@ public class PqStandardDevServiceImpl extends ServiceImpl<PqStandardDevMapper, P
private final IDictDataService dictDataService; private final IDictDataService dictDataService;
private final IDictTypeService dictTypeService; private final IDictTypeService dictTypeService;
private final AdPlanStandardDevMapper adPlanStandardDevMapper; private final AdPlanStandardDevMapper adPlanStandardDevMapper;
private final IAdPlanStandardDevService adPlanStandardDevService;
@Override @Override
public Page<PqStandardDev> listPqStandardDevs(PqStandardDevParam.QueryParam queryParam) { public Page<PqStandardDev> listPqStandardDevs(PqStandardDevParam.QueryParam queryParam) {
@@ -300,4 +306,46 @@ public class PqStandardDevServiceImpl extends ServiceImpl<PqStandardDevMapper, P
} }
} }
} }
@Override
public List<PqStandardDev> canBindingList() {
// 获取所有已绑定的标准设备
List<AdPlanStandardDev> boundList = adPlanStandardDevService.list();
// 获取对应检测计划
List<String> planIds = boundList.stream().map(AdPlanStandardDev::getPlanId).collect(Collectors.toList());
IAdPlanService adPlanService = SpringUtil.getBean(IAdPlanService.class);
List<AdPlan> planList = adPlanService.listByIds(planIds);
// 区分主计划和子计划
List<AdPlan> mainPlanList = planList.stream().filter(plan -> plan.getFatherPlanId() == null).collect(Collectors.toList());
List<AdPlan> subPlanList = planList.stream().filter(plan -> plan.getFatherPlanId() != null).collect(Collectors.toList());
List<String> excludePlanIds = new ArrayList<>();
List<String> excludeStandardDevIds = new ArrayList<>();
// 主计划直接排除
if (CollectionUtil.isNotEmpty(mainPlanList)) {
List<String> excludeMainPlanIds = mainPlanList.stream().filter(plan -> plan.getTestState() != 2).map(plan -> plan.getId()).collect(Collectors.toList());
excludePlanIds.addAll(excludeMainPlanIds);
}
// 子计划需要判断其主计划, 如果主计划未完成则排除
if (CollectionUtil.isNotEmpty(subPlanList)) {
List<String> fatherPlanIds = subPlanList.stream().map(plan -> plan.getFatherPlanId()).collect(Collectors.toList());
List<AdPlan> fatherPlanList = adPlanService.listByIds(fatherPlanIds);
List<String> excludeFatherPlanIds = fatherPlanList.stream()
.filter(plan -> plan.getTestState() != 2)
.map(plan -> plan.getId()).collect(Collectors.toList());
List<String> excludeSubPlanIds = subPlanList.stream()
.filter(plan -> excludeFatherPlanIds.contains(plan.getFatherPlanId()))
.map(plan -> plan.getId()).collect(Collectors.toList());
excludePlanIds.addAll(excludeSubPlanIds);
}
if (CollectionUtil.isNotEmpty(excludePlanIds)) {
List<AdPlanStandardDev> excludeBoundList = boundList.stream()
.filter(bound -> excludePlanIds.contains(bound.getPlanId()))
.collect(Collectors.toList());
excludeStandardDevIds = excludeBoundList.stream().map(AdPlanStandardDev::getStandardDevId).collect(Collectors.toList());
}
return this.lambdaQuery()
.eq(PqStandardDev::getState, DataStateEnum.ENABLE.getCode())
.notIn(CollectionUtil.isNotEmpty(excludeStandardDevIds), PqStandardDev::getId, excludeStandardDevIds)
.list();
}
} }