diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsIssueTicketController.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsIssueTicketController.java index a331f5c5..7f01aa10 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsIssueTicketController.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsIssueTicketController.java @@ -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 myPdiTicketDetail(@NotNull(message = "ID不能为空") Long id) { + return ApiResult.success(issueTicketControllerService.getMyPdiTicketDetail(id)); + } + /** * 查询来料检测任务质量问题工单详情 * 含来料检测任务详情及来料检验任务检验记录子项样本列表 diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsPdiInspectionResultsController.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsPdiInspectionResultsController.java index ce4bb0de..8a03c38b 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsPdiInspectionResultsController.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsPdiInspectionResultsController.java @@ -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; diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java index 53001b0b..74ffb267 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java @@ -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 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 processVOList = processes.stream().map(process -> { + QmsPdiTicketMyDetailVO.ProcessVO processVO = new QmsPdiTicketMyDetailVO.ProcessVO(); + BeanUtil.copyProperties(process, processVO); + + // 查询该处理记录下的措施列表 + List measures = issueTicketProcessMeasureService.lambdaQuery() + .eq(QmsIssueTicketProcessMeasure::getIssueTicketProcessId, process.getId()) + .list(); + + List 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; + } } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTicketMyDetailVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTicketMyDetailVO.java new file mode 100644 index 00000000..c7818896 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTicketMyDetailVO.java @@ -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 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 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; + } +} diff --git a/nflg-wms-repository/src/main/resources/mapper/QmsPdiInspectionResultsMapper.xml b/nflg-wms-repository/src/main/resources/mapper/QmsPdiInspectionResultsMapper.xml index 6871cb69..caa01723 100644 --- a/nflg-wms-repository/src/main/resources/mapper/QmsPdiInspectionResultsMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/QmsPdiInspectionResultsMapper.xml @@ -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