pdi功能工单部分新增,分页查询部分修改

This commit is contained in:
funny 2026-04-27 15:10:47 +08:00
parent e00ce37f4b
commit 097a61ac21
14 changed files with 252 additions and 80 deletions

View File

@ -0,0 +1,19 @@
package com.nflg.qms.admin.controller;
import com.nflg.qms.admin.service.QmsIssueTicketControllerService;
import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.starter.BaseController;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 质量问题工单管理
*/
@RestController
@RequestMapping("/issueTicket")
public class QmsIssueTicketController extends BaseController {
@Resource
private QmsIssueTicketControllerService issueTicketControllerService;
}

View File

@ -0,0 +1,19 @@
package com.nflg.qms.admin.controller;
import com.nflg.qms.admin.service.QmsIssueTicketProcessControllerService;
import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.starter.BaseController;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 质量问题工单处理管理
*/
@RestController
@RequestMapping("/issueTicketProcess")
public class QmsIssueTicketProcessController extends BaseController {
@Resource
private QmsIssueTicketProcessControllerService issueTicketProcessControllerService;
}

View File

@ -0,0 +1,19 @@
package com.nflg.qms.admin.controller;
import com.nflg.qms.admin.service.QmsIssueTicketProcessMeasureControllerService;
import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.starter.BaseController;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 质量问题工单处理解决措施管理
*/
@RestController
@RequestMapping("/issueTicketProcessMeasure")
public class QmsIssueTicketProcessMeasureController extends BaseController {
@Resource
private QmsIssueTicketProcessMeasureControllerService issueTicketProcessMeasureControllerService;
}

View File

@ -5,6 +5,7 @@ import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.qo.QmsPdiSortBatchUpdateQO; import com.nflg.wms.common.pojo.qo.QmsPdiSortBatchUpdateQO;
import com.nflg.wms.common.pojo.qo.QmsPdiStatusItemAddQO; import com.nflg.wms.common.pojo.qo.QmsPdiStatusItemAddQO;
import com.nflg.wms.common.pojo.qo.QmsPdiStatusItemExportQO; import com.nflg.wms.common.pojo.qo.QmsPdiStatusItemExportQO;
import com.nflg.wms.common.pojo.qo.QmsPdiStatusItemSearchQO;
import com.nflg.wms.common.pojo.qo.QmsPdiStatusItemUpdateQO; import com.nflg.wms.common.pojo.qo.QmsPdiStatusItemUpdateQO;
import com.nflg.wms.common.pojo.vo.QmsPdiStatusItemGroupVO; import com.nflg.wms.common.pojo.vo.QmsPdiStatusItemGroupVO;
import com.nflg.wms.common.util.EecExcelUtil; import com.nflg.wms.common.util.EecExcelUtil;
@ -92,12 +93,11 @@ public class QmsPdiStatusItemController extends BaseController {
} }
/** /**
* 分页查询按状态分组返回 * 分页查询按状态分组各自独立分页返回
*/ */
@GetMapping("/search") @GetMapping("/search")
public ApiResult<QmsPdiStatusItemGroupVO> search( public ApiResult<QmsPdiStatusItemGroupVO> search(@Valid QmsPdiStatusItemSearchQO request) {
@NotNull(message = "PDI检测规则ID不能为空") @RequestParam Long detectionRulesId) { return ApiResult.success(statusItemControllerService.search(request));
return ApiResult.success(statusItemControllerService.search(detectionRulesId));
} }
/** /**

View File

@ -52,7 +52,7 @@ public class QmsPdiTaskRecordController extends BaseController {
*/ */
@PostMapping("detail") @PostMapping("detail")
public ApiResult<QmsPdiTaskRecordDetailVO> detail(@Valid @RequestBody QmsPdiTaskRecordDetailQO request) { public ApiResult<QmsPdiTaskRecordDetailVO> detail(@Valid @RequestBody QmsPdiTaskRecordDetailQO request) {
return ApiResult.success(taskRecordControllerService.detail(request.getId(), request.getPage(), request.getSize())); return ApiResult.success(taskRecordControllerService.detail(request));
} }
/** /**

View File

@ -0,0 +1,15 @@
package com.nflg.qms.admin.service;
import com.nflg.wms.repository.service.IQmsIssueTicketService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
/**
* 质量问题工单 ControllerService
*/
@Service
public class QmsIssueTicketControllerService {
@Resource
private IQmsIssueTicketService issueTicketService;
}

View File

@ -0,0 +1,15 @@
package com.nflg.qms.admin.service;
import com.nflg.wms.repository.service.IQmsIssueTicketProcessService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
/**
* 质量问题工单处理 ControllerService
*/
@Service
public class QmsIssueTicketProcessControllerService {
@Resource
private IQmsIssueTicketProcessService issueTicketProcessService;
}

View File

@ -0,0 +1,15 @@
package com.nflg.qms.admin.service;
import com.nflg.wms.repository.service.IQmsIssueTicketProcessMeasureService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
/**
* 质量问题工单处理解决措施 ControllerService
*/
@Service
public class QmsIssueTicketProcessMeasureControllerService {
@Resource
private IQmsIssueTicketProcessMeasureService issueTicketProcessMeasureService;
}

View File

@ -2,12 +2,15 @@ package com.nflg.qms.admin.service;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nflg.wms.common.exception.NflgException; import com.nflg.wms.common.exception.NflgException;
import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.constant.STATE;
import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.dto.QmsPdiStatusItemExportDTO; import com.nflg.wms.common.pojo.dto.QmsPdiStatusItemExportDTO;
import com.nflg.wms.common.pojo.dto.QmsPdiStatusItemImportDTO; import com.nflg.wms.common.pojo.dto.QmsPdiStatusItemImportDTO;
import com.nflg.wms.common.pojo.qo.QmsPdiSortBatchUpdateQO; import com.nflg.wms.common.pojo.qo.QmsPdiSortBatchUpdateQO;
import com.nflg.wms.common.pojo.qo.QmsPdiStatusItemAddQO; import com.nflg.wms.common.pojo.qo.QmsPdiStatusItemAddQO;
import com.nflg.wms.common.pojo.qo.QmsPdiStatusItemSearchQO;
import com.nflg.wms.common.pojo.qo.QmsPdiStatusItemUpdateQO; import com.nflg.wms.common.pojo.qo.QmsPdiStatusItemUpdateQO;
import com.nflg.wms.common.pojo.vo.QmsPdiStatusItemGroupVO; import com.nflg.wms.common.pojo.vo.QmsPdiStatusItemGroupVO;
import com.nflg.wms.common.util.EecExcelUtil; import com.nflg.wms.common.util.EecExcelUtil;
@ -212,38 +215,45 @@ public class QmsPdiStatusItemControllerService {
// ========================= 分页查询 ========================= // ========================= 分页查询 =========================
/** /**
* 查询PDI检测项按状态分组返回 * 查询PDI检测项按状态分组各自独立分页返回
*
* @param detectionRulesId PDI检测规则ID必传
*/ */
public QmsPdiStatusItemGroupVO search(Long detectionRulesId) { public QmsPdiStatusItemGroupVO search(QmsPdiStatusItemSearchQO request) {
List<QmsPdiDetectionRulesStatusItem> all = statusItemService.lambdaQuery()
.eq(QmsPdiDetectionRulesStatusItem::getDetectionRulesId, detectionRulesId)
.orderByAsc(QmsPdiDetectionRulesStatusItem::getSort)
.list();
List<QmsPdiStatusItemGroupVO.QmsPdiStatusItemVO> staticList = all.stream()
.filter(item -> Objects.equals(item.getStatus(), 0))
.map(this::toVO)
.collect(Collectors.toList());
List<QmsPdiStatusItemGroupVO.QmsPdiStatusItemVO> dynamicList = all.stream()
.filter(item -> Objects.equals(item.getStatus(), 1))
.map(this::toVO)
.collect(Collectors.toList());
List<QmsPdiStatusItemGroupVO.QmsPdiStatusItemVO> specialList = all.stream()
.filter(item -> Objects.equals(item.getStatus(), 2))
.map(this::toVO)
.collect(Collectors.toList());
QmsPdiStatusItemGroupVO vo = new QmsPdiStatusItemGroupVO(); QmsPdiStatusItemGroupVO vo = new QmsPdiStatusItemGroupVO();
vo.setStaticItems(staticList); // 静态检测项status=0
vo.setDynamicItems(dynamicList); vo.setStaticItems(buildStatusItemPage(request.getDetectionRulesId(), 0,
vo.setSpecialItems(specialList); request.getStaticPage(), request.getStaticSize()));
// 动态检测项status=1
vo.setDynamicItems(buildStatusItemPage(request.getDetectionRulesId(), 1,
request.getDynamicPage(), request.getDynamicSize()));
// 特殊检测项status=2
vo.setSpecialItems(buildStatusItemPage(request.getDetectionRulesId(), 2,
request.getSpecialPage(), request.getSpecialSize()));
return vo; return vo;
} }
/**
* 按状态构建检测项分页数据
*/
private PageData<QmsPdiStatusItemGroupVO.QmsPdiStatusItemVO> buildStatusItemPage(
Long detectionRulesId, int status, int pageNum, int pageSize) {
Page<QmsPdiDetectionRulesStatusItem> page = statusItemService.lambdaQuery()
.eq(QmsPdiDetectionRulesStatusItem::getDetectionRulesId, detectionRulesId)
.eq(QmsPdiDetectionRulesStatusItem::getStatus, status)
.orderByAsc(QmsPdiDetectionRulesStatusItem::getSort)
.page(new Page<>(pageNum, pageSize));
List<QmsPdiStatusItemGroupVO.QmsPdiStatusItemVO> voList = page.getRecords().stream()
.map(this::toVO)
.collect(Collectors.toList());
PageData<QmsPdiStatusItemGroupVO.QmsPdiStatusItemVO> pd = new PageData<>();
pd.setPage(pageNum);
pd.setPageSize(pageSize);
pd.setTotal((int) page.getTotal());
pd.setItems(voList);
return pd;
}
private QmsPdiStatusItemGroupVO.QmsPdiStatusItemVO toVO(QmsPdiDetectionRulesStatusItem item) { private QmsPdiStatusItemGroupVO.QmsPdiStatusItemVO toVO(QmsPdiDetectionRulesStatusItem item) {
QmsPdiStatusItemGroupVO.QmsPdiStatusItemVO vo = new QmsPdiStatusItemGroupVO.QmsPdiStatusItemVO(); QmsPdiStatusItemGroupVO.QmsPdiStatusItemVO vo = new QmsPdiStatusItemGroupVO.QmsPdiStatusItemVO();
vo.setId(item.getId()); vo.setId(item.getId());

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.constant.STATE;
import com.nflg.wms.common.exception.NflgException; import com.nflg.wms.common.exception.NflgException;
import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.qo.QmsPdiTaskRecordDetailQO;
import com.nflg.wms.common.pojo.qo.QmsPdiTaskRecordSearchQO; import com.nflg.wms.common.pojo.qo.QmsPdiTaskRecordSearchQO;
import com.nflg.wms.common.pojo.qo.QmsPdiTaskRecordTransferQO; import com.nflg.wms.common.pojo.qo.QmsPdiTaskRecordTransferQO;
import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordDetailVO; import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordDetailVO;
@ -100,10 +101,10 @@ public class QmsPdiTaskRecordControllerService {
* 根据ID查询检测任务详情 * 根据ID查询检测任务详情
* - 检验结果统一所有检测项均有结果 "合格"否则为空 * - 检验结果统一所有检测项均有结果 "合格"否则为空
* - 检验员检测规则.质检负责人 user.username * - 检验员检测规则.质检负责人 user.username
* - 各类型检测项分页返回 * - 静态/动态/特殊各自独立分页返回装车前不分页
*/ */
public QmsPdiTaskRecordDetailVO detail(Long id, Integer page, Integer size) { public QmsPdiTaskRecordDetailVO detail(QmsPdiTaskRecordDetailQO request) {
QmsPdiTaskRecord record = taskRecordService.getById(id); QmsPdiTaskRecord record = taskRecordService.getById(request.getId());
if (Objects.isNull(record)) { if (Objects.isNull(record)) {
throw new NflgException(STATE.BusinessError, "检测任务记录不存在"); throw new NflgException(STATE.BusinessError, "检测任务记录不存在");
} }
@ -122,10 +123,10 @@ public class QmsPdiTaskRecordControllerService {
// 统一检验结果所有检测项均有结果 "合格"否则为空 // 统一检验结果所有检测项均有结果 "合格"否则为空
long totalResults = inspectionResultsService.lambdaQuery() long totalResults = inspectionResultsService.lambdaQuery()
.eq(QmsPdiInspectionResults::getTaskId, id) .eq(QmsPdiInspectionResults::getTaskId, request.getId())
.count(); .count();
long filledResults = inspectionResultsService.lambdaQuery() long filledResults = inspectionResultsService.lambdaQuery()
.eq(QmsPdiInspectionResults::getTaskId, id) .eq(QmsPdiInspectionResults::getTaskId, request.getId())
.isNotNull(QmsPdiInspectionResults::getInspectionItemResults) .isNotNull(QmsPdiInspectionResults::getInspectionItemResults)
.count(); .count();
String inspectionResult = (totalResults > 0 && filledResults == totalResults) ? "合格" : null; String inspectionResult = (totalResults > 0 && filledResults == totalResults) ? "合格" : null;
@ -141,21 +142,20 @@ public class QmsPdiTaskRecordControllerService {
vo.setInspectorName(inspectorName); vo.setInspectorName(inspectorName);
vo.setDetectionCompletionTime(record.getDetectionCompletionTime()); vo.setDetectionCompletionTime(record.getDetectionCompletionTime());
// 分页参数 // 静态检测项type=0独立分页
int pageNum = page != null ? page : 1; vo.setStaticItems(buildStatusItemPage(record.getId(), 0,
int pageSize = size != null ? size : 20; request.getStaticPage(), request.getStaticSize()));
// 静态检测项type=0分页 // 动态检测项type=1独立分页
vo.setStaticItems(buildStatusItemPage(record.getId(), 0, pageNum, pageSize)); vo.setDynamicItems(buildStatusItemPage(record.getId(), 1,
request.getDynamicPage(), request.getDynamicSize()));
// 动态检测项type=1分页 // 特殊检测项type=3独立分页
vo.setDynamicItems(buildStatusItemPage(record.getId(), 1, pageNum, pageSize)); vo.setSpecialItems(buildStatusItemPage(record.getId(), 3,
request.getSpecialPage(), request.getSpecialSize()));
// 特殊检测项type=3分页 // 准备发货type=2不分页
vo.setSpecialItems(buildStatusItemPage(record.getId(), 3, pageNum, pageSize)); vo.setLoadingItems(buildLoadingItem(record.getId()));
// 准备发货type=2分页
vo.setLoadingItems(buildLoadingItemPage(record.getId(), pageNum, pageSize));
return vo; return vo;
} }
@ -173,6 +173,8 @@ public class QmsPdiTaskRecordControllerService {
List<QmsPdiInspectionResults> records = resultPage.getRecords(); List<QmsPdiInspectionResults> records = resultPage.getRecords();
if (records.isEmpty()) { if (records.isEmpty()) {
PageData<QmsPdiTaskRecordDetailVO.StatusItemVO> pd = new PageData<>(); PageData<QmsPdiTaskRecordDetailVO.StatusItemVO> pd = new PageData<>();
pd.setPage(pageNum);
pd.setPageSize(pageSize);
pd.setItems(List.of()); pd.setItems(List.of());
pd.setTotal(0); pd.setTotal(0);
return pd; return pd;
@ -227,16 +229,17 @@ public class QmsPdiTaskRecordControllerService {
}).collect(Collectors.toList()); }).collect(Collectors.toList());
PageData<QmsPdiTaskRecordDetailVO.StatusItemVO> pd = new PageData<>(); PageData<QmsPdiTaskRecordDetailVO.StatusItemVO> pd = new PageData<>();
pd.setPage(pageNum);
pd.setPageSize(pageSize);
pd.setItems(voList); pd.setItems(voList);
pd.setTotal((int) resultPage.getTotal()); pd.setTotal((int) resultPage.getTotal());
return pd; return pd;
} }
/** /**
* 构建准备发货装车前分页数据 * 构建准备发货装车前数据不分页
*/ */
private PageData<QmsPdiTaskRecordDetailVO.LoadingItemVO> buildLoadingItemPage( private QmsPdiTaskRecordDetailVO.LoadingItemVO buildLoadingItem(Long taskId) {
Long taskId, int pageNum, int pageSize) {
// 查询装车前整体记录type=2只有一条 // 查询装车前整体记录type=2只有一条
QmsPdiInspectionResults loadingResult = inspectionResultsService.lambdaQuery() QmsPdiInspectionResults loadingResult = inspectionResultsService.lambdaQuery()
.eq(QmsPdiInspectionResults::getTaskId, taskId) .eq(QmsPdiInspectionResults::getTaskId, taskId)
@ -244,10 +247,7 @@ public class QmsPdiTaskRecordControllerService {
.one(); .one();
if (loadingResult == null) { if (loadingResult == null) {
PageData<QmsPdiTaskRecordDetailVO.LoadingItemVO> pd = new PageData<>(); return null;
pd.setItems(List.of());
pd.setTotal(0);
return pd;
} }
// 查询该任务单下所有装车前检查项明细 // 查询该任务单下所有装车前检查项明细
@ -270,10 +270,7 @@ public class QmsPdiTaskRecordControllerService {
// 构建返回结果 // 构建返回结果
QmsPdiTaskRecordDetailVO.LoadingItemVO vo = new QmsPdiTaskRecordDetailVO.LoadingItemVO(); QmsPdiTaskRecordDetailVO.LoadingItemVO vo = new QmsPdiTaskRecordDetailVO.LoadingItemVO();
vo.setId(loadingResult.getId()); vo.setId(loadingResult.getId());
// 拆分图片/视频ID并转换为FileDetailVO
vo.setInspectionItemImage(convertImageIdsToVO(loadingResult.getInspectionItemImage())); vo.setInspectionItemImage(convertImageIdsToVO(loadingResult.getInspectionItemImage()));
vo.setInspectionItemResults(loadingResult.getInspectionItemResults()); vo.setInspectionItemResults(loadingResult.getInspectionItemResults());
// 构建明细列表 // 构建明细列表
@ -292,12 +289,7 @@ public class QmsPdiTaskRecordControllerService {
detailList.add(detailVO); detailList.add(detailVO);
} }
vo.setDeliveryItemList(detailList); vo.setDeliveryItemList(detailList);
return vo;
// 包装成分页格式只有1条
PageData<QmsPdiTaskRecordDetailVO.LoadingItemVO> pd = new PageData<>();
pd.setItems(List.of(vo));
pd.setTotal(1);
return pd;
} }
/** /**

View File

@ -0,0 +1,47 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* PDI动静态检测项 分页查询请求参数按状态分组各自独立分页
*/
@Data
public class QmsPdiStatusItemSearchQO {
/**
* PDI检测规则ID必传
*/
@NotNull(message = "PDI检测规则ID不能为空")
private Long detectionRulesId;
/**
* 静态检测项页码默认1
*/
private Integer staticPage = 1;
/**
* 静态检测项每页条数默认20
*/
private Integer staticSize = 20;
/**
* 动态检测项页码默认1
*/
private Integer dynamicPage = 1;
/**
* 动态检测项每页条数默认20
*/
private Integer dynamicSize = 20;
/**
* 特殊检测项页码默认1
*/
private Integer specialPage = 1;
/**
* 特殊检测项每页条数默认20
*/
private Integer specialSize = 20;
}

View File

@ -16,12 +16,32 @@ public class QmsPdiTaskRecordDetailQO {
private Long id; private Long id;
/** /**
* 页码默认1 * 静态检测项页码默认1
*/ */
private Integer page = 1; private Integer staticPage = 1;
/** /**
* 每页条数默认20 * 静态检测项每页条数默认20
*/ */
private Integer size = 20; private Integer staticSize = 20;
/**
* 动态检测项页码默认1
*/
private Integer dynamicPage = 1;
/**
* 动态检测项每页条数默认20
*/
private Integer dynamicSize = 20;
/**
* 特殊检测项页码默认1
*/
private Integer specialPage = 1;
/**
* 特殊检测项每页条数默认20
*/
private Integer specialSize = 20;
} }

View File

@ -1,30 +1,31 @@
package com.nflg.wms.common.pojo.vo; package com.nflg.wms.common.pojo.vo;
import com.nflg.wms.common.pojo.PageData;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
/** /**
* PDI动静态检测项 分页查询返回VO按状态分组 * PDI动静态检测项 分页查询返回VO按状态分组各自独立分页
*/ */
@Data @Data
public class QmsPdiStatusItemGroupVO { public class QmsPdiStatusItemGroupVO {
/** /**
* 静态检测项列表status=0 * 静态检测项status=0分页
*/ */
private List<QmsPdiStatusItemVO> staticItems; private PageData<QmsPdiStatusItemVO> staticItems;
/** /**
* 动态检测项列表status=1 * 动态检测项status=1分页
*/ */
private List<QmsPdiStatusItemVO> dynamicItems; private PageData<QmsPdiStatusItemVO> dynamicItems;
/** /**
* 特殊检测项列表status=2 * 特殊检测项status=2分页
*/ */
private List<QmsPdiStatusItemVO> specialItems; private PageData<QmsPdiStatusItemVO> specialItems;
@Data @Data
public static class QmsPdiStatusItemVO { public static class QmsPdiStatusItemVO {

View File

@ -68,9 +68,9 @@ public class QmsPdiTaskRecordDetailVO {
private PageData<StatusItemVO> specialItems; private PageData<StatusItemVO> specialItems;
/** /**
* 准备发货列表inspection_item_type=2分页 * 准备发货inspection_item_type=2分页
*/ */
private PageData<LoadingItemVO> loadingItems; private LoadingItemVO loadingItems;
/** /**
* 静态/动态/特殊检测项 子VO * 静态/动态/特殊检测项 子VO