UPDATE: 1、子计划管理,筛选条件改成搜索、设备厂家、是否分配;

2、重复导入子计划时,增量被检设备并删除未检设备。
This commit is contained in:
贾同学
2025-09-25 08:59:36 +08:00
parent ac1c5fd43e
commit 2dcf90d6c7
5 changed files with 50 additions and 15 deletions

View File

@@ -6,14 +6,12 @@ import com.njcn.gather.pojo.constant.DetectionValidMessage;
import com.njcn.web.pojo.annotation.DateTimeStrValid;
import com.njcn.web.pojo.param.BaseParam;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Range;
import javax.validation.Valid;
import javax.validation.constraints.*;
import java.time.LocalDate;
import java.util.List;
/**
@@ -137,6 +135,7 @@ public class PqDevParam {
@ApiModelProperty("是否为导入设备")
private Integer importFlag;
/**
* 更新操作实体
*/
@@ -197,6 +196,12 @@ public class PqDevParam {
@ApiModelProperty("是否分配")
private Integer assign;
@ApiModelProperty("关键词")
private String keywords;
@ApiModelProperty("主计划ID")
private String planId;
@ApiModelProperty("是否分配子计划")
private Integer assignSub;
}
@Data

View File

@@ -396,12 +396,21 @@ public class PqDevServiceImpl extends ServiceImpl<PqDevMapper, PqDev> implements
.in(CollectionUtil.isNotEmpty(queryParam.getPlanIdList()), "pq_dev.Plan_Id", queryParam.getPlanIdList())
.isNotNull(DataStateEnum.ENABLE.getCode().equals(queryParam.getAssign()), "pq_dev.Plan_Id")
.isNull(DataStateEnum.DELETED.getCode().equals(queryParam.getAssign()), "pq_dev.Plan_Id")
.eq(DataStateEnum.DELETED.getCode().equals(queryParam.getAssignSub()), "pq_dev.Plan_Id", queryParam.getPlanId())
.ne(DataStateEnum.ENABLE.getCode().equals(queryParam.getAssignSub()), "pq_dev.Plan_Id", queryParam.getPlanId())
.between(ObjectUtil.isAllNotEmpty(queryParam.getSearchBeginTime(), queryParam.getSearchEndTime()), "pq_dev.Create_Date", queryParam.getSearchBeginTime(), queryParam.getSearchEndTime());
if (StrUtil.isNotBlank(queryParam.getRegion())) {
queryWrapper.and(w -> w.like(StrUtil.isNotBlank(queryParam.getRegion()), "pq_dev.City_Name", queryParam.getRegion())
.or().like(StrUtil.isNotBlank(queryParam.getRegion()), "pq_dev.Gd_Name", queryParam.getRegion())
.or().like(StrUtil.isNotBlank(queryParam.getRegion()), "pq_dev.Sub_Name", queryParam.getRegion()));
}
if (StrUtil.isNotBlank(queryParam.getKeywords())) {
queryWrapper.and(w -> w.like(StrUtil.isNotBlank(queryParam.getKeywords()), "pq_dev.City_Name", queryParam.getKeywords())
.or().like(StrUtil.isNotBlank(queryParam.getKeywords()), "pq_dev.Gd_Name", queryParam.getKeywords())
.or().like(StrUtil.isNotBlank(queryParam.getKeywords()), "pq_dev.Sub_Name", queryParam.getKeywords())
.or().like(StrUtil.isNotBlank(queryParam.getKeywords()), "pq_dev.name", queryParam.getKeywords())
);
}
//排序
if (ObjectUtil.isAllNotEmpty(queryParam.getSortBy(), queryParam.getOrderBy())) {
queryWrapper.orderBy(true, queryParam.getOrderBy().equals(DbConstant.ASC), StrUtil.toUnderlineCase(queryParam.getSortBy()));

View File

@@ -250,6 +250,7 @@ public class AdPlanController extends BaseController {
List<String> planIdList = planList.stream().map(AdPlan::getId).collect(Collectors.toList());
param.getPlanIdList().addAll(planIdList);
}
param.setPlanId(plan.getId());
Page<PqDevVO> pqDevVOPage = pqDevService.listPqDevs(param);
List<AdPlan> planList = adPlanService.listByIds(param.getPlanIdList());

View File

@@ -1777,7 +1777,12 @@ public class AdPlanServiceImpl extends ServiceImpl<AdPlanMapper, AdPlan> impleme
// 更新检测计划信息
plan.setImportFlag(1);
plan.setFatherPlanId(CommonEnum.FATHER_ID.getValue());
saveOrUpdate(plan);
AdPlan oldPlan = this.getById(plan.getId());
// 不存在,则入库
if (oldPlan == null) {
this.save(plan);
}
List<PqDev> devList = subPlanMetaDataVO.getDevList();
List<PqStandardDev> standardDevList = subPlanMetaDataVO.getStandardDevList();
@@ -1789,8 +1794,14 @@ public class AdPlanServiceImpl extends ServiceImpl<AdPlanMapper, AdPlan> impleme
// 批量更新被检设备信息
// 设置导入标志为 1
devList.forEach(dev -> dev.setImportFlag(1));
pqDevService.saveOrUpdateBatch(devList);
devList.forEach(dev -> {
// 排除已存在的,再入库
List<String> devIds = devList.stream().map(PqDev::getId).collect(Collectors.toList());
List<PqDevSub> pqDevSubs = pqDevSubService.lambdaQuery().in(PqDevSub::getDevId, devIds).list();
List<String> hadDevIds = pqDevSubs.stream().map(PqDevSub::getDevId).collect(Collectors.toList());
// 新增被检设备
List<PqDev> saveDevList = devList.stream().filter(dev -> !hadDevIds.contains(dev.getId())).collect(Collectors.toList());
pqDevService.saveBatch(saveDevList);
saveDevList.forEach(dev -> {
pqMonitorService.saveOrUpdateBatch(dev.getMonitorList());
// 新增时默认设置
PqDevSub pqDevSub = new PqDevSub();
@@ -1800,17 +1811,21 @@ public class AdPlanServiceImpl extends ServiceImpl<AdPlanMapper, AdPlan> impleme
pqDevSub.setCheckState(CheckStateEnum.UNCHECKED.getValue());
pqDevSub.setReportState(DevReportStateEnum.UNCHECKED.getValue());
pqDevSub.setCheckResult(CheckResultEnum.UNCHECKED.getValue());
Integer count = pqDevSubService.lambdaQuery().eq(PqDevSub::getDevId, dev.getId()).count();
if (count.intValue() == 0) {
pqDevSubService.save(pqDevSub);
} else {
pqDevSubService.update(pqDevSub, new LambdaUpdateWrapper<PqDevSub>().eq(PqDevSub::getDevId, dev.getId()));
}
pqDevSubService.save(pqDevSub);
});
List<String> devIds = devList.stream().map(PqDev::getId).collect(Collectors.toList());
// 守时检测
pqDevService.updatePqDevTimeCheckResult(devIds, TimeCheckResultEnum.UNKNOWN);
// 移除未检测的被检设备
List<String> uncheckedDevIds = pqDevSubs.stream()
.filter(pqDevSub -> pqDevSub.getCheckState().equals(CheckStateEnum.UNCHECKED.getValue()))
.map(PqDevSub::getDevId)
.collect(Collectors.toList());
List<String> removeDevIds = uncheckedDevIds.stream()
.filter(devId -> !devIds.contains(devId))
.collect(Collectors.toList());
if (CollUtil.isNotEmpty(removeDevIds)) {
pqDevService.removeByIds(removeDevIds);
pqDevSubService.remove(new LambdaQueryWrapper<PqDevSub>().in(PqDevSub::getDevId, removeDevIds));
}
// 批量更新标准设备信息
pqStandardDevService.saveOrUpdateBatch(standardDevList);
List<String> standardDevIds = standardDevList.stream().map(PqStandardDev::getId).collect(Collectors.toList());

View File

@@ -1616,7 +1616,12 @@ public class ResultServiceImpl implements IResultService {
List<PqMonitor> pqMonitorList = pqMonitorService.lambdaQuery().eq(PqMonitor::getDevId, devId).isNotNull(PqMonitor::getResultType).list();
List<MonitorResultVO> list = new ArrayList<>();
if (CollUtil.isEmpty(pqMonitorList)) {
return list;
}
MonitorResultVO result;
// 根据通道号排序
pqMonitorList.sort(Comparator.comparing(PqMonitor::getNum));
for (PqMonitor pqMonitor : pqMonitorList) {
result = new MonitorResultVO();
result.setMonitorId(pqMonitor.getDevId() + CnSocketUtil.SPLIT_TAG + pqMonitor.getNum());