feat(qms): Add tablet PQC task record search

- Add tablet-specific query support for PQC task records
- Expose controller and service handling for tablet search requests
This commit is contained in:
yf001217 2026-05-26 10:05:44 +08:00
parent 09cdc953c3
commit a2817e45ed
4 changed files with 177 additions and 2 deletions

View File

@ -5,6 +5,7 @@ import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.qo.QmsPqcTaskRecordDraftQO;
import com.nflg.wms.common.pojo.qo.QmsPqcTaskRecordSearchQO;
import com.nflg.wms.common.pojo.qo.QmsPqcTaskRecordTabletSearchQO;
import com.nflg.wms.common.pojo.vo.*;
import com.nflg.qms.admin.service.QmsPqcTaskRecordControllerService;
import jakarta.annotation.Resource;
@ -12,8 +13,6 @@ import jakarta.validation.Valid;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* PQC任务 Controller
*
@ -35,6 +34,11 @@ public class QmsPqcTaskRecordController {
return ApiResult.success(pqcTaskRecordService.searchPqcTaskList(request));
}
@PostMapping("/search/tablet")
public ApiResult<PageData<QmsPqcTaskRecordTabletPageVO>> searchTablet(@Valid @RequestBody QmsPqcTaskRecordTabletSearchQO request) {
return ApiResult.success(pqcTaskRecordService.searchPqcTaskTabletList(request));
}
/**
* 2. 查询PQC任务详情PC端
*/

View File

@ -8,6 +8,7 @@ import com.nflg.wms.common.exception.NflgException;
import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.qo.QmsPqcTaskRecordDraftQO;
import com.nflg.wms.common.pojo.qo.QmsPqcTaskRecordSearchQO;
import com.nflg.wms.common.pojo.qo.QmsPqcTaskRecordTabletSearchQO;
import com.nflg.wms.common.pojo.vo.*;
import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.common.util.VUtil;
@ -243,6 +244,87 @@ public class QmsPqcTaskRecordControllerService {
return pageData;
}
public PageData<QmsPqcTaskRecordTabletPageVO> searchPqcTaskTabletList(QmsPqcTaskRecordTabletSearchQO request) {
LambdaQueryWrapper<QmsPqcTaskRecord> queryWrapper = new LambdaQueryWrapper<>();
if (Boolean.TRUE.equals(request.getIsReview())) {
queryWrapper.in(QmsPqcTaskRecord::getStatus, (short) 1, (short) 2, (short) 3)
.orderByAsc(QmsPqcTaskRecord::getStatus)
.orderByDesc(QmsPqcTaskRecord::getCreateTime);
} else {
queryWrapper.eq(QmsPqcTaskRecord::getStatus, (short) 0)
.isNotNull(QmsPqcTaskRecord::getRelatedTaskId)
.orderByDesc(QmsPqcTaskRecord::getCreateTime);
}
if (StrUtil.isNotBlank(request.getKey())) {
queryWrapper.and(wrapper -> wrapper.like(QmsPqcTaskRecord::getTaskNo, request.getKey())
.or()
.like(QmsPqcTaskRecord::getModelNo, request.getKey()));
}
Page<QmsPqcTaskRecord> page = pqcTaskRecordService.page(
new Page<>(request.getPage(), request.getPageSize()),
queryWrapper
);
List<QmsPqcTaskRecordTabletPageVO> voList = new ArrayList<>();
if (page.getRecords() != null && !page.getRecords().isEmpty()) {
Set<Long> pointIds = page.getRecords().stream()
.map(QmsPqcTaskRecord::getInspectionPointId)
.filter(Objects::nonNull)
.collect(Collectors.toSet());
Map<Long, QmsPqcInspectionPoint> pointMap = new HashMap<>();
if (!pointIds.isEmpty()) {
List<QmsPqcInspectionPoint> points = pqcInspectionPointService.listByIds(pointIds);
pointMap = points.stream()
.collect(Collectors.toMap(QmsPqcInspectionPoint::getId, p -> p));
}
Set<Long> ruleIds = pointMap.values().stream()
.map(QmsPqcInspectionPoint::getPqcRuleId)
.filter(Objects::nonNull)
.collect(Collectors.toSet());
Map<Long, Integer> ruleVersionMap = new HashMap<>();
if (!ruleIds.isEmpty()) {
List<QmsPqcInspectionRule> rules = pqcInspectionRuleService.listByIds(ruleIds);
ruleVersionMap = rules.stream()
.collect(Collectors.toMap(QmsPqcInspectionRule::getId, QmsPqcInspectionRule::getRuleVersion));
}
Map<Long, QmsPqcInspectionPoint> finalPointMap = pointMap;
Map<Long, Integer> finalRuleVersionMap = ruleVersionMap;
for (QmsPqcTaskRecord record : page.getRecords()) {
QmsPqcTaskRecordTabletPageVO vo = new QmsPqcTaskRecordTabletPageVO();
vo.setId(record.getId());
vo.setStatus(record.getStatus());
vo.setTaskNo(record.getTaskNo());
vo.setModelNo(record.getModelNo());
vo.setAufnr(record.getAufnr());
vo.setCreateTime(record.getCreateTime());
vo.setDeadline(null);
QmsPqcInspectionPoint point = finalPointMap.get(record.getInspectionPointId());
if (point != null) {
vo.setStepName(point.getStepName());
vo.setRuleVersion(finalRuleVersionMap.get(point.getPqcRuleId()));
}
voList.add(vo);
}
}
PageData<QmsPqcTaskRecordTabletPageVO> pageData = new PageData<>();
pageData.setPage((int) page.getCurrent());
pageData.setPageSize((int) page.getSize());
pageData.setTotal((int) page.getTotal());
pageData.setItems(voList);
return pageData;
}
// 其他5个功能将在后续实现...
/**

View File

@ -0,0 +1,32 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* PQC任务平板分页查询参数
*/
@Data
public class QmsPqcTaskRecordTabletSearchQO {
/**
* 是否为复检
*/
@NotNull(message = "是否为复检不能为空")
private Boolean isReview;
/**
* 关键字匹配检验单号或机型编号
*/
private String key;
/**
* 页码
*/
private Integer page = 1;
/**
* 每页条数
*/
private Integer pageSize = 10;
}

View File

@ -0,0 +1,57 @@
package com.nflg.wms.common.pojo.vo;
import lombok.Data;
import java.time.LocalDateTime;
/**
* PQC任务平板分页返回对象
*/
@Data
public class QmsPqcTaskRecordTabletPageVO {
/**
* 任务ID
*/
private Long id;
/**
* 任务状态
*/
private Short status;
/**
* 任务编号
*/
private String taskNo;
/**
* 机型编号
*/
private String modelNo;
/**
* 步装名称
*/
private String stepName;
/**
* 订单编号
*/
private String aufnr;
/**
* 检测标准版本
*/
private Integer ruleVersion;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 限期
*/
private LocalDateTime deadline;
}