Merge remote-tracking branch '惠信/qms/develop' into qms/develop

This commit is contained in:
曹鹏飞 2026-05-08 09:03:07 +08:00
commit 6dd52fb135
5 changed files with 318 additions and 2 deletions

View File

@ -10,6 +10,7 @@ import com.nflg.wms.common.pojo.qo.QmsIssueTicketSearchQO;
import com.nflg.wms.common.pojo.vo.QmsIssueTicketDetailVO;
import com.nflg.wms.common.pojo.vo.QmsIssueTicketVO;
import com.nflg.wms.common.pojo.vo.QmsPdiTicketDetailVO;
import com.nflg.wms.common.pojo.vo.QmsPdiTicketMyDetailVO;
import com.nflg.wms.repository.service.IQmsIssueTicketService;
import com.nflg.wms.starter.BaseController;
import jakarta.annotation.Resource;
@ -74,6 +75,15 @@ public class QmsIssueTicketController extends BaseController {
return ApiResult.success(issueTicketControllerService.getPdiTicketDetail(id));
}
/**
* 查询本人的PDI工单详情
* 校验当前登录人在处理记录中为处理人/审批人/上级领导仅返回相关的处理记录及措施
*/
@GetMapping("detail/my-pdi-ticket")
public ApiResult<QmsPdiTicketMyDetailVO> myPdiTicketDetail(@NotNull(message = "ID不能为空") Long id) {
return ApiResult.success(issueTicketControllerService.getMyPdiTicketDetail(id));
}
/**
* 查询来料检测任务质量问题工单详情
* 含来料检测任务详情及来料检验任务检验记录子项样本列表

View File

@ -3,7 +3,6 @@ package com.nflg.qms.admin.controller;
import com.nflg.qms.admin.service.QmsPdiInspectionResultsControllerService;
import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.qo.QmsPdiInspectionResultItemQO;
import com.nflg.wms.common.pojo.qo.QmsPdiInspectionResultsSearchQO;
import com.nflg.wms.common.pojo.qo.QmsPdiInspectionResultsSubmitQO;
import com.nflg.wms.common.pojo.qo.QmsPdiStatusItemsFillQO;

View File

@ -505,4 +505,53 @@ public class QmsIssueTicketControllerService {
vo.setUnqualifiedItems(unqualifiedItems);
return vo;
}
/**
* 查询本人的PDI工单详情
* 校验当前登录人在 qms_issue_ticket_process 中为处理人/审批人/上级领导
* 仅返回当前登录人相关的处理记录及其措施
*/
public QmsPdiTicketMyDetailVO getMyPdiTicketDetail(Long id) {
Long currentUserId = UserUtil.getUserId();
// 查询工单基本信息
QmsIssueTicket ticket = issueTicketService.getById(id);
// 查询当前登录人相关的处理记录处理人ID/审批人ID/上级领导ID = 当前用户
List<QmsIssueTicketProcess> processes = issueTicketProcessService.lambdaQuery()
.eq(QmsIssueTicketProcess::getIssueTicketId, id)
.and(w -> w
.eq(QmsIssueTicketProcess::getHandlerUserId, currentUserId)
.or().eq(QmsIssueTicketProcess::getApprovalUserId, currentUserId)
.or().eq(QmsIssueTicketProcess::getLeaderUserId, currentUserId)
)
.list();
// 构建返回VO
QmsPdiTicketMyDetailVO vo = new QmsPdiTicketMyDetailVO();
BeanUtil.copyProperties(ticket, vo);
// 构建处理记录列表
List<QmsPdiTicketMyDetailVO.ProcessVO> processVOList = processes.stream().map(process -> {
QmsPdiTicketMyDetailVO.ProcessVO processVO = new QmsPdiTicketMyDetailVO.ProcessVO();
BeanUtil.copyProperties(process, processVO);
// 查询该处理记录下的措施列表
List<QmsIssueTicketProcessMeasure> measures = issueTicketProcessMeasureService.lambdaQuery()
.eq(QmsIssueTicketProcessMeasure::getIssueTicketProcessId, process.getId())
.list();
List<QmsPdiTicketMyDetailVO.MeasureVO> measureVOList = measures.stream().map(measure -> {
QmsPdiTicketMyDetailVO.MeasureVO measureVO = new QmsPdiTicketMyDetailVO.MeasureVO();
BeanUtil.copyProperties(measure, measureVO);
return measureVO;
}).toList();
processVO.setMeasures(measureVOList);
return processVO;
}).toList();
vo.setProcesses(processVOList);
return vo;
}
}

View File

@ -0,0 +1,257 @@
package com.nflg.wms.common.pojo.vo;
import lombok.Data;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
/**
* 本人PDI工单详情VO含工单全部字段 + 当前登录人相关的处理记录及措施
*/
@Data
public class QmsPdiTicketMyDetailVO {
// ===== qms_issue_ticket 全部字段 =====
private Long id;
/**
* 来源类型0=IQC检测任务1=PDI检测任务2=巡检
*/
private Short sourceType;
/**
* 来源ID
*/
private Long sourceId;
/**
* 工单编号
*/
private String ticketNo;
/**
* 工单标题
*/
private String ticketTitle;
/**
* 工程编号
*/
private String projectNo;
/**
* 事故类型0=一般1=较严重2=严重
*/
private Short incidentType;
/**
* 异常代码
*/
private String exceptionCode;
/**
* 不合格数量
*/
private Integer unqualifiedQty;
/**
* 事件地点
*/
private String incidentLocation;
/**
* 事件描述
*/
private String incidentDescription;
/**
* 事件原因
*/
private String incidentReason;
/**
* 事件后果
*/
private String incidentConsequence;
/**
* 图片列表多个图片ID用逗号分隔
*/
private String imageIds;
/**
* 备注
*/
private String remark;
/**
* 状态0=待流转1=处理中2=已完成
*/
private Short status;
/**
* 审批状态0=通过1=驳回2=重检3=报废4=维修5=挑选使用6=让渡使用
*/
private Short approvalStatus;
/**
* 审批意见
*/
private String approvalOpinion;
/**
* 审批人ID
*/
private Long approvalUserId;
/**
* 审批人姓名
*/
private String approvalUserName;
/**
* 审批时间
*/
private LocalDateTime approvalTime;
/**
* 创建人ID
*/
private Long createUserId;
/**
* 创建人姓名
*/
private String createUserName;
/**
* 创建时间
*/
private LocalDateTime createTime;
// ===== 当前登录人相关的处理记录列表 =====
/**
* 处理记录列表仅当前登录人相关
*/
private List<ProcessVO> processes;
@Data
public static class ProcessVO {
private Long id;
/**
* 处理人ID
*/
private Long handlerUserId;
/**
* 处理人姓名
*/
private String handlerUserName;
/**
* 根本原因
*/
private String rootCause;
/**
* 任务结果ID多个用逗号分隔
*/
private String taskResultIds;
/**
* 审批状态0=通过1=驳回
*/
private Short approvalStatus;
/**
* 审批意见
*/
private String approvalOpinion;
/**
* 审批人ID
*/
private Long approvalUserId;
/**
* 审批人姓名
*/
private String approvalUserName;
/**
* 审批时间
*/
private LocalDateTime approvalTime;
/**
* 上级领导审批结果0=驳回1=同意
*/
private Short leaderApprovalResult;
/**
* 上级领导审批意见
*/
private String leaderApprovalOpinion;
/**
* 上级领导ID
*/
private Long leaderUserId;
/**
* 上级领导姓名
*/
private String leaderUserName;
/**
* 上级领导审批时间
*/
private LocalDateTime leaderApprovalTime;
/**
* 措施列表
*/
private List<MeasureVO> measures;
}
@Data
public static class MeasureVO {
private Long id;
/**
* 措施类型ID
*/
private Long measureTypeId;
/**
* 措施内容
*/
private String measureContent;
/**
* 负责人
*/
private String chargeUser;
/**
* 计划日期
*/
private LocalDate planDate;
/**
* 确认日期
*/
private LocalDate confirmDate;
/**
* 备注
*/
private String remark;
}
}

View File

@ -12,7 +12,8 @@
t.task_no AS taskNo,
r.inspection_version AS inspectionVersion,
t.submission_time AS submissionTime,
t.required_completion_time AS requiredCompletionTime
t.required_completion_time AS requiredCompletionTime,
t.inspection_enable AS inspectionEnable
FROM qms_pdi_task_record t
LEFT JOIN qms_pdi_detection_rules r ON r.id = t.detection_rules_id
<where>