feat(qms-pdi): 添加任务概要和发货前检测项详情接口
- 在QmsPdiInspectionResultsController新增summary接口,返回任务基本信息和检测项数量统计 - 在QmsPdiInspectionResultsController新增deliveryDetail接口,返回发货前检测项详情及图片URL列表 - QmsPdiInspectionResultsControllerService新增summary方法,聚合任务概要数据及统计检测项数量 - QmsPdiInspectionResultsControllerService新增deliveryDetail方法,查询发货前检测项并解析图片URL - 移除QmsPdiTaskRecordController及其Service中重复的summary和deliveryDetail相关代码 - 相关实体和服务接口注入调整,增强代码结构及职责分离
This commit is contained in:
parent
07dabfa9ad
commit
15149edb4d
|
|
@ -13,9 +13,11 @@ import com.nflg.wms.repository.entity.QmsPdiInspectionResults;
|
|||
import com.nflg.wms.common.pojo.vo.QmsPdiInspectionResultsPageVO;
|
||||
import com.nflg.wms.common.pojo.vo.QmsPdiTaskListVO;
|
||||
import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordDetailVO;
|
||||
import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordSummaryVO;
|
||||
import com.nflg.wms.starter.BaseController;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
|
|
@ -83,4 +85,22 @@ public class QmsPdiInspectionResultsController extends BaseController {
|
|||
@Valid @RequestBody QmsPdiTaskRecordStatusItemDetailQO request) {
|
||||
return ApiResult.success(inspectionResultsControllerService.detail(request));
|
||||
}
|
||||
|
||||
/**
|
||||
* 任务概要:基本信息 + 各类检测项数量统计
|
||||
*/
|
||||
@GetMapping("summary")
|
||||
public ApiResult<QmsPdiTaskRecordSummaryVO> summary(
|
||||
@NotNull(message = "任务ID不能为空") @RequestParam Long id) {
|
||||
return ApiResult.success(inspectionResultsControllerService.summary(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 发货前检测项详情(inspectionItemType=2),图片直接返回URL列表
|
||||
*/
|
||||
@GetMapping("deliveryDetail")
|
||||
public ApiResult<List<QmsPdiTaskRecordDetailVO.DeliveryItemDetailVO>> deliveryDetail(
|
||||
@NotNull(message = "任务ID不能为空") @RequestParam Long id) {
|
||||
return ApiResult.success(inspectionResultsControllerService.deliveryDetail(id));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ import com.nflg.wms.common.pojo.qo.QmsPdiTaskRecordTransferQO;
|
|||
import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordDefectPageVO;
|
||||
import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordDetailVO;
|
||||
import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordPageVO;
|
||||
import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordSummaryVO;
|
||||
import com.nflg.wms.starter.BaseController;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.Valid;
|
||||
|
|
@ -82,22 +81,4 @@ public class QmsPdiTaskRecordController extends BaseController {
|
|||
@NotNull(message = "检测记录ID不能为空") @RequestParam Long id) {
|
||||
return ApiResult.success(taskRecordControllerService.getInspectionImages(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 任务概要:基本信息 + 各类检测项数量统计
|
||||
*/
|
||||
@GetMapping("summary")
|
||||
public ApiResult<QmsPdiTaskRecordSummaryVO> summary(
|
||||
@NotNull(message = "任务ID不能为空") @RequestParam Long id) {
|
||||
return ApiResult.success(taskRecordControllerService.summary(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 发货前检测项详情(inspectionItemType=2),图片直接返回URL列表
|
||||
*/
|
||||
@GetMapping("deliveryDetail")
|
||||
public ApiResult<List<QmsPdiTaskRecordDetailVO.DeliveryItemDetailVO>> deliveryDetail(
|
||||
@NotNull(message = "任务ID不能为空") @RequestParam Long id) {
|
||||
return ApiResult.success(taskRecordControllerService.deliveryDetail(id));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,9 +13,14 @@ import com.nflg.wms.common.pojo.qo.QmsPdiTaskRecordStatusItemDetailQO;
|
|||
import com.nflg.wms.common.pojo.vo.QmsPdiInspectionResultsPageVO;
|
||||
import com.nflg.wms.common.pojo.vo.QmsPdiTaskListVO;
|
||||
import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordDetailVO;
|
||||
import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordSummaryVO;
|
||||
import com.nflg.wms.common.util.UserUtil;
|
||||
import com.nflg.wms.repository.entity.QmsPdiDetectionRules;
|
||||
import com.nflg.wms.repository.entity.QmsPdiDetectionRulesDeliveryItem;
|
||||
import com.nflg.wms.repository.entity.QmsPdiInspectionResults;
|
||||
import com.nflg.wms.repository.entity.QmsPdiTaskRecord;
|
||||
import com.nflg.wms.repository.service.IQmsPdiDetectionRulesDeliveryItemService;
|
||||
import com.nflg.wms.repository.service.IQmsPdiDetectionRulesService;
|
||||
import com.nflg.wms.repository.service.IQmsPdiInspectionResultsService;
|
||||
import com.nflg.wms.repository.service.IQmsPdiTaskRecordService;
|
||||
import jakarta.annotation.Resource;
|
||||
|
|
@ -23,9 +28,12 @@ import org.springframework.stereotype.Service;
|
|||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
|
|
@ -40,6 +48,12 @@ public class QmsPdiInspectionResultsControllerService {
|
|||
@Resource
|
||||
private IQmsPdiTaskRecordService taskRecordService;
|
||||
|
||||
@Resource
|
||||
private IQmsPdiDetectionRulesService detectionRulesService;
|
||||
|
||||
@Resource
|
||||
private IQmsPdiDetectionRulesDeliveryItemService deliveryItemService;
|
||||
|
||||
@Resource
|
||||
private QmsPdiTaskRecordControllerService taskRecordControllerService;
|
||||
|
||||
|
|
@ -267,4 +281,110 @@ public class QmsPdiInspectionResultsControllerService {
|
|||
public List<QmsPdiTaskRecordDetailVO.StatusItemVO> detail(QmsPdiTaskRecordStatusItemDetailQO request) {
|
||||
return taskRecordControllerService.statusItemList(request.getId(), request.getInspectionItemType());
|
||||
}
|
||||
|
||||
// ========================= 任务概要 =========================
|
||||
|
||||
/**
|
||||
* 查询任务概要信息:基本信息 + 各类检测项数量统计
|
||||
*/
|
||||
public QmsPdiTaskRecordSummaryVO summary(Long taskId) {
|
||||
QmsPdiTaskRecord task = taskRecordService.getById(taskId);
|
||||
if (task == null) {
|
||||
throw new NflgException(STATE.BusinessError, "任务记录不存在");
|
||||
}
|
||||
|
||||
QmsPdiTaskRecordSummaryVO vo = new QmsPdiTaskRecordSummaryVO();
|
||||
vo.setTaskNo(task.getTaskNo());
|
||||
vo.setDeviceNo(task.getDeviceNo());
|
||||
vo.setOrderNo(task.getOrderNo());
|
||||
vo.setRequiredCompletionTime(task.getRequiredCompletionTime());
|
||||
|
||||
// 查询检测规则获取机型编号和检测版本
|
||||
if (task.getDetectionRulesId() != null) {
|
||||
QmsPdiDetectionRules rules = detectionRulesService.getById(task.getDetectionRulesId());
|
||||
if (rules != null) {
|
||||
vo.setMachineNo(rules.getMachineNo());
|
||||
vo.setInspectionVersion(rules.getInspectionVersion());
|
||||
}
|
||||
}
|
||||
|
||||
// 从 qms_pdi_inspection_results 按 inspection_item_type 分组统计
|
||||
List<QmsPdiInspectionResults> results = inspectionResultsService.lambdaQuery()
|
||||
.eq(QmsPdiInspectionResults::getTaskId, taskId)
|
||||
.list();
|
||||
|
||||
int staticCount = 0;
|
||||
int dynamicCount = 0;
|
||||
int specialCount = 0;
|
||||
for (QmsPdiInspectionResults r : results) {
|
||||
if (r.getInspectionItemType() == null) continue;
|
||||
switch (r.getInspectionItemType()) {
|
||||
case 0 -> staticCount++;
|
||||
case 1 -> dynamicCount++;
|
||||
case 3 -> specialCount++;
|
||||
}
|
||||
}
|
||||
vo.setStaticItemCount(staticCount);
|
||||
vo.setDynamicItemCount(dynamicCount);
|
||||
vo.setSpecialItemCount(specialCount);
|
||||
|
||||
return vo;
|
||||
}
|
||||
|
||||
// ========================= 发货前检测项详情 =========================
|
||||
|
||||
/**
|
||||
* 查询发货前检测项(inspectionItemType=2),图片直接返回URL列表
|
||||
*/
|
||||
public List<QmsPdiTaskRecordDetailVO.DeliveryItemDetailVO> deliveryDetail(Long taskId) {
|
||||
// 查询该任务下所有 type=2 的记录
|
||||
List<QmsPdiInspectionResults> results = inspectionResultsService.lambdaQuery()
|
||||
.eq(QmsPdiInspectionResults::getTaskId, taskId)
|
||||
.eq(QmsPdiInspectionResults::getInspectionItemType, 2)
|
||||
.list();
|
||||
|
||||
if (results.isEmpty()) {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
// 批量查 delivery_item 获取 checklist
|
||||
Set<Long> deliveryItemIds = results.stream()
|
||||
.map(QmsPdiInspectionResults::getInspectionItemId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
Map<Long, QmsPdiDetectionRulesDeliveryItem> deliveryItemMap = Map.of();
|
||||
if (!deliveryItemIds.isEmpty()) {
|
||||
List<QmsPdiDetectionRulesDeliveryItem> deliveryItems = deliveryItemService.listByIds(deliveryItemIds);
|
||||
deliveryItemMap = deliveryItems.stream()
|
||||
.collect(Collectors.toMap(QmsPdiDetectionRulesDeliveryItem::getId, di -> di, (a, b) -> a));
|
||||
}
|
||||
|
||||
// 构建返回列表
|
||||
Map<Long, QmsPdiDetectionRulesDeliveryItem> finalMap = deliveryItemMap;
|
||||
List<QmsPdiTaskRecordDetailVO.DeliveryItemDetailVO> detailList = new ArrayList<>();
|
||||
for (QmsPdiInspectionResults r : results) {
|
||||
QmsPdiTaskRecordDetailVO.DeliveryItemDetailVO vo = new QmsPdiTaskRecordDetailVO.DeliveryItemDetailVO();
|
||||
vo.setDeliveryItemId(r.getInspectionItemId());
|
||||
|
||||
// checklist 从 delivery_item 获取
|
||||
QmsPdiDetectionRulesDeliveryItem di = finalMap.get(r.getInspectionItemId());
|
||||
if (di != null) {
|
||||
vo.setChecklist(di.getChecklist());
|
||||
}
|
||||
|
||||
// inspectionItemImage 按逗号拆分,直接返回URL列表
|
||||
String imageStr = r.getInspectionItemImage();
|
||||
if (imageStr != null && !imageStr.isEmpty()) {
|
||||
vo.setInspectionItemImage(Arrays.stream(imageStr.split(","))
|
||||
.map(String::trim)
|
||||
.filter(s -> !s.isEmpty())
|
||||
.collect(Collectors.toList()));
|
||||
} else {
|
||||
vo.setInspectionItemImage(List.of());
|
||||
}
|
||||
|
||||
detailList.add(vo);
|
||||
}
|
||||
return detailList;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -322,110 +322,4 @@ public class QmsPdiTaskRecordControllerService {
|
|||
}
|
||||
return convertImageIdsToVO(result.getInspectionItemImage());
|
||||
}
|
||||
|
||||
// ========================= 发货前检测项详情 =========================
|
||||
|
||||
/**
|
||||
* 查询发货前检测项(inspectionItemType=2),图片直接返回URL列表
|
||||
*/
|
||||
public List<QmsPdiTaskRecordDetailVO.DeliveryItemDetailVO> deliveryDetail(Long taskId) {
|
||||
// 查询该任务下所有 type=2 的记录
|
||||
List<QmsPdiInspectionResults> results = inspectionResultsService.lambdaQuery()
|
||||
.eq(QmsPdiInspectionResults::getTaskId, taskId)
|
||||
.eq(QmsPdiInspectionResults::getInspectionItemType, 2)
|
||||
.list();
|
||||
|
||||
if (results.isEmpty()) {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
// 批量查 delivery_item 获取 checklist
|
||||
Set<Long> deliveryItemIds = results.stream()
|
||||
.map(QmsPdiInspectionResults::getInspectionItemId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
Map<Long, QmsPdiDetectionRulesDeliveryItem> deliveryItemMap = Map.of();
|
||||
if (!deliveryItemIds.isEmpty()) {
|
||||
List<QmsPdiDetectionRulesDeliveryItem> deliveryItems = deliveryItemService.listByIds(deliveryItemIds);
|
||||
deliveryItemMap = deliveryItems.stream()
|
||||
.collect(Collectors.toMap(QmsPdiDetectionRulesDeliveryItem::getId, di -> di, (a, b) -> a));
|
||||
}
|
||||
|
||||
// 构建返回列表
|
||||
Map<Long, QmsPdiDetectionRulesDeliveryItem> finalMap = deliveryItemMap;
|
||||
List<QmsPdiTaskRecordDetailVO.DeliveryItemDetailVO> detailList = new ArrayList<>();
|
||||
for (QmsPdiInspectionResults r : results) {
|
||||
QmsPdiTaskRecordDetailVO.DeliveryItemDetailVO vo = new QmsPdiTaskRecordDetailVO.DeliveryItemDetailVO();
|
||||
vo.setDeliveryItemId(r.getInspectionItemId());
|
||||
|
||||
// checklist 从 delivery_item 获取
|
||||
QmsPdiDetectionRulesDeliveryItem di = finalMap.get(r.getInspectionItemId());
|
||||
if (di != null) {
|
||||
vo.setChecklist(di.getChecklist());
|
||||
}
|
||||
|
||||
// inspectionItemImage 按逗号拆分,直接返回URL列表
|
||||
String imageStr = r.getInspectionItemImage();
|
||||
if (imageStr != null && !imageStr.isEmpty()) {
|
||||
vo.setInspectionItemImage(Arrays.stream(imageStr.split(","))
|
||||
.map(String::trim)
|
||||
.filter(s -> !s.isEmpty())
|
||||
.collect(Collectors.toList()));
|
||||
} else {
|
||||
vo.setInspectionItemImage(List.of());
|
||||
}
|
||||
|
||||
detailList.add(vo);
|
||||
}
|
||||
return detailList;
|
||||
}
|
||||
|
||||
// ========================= 任务概要 =========================
|
||||
|
||||
/**
|
||||
* 查询任务概要信息:基本信息 + 各类检测项数量统计
|
||||
*/
|
||||
public QmsPdiTaskRecordSummaryVO summary(Long taskId) {
|
||||
QmsPdiTaskRecord task = taskRecordService.getById(taskId);
|
||||
if (task == null) {
|
||||
throw new NflgException(STATE.BusinessError, "任务记录不存在");
|
||||
}
|
||||
|
||||
QmsPdiTaskRecordSummaryVO vo = new QmsPdiTaskRecordSummaryVO();
|
||||
vo.setTaskNo(task.getTaskNo());
|
||||
vo.setDeviceNo(task.getDeviceNo());
|
||||
vo.setOrderNo(task.getOrderNo());
|
||||
vo.setRequiredCompletionTime(task.getRequiredCompletionTime());
|
||||
|
||||
// 查询检测规则获取机型编号和检测版本
|
||||
if (task.getDetectionRulesId() != null) {
|
||||
QmsPdiDetectionRules rules = detectionRulesService.getById(task.getDetectionRulesId());
|
||||
if (rules != null) {
|
||||
vo.setMachineNo(rules.getMachineNo());
|
||||
vo.setInspectionVersion(rules.getInspectionVersion());
|
||||
}
|
||||
}
|
||||
|
||||
// 从 qms_pdi_inspection_results 按 inspection_item_type 分组统计
|
||||
List<QmsPdiInspectionResults> results = inspectionResultsService.lambdaQuery()
|
||||
.eq(QmsPdiInspectionResults::getTaskId, taskId)
|
||||
.list();
|
||||
|
||||
int staticCount = 0;
|
||||
int dynamicCount = 0;
|
||||
int specialCount = 0;
|
||||
for (QmsPdiInspectionResults r : results) {
|
||||
if (r.getInspectionItemType() == null) continue;
|
||||
switch (r.getInspectionItemType()) {
|
||||
case 0 -> staticCount++;
|
||||
case 1 -> dynamicCount++;
|
||||
case 3 -> specialCount++;
|
||||
}
|
||||
}
|
||||
vo.setStaticItemCount(staticCount);
|
||||
vo.setDynamicItemCount(dynamicCount);
|
||||
vo.setSpecialItemCount(specialCount);
|
||||
|
||||
return vo;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue