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

View File

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

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;
/**
* 页码默认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;
import com.nflg.wms.common.pojo.PageData;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
/**
* PDI动静态检测项 分页查询返回VO按状态分组
* PDI动静态检测项 分页查询返回VO按状态分组各自独立分页
*/
@Data
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
public static class QmsPdiStatusItemVO {

View File

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