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

This commit is contained in:
曹鹏飞 2026-06-15 14:25:57 +08:00
commit 77b0f12912
11 changed files with 203 additions and 7 deletions

View File

@ -3,10 +3,12 @@ package com.nflg.qms.admin.controller;
import com.nflg.qms.admin.service.QmsPdiTaskRecordControllerService;
import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.qo.QmsPdiTaskInspectionResultQO;
import com.nflg.wms.common.pojo.qo.QmsPdiTaskRecordDefectSearchQO;
import com.nflg.wms.common.pojo.qo.QmsPdiTaskRecordSearchQO;
import com.nflg.wms.common.pojo.qo.QmsPdiTaskRecordStatusItemDetailQO;
import com.nflg.wms.common.pojo.qo.QmsPdiTaskRecordTransferQO;
import com.nflg.wms.common.pojo.vo.QmsPdiTaskInspectionResultVO;
import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordDefectPageVO;
import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordDetailVO;
import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordPageVO;
@ -83,6 +85,15 @@ public class QmsPdiTaskRecordController extends BaseController {
return ApiResult.success(taskRecordControllerService.getInspectionImages(id));
}
/**
* 分页查询检验结果详情联查检测项和部件信息
*/
@PostMapping("inspectionResultDetail")
public ApiResult<PageData<QmsPdiTaskInspectionResultVO>> inspectionResultDetail(
@Valid @RequestBody QmsPdiTaskInspectionResultQO request) {
return ApiResult.success(taskRecordControllerService.inspectionResultDetail(request));
}
/**
* 查询任务详情
*/

View File

@ -291,6 +291,13 @@ public class QmsIssueTicketControllerService {
.set(QmsIssueTicket::getUpdateTime, now)
.update();
issueTicketToDoService.lambdaUpdate()
.eq(QmsIssueTicketToDo::getTicketId, ticket.getId())
.eq(QmsIssueTicketToDo::getHandlerUserId, ticket.getCreateUserId())
.eq(QmsIssueTicketToDo::getHasProcessed, false)
.set(QmsIssueTicketToDo::getHasProcessed, true)
.update();
// 5. 按处理人分组合并不合格项ID
Map<Long, List<String>> userTaskMap = new LinkedHashMap<>();
for (QmsPqcTicketDispatchQO.AssigneeItem item : request.getAssignees()) {
@ -326,7 +333,9 @@ public class QmsIssueTicketControllerService {
// 推送待办消息
QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo()
.setTicketId(ticket.getId())
.setHandlerUserId(userId);
.setHandlerUserId(userId)
.setHasProcessed(false)
.setIsRead(false);
issueTicketToDoService.save(todoItem);
}
@ -1489,7 +1498,9 @@ public class QmsIssueTicketControllerService {
QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo()
.setTicketId(issueTicketId)
.setHandlerUserId(handlerUserId);
.setHandlerUserId(handlerUserId)
.setHasProcessed(false)
.setIsRead(false);
issueTicketToDoService.save(todoItem);
}
@ -3334,6 +3345,8 @@ public class QmsIssueTicketControllerService {
.set(QmsIssueTicket::getUpdateTime, now)
.update();
issueTicketToDoService.processed(ticket.getId());
// PDI工单关闭时创建新任务单复制内容不合格项改为合格
if (ticket.getSourceType() != null && ticket.getSourceType() == 1 && ticket.getSourceId() != null) {
QmsPdiTaskRecord originalTask = createPdiRepairTask(ticket.getSourceId(), now);

View File

@ -480,16 +480,26 @@ public class QmsIssueTicketProcessControllerService {
public void submitPqcHandler(QmsIssueTicketProcessDraftQO request, QmsIssueTicket ticket,
QmsIssueTicketProcess process, LocalDateTime now,
Long currentUserId, String currentUserName) {
// 1. 保存数据调用draftUnified
issueTicketProcessMeasureControllerService.draftUnified(request);
QmsIssueTicketProcess latestProcess = issueTicketProcessService.getById(process.getId());
Short approvalStatus = request.getApprovalStatus() != null
? request.getApprovalStatus()
: latestProcess.getApprovalStatus();
: process.getApprovalStatus();
VUtil.trueThrowBusinessError(approvalStatus == null).throwMessage("提交时审批状态不能为空");
VUtil.trueThrowBusinessError(approvalStatus != 0 && approvalStatus != 1)
.throwMessage("不支持的审批状态");
if (approvalStatus == 0) {
// 1. 保存数据调用draftUnified
issueTicketProcessMeasureControllerService.draftUnified(request);
} else {
issueTicketProcessService.lambdaUpdate()
.eq(QmsIssueTicketProcess::getId, process.getId())
.set(QmsIssueTicketProcess::getApprovalStatus, approvalStatus)
.set(request.getApprovalOpinion() != null, QmsIssueTicketProcess::getApprovalOpinion, request.getApprovalOpinion())
.set(QmsIssueTicketProcess::getApprovalUserId, currentUserId)
.set(QmsIssueTicketProcess::getApprovalUserName, currentUserName)
.update();
}
// 2. 写入审批时间
issueTicketProcessService.lambdaUpdate()
.eq(QmsIssueTicketProcess::getId, process.getId())

View File

@ -4,10 +4,12 @@ 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.QmsPdiTaskInspectionResultQO;
import com.nflg.wms.common.pojo.qo.QmsPdiTaskRecordDefectSearchQO;
import com.nflg.wms.common.pojo.qo.QmsPdiTaskRecordSearchQO;
import com.nflg.wms.common.pojo.qo.QmsPdiTaskRecordStatusItemDetailQO;
import com.nflg.wms.common.pojo.qo.QmsPdiTaskRecordTransferQO;
import com.nflg.wms.common.pojo.vo.QmsPdiTaskInspectionResultVO;
import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordDetailVO;
import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordDefectPageVO;
import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordPageVO;
@ -400,7 +402,8 @@ public class QmsPdiTaskRecordControllerService {
QmsPdiTaskRecordDetailVO.LoadingItemDetailVO detailVO = new QmsPdiTaskRecordDetailVO.LoadingItemDetailVO();
detailVO.setDeliveryItemId(lr.getInspectionItemId());
detailVO.setInspectionItemImage(convertImageIdsToVO(lr.getInspectionItemImage()));
detailVO.setInspectionBy(lr.getInspectionBy());
detailVO.setInspectionTime(lr.getInspectionTime());
QmsPdiDetectionRulesDeliveryItem di = finalMap.get(lr.getInspectionItemId());
if (di != null) {
detailVO.setChecklist(di.getChecklist());
@ -455,6 +458,19 @@ public class QmsPdiTaskRecordControllerService {
return convertImageIdsToVO(result.getInspectionItemImage());
}
// ========================= 检验结果详情分页 =========================
/**
* 分页查询检验结果详情联查检测项和部件信息
*/
public PageData<QmsPdiTaskInspectionResultVO> inspectionResultDetail(QmsPdiTaskInspectionResultQO request) {
Page<QmsPdiTaskInspectionResultVO> page = inspectionResultsService.listByTaskId(request);
PageData<QmsPdiTaskInspectionResultVO> result = new PageData<>();
result.setItems(page.getRecords());
result.setTotal((int) page.getTotal());
return result;
}
// ========================= 任务详情 =========================
/**

View File

@ -0,0 +1,27 @@
package com.nflg.wms.common.pojo.qo;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* PDI任务检验结果详情 查询参数
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class QmsPdiTaskInspectionResultQO extends PageQO {
/**
* 任务单ID
*/
private Long taskId;
/**
* 检测项状态
*/
private Integer status;
/**
* 部件名称
*/
private String componentName;
}

View File

@ -0,0 +1,62 @@
package com.nflg.wms.common.pojo.vo;
import lombok.Data;
import java.time.LocalDateTime;
/**
* PDI任务检验结果详情VO联查检测项和部件信息
*/
@Data
public class QmsPdiTaskInspectionResultVO {
/**
* 检验结果IDqms_pdi_inspection_results.id
*/
private Long id;
/**
* 部件名称qms_pdi_component_anagement.component_name
*/
private String componentName;
/**
* 检查核实内容qms_pdi_detection_rules_status_item.inspection_content
*/
private String inspectionContent;
/**
* 检测示例图URLfile_upload_record.url通过 inspection_image 文件ID关联
*/
private String inspectionImage;
/**
* 检测项状态qms_pdi_detection_rules_status_item.status
*/
private Integer status;
/**
* 检验现场图片qms_pdi_inspection_results.inspection_item_image
*/
private String inspectionItemImage;
/**
* 检验项结果false=不合格true=合格
*/
private Boolean inspectionItemResults;
/**
* 质检时间
*/
private LocalDateTime inspectionTime;
/**
* 质检人
*/
private String inspectionBy;
/**
* 备注
*/
private String remark;
}

View File

@ -109,6 +109,17 @@ public class QmsPdiTaskRecordDetailVO {
* 现场图片/视频详情列表
*/
private List<FileDetailVO> inspectionItemImage;
/**
* 检测时间
*/
private LocalDateTime inspectionTime;
/**
* 检测人
*/
private String inspectionBy;
}
/**

View File

@ -3,12 +3,15 @@ package com.nflg.wms.repository.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nflg.wms.common.pojo.qo.QmsPdiInspectionResultsSearchQO;
import com.nflg.wms.common.pojo.qo.QmsPdiTaskInspectionResultQO;
import com.nflg.wms.common.pojo.qo.QmsPdiTaskListQO;
import com.nflg.wms.common.pojo.vo.QmsPdiInspectionResultsPageVO;
import com.nflg.wms.common.pojo.vo.QmsPdiTaskInspectionResultVO;
import com.nflg.wms.repository.entity.QmsPdiInspectionResults;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
@ -33,4 +36,10 @@ public interface QmsPdiInspectionResultsMapper extends BaseMapper<QmsPdiInspecti
* 平板统计各状态数量
*/
Map<String, Object> countByStatus(@Param("userId") Long userId);
/**
* 根据任务ID分页查询检验结果详情联查检测项和部件信息
*/
Page<QmsPdiTaskInspectionResultVO> listByTaskId(Page<QmsPdiTaskInspectionResultVO> page,
@Param("request") QmsPdiTaskInspectionResultQO request);
}

View File

@ -3,8 +3,10 @@ package com.nflg.wms.repository.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nflg.wms.common.pojo.qo.QmsPdiInspectionResultsSearchQO;
import com.nflg.wms.common.pojo.qo.QmsPdiTaskInspectionResultQO;
import com.nflg.wms.common.pojo.qo.QmsPdiTaskListQO;
import com.nflg.wms.common.pojo.vo.QmsPdiInspectionResultsPageVO;
import com.nflg.wms.common.pojo.vo.QmsPdiTaskInspectionResultVO;
import com.nflg.wms.repository.entity.QmsPdiInspectionResults;
import java.util.Map;
@ -28,4 +30,9 @@ public interface IQmsPdiInspectionResultsService extends IService<QmsPdiInspecti
* 平板统计各状态数量
*/
Map<String, Object> countByStatus(Long userId);
/**
* 根据任务ID分页查询检验结果详情联查检测项和部件信息
*/
Page<QmsPdiTaskInspectionResultVO> listByTaskId(QmsPdiTaskInspectionResultQO request);
}

View File

@ -3,8 +3,10 @@ package com.nflg.wms.repository.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.wms.common.pojo.qo.QmsPdiInspectionResultsSearchQO;
import com.nflg.wms.common.pojo.qo.QmsPdiTaskInspectionResultQO;
import com.nflg.wms.common.pojo.qo.QmsPdiTaskListQO;
import com.nflg.wms.common.pojo.vo.QmsPdiInspectionResultsPageVO;
import com.nflg.wms.common.pojo.vo.QmsPdiTaskInspectionResultVO;
import com.nflg.wms.repository.entity.QmsPdiInspectionResults;
import com.nflg.wms.repository.mapper.QmsPdiInspectionResultsMapper;
import com.nflg.wms.repository.service.IQmsPdiInspectionResultsService;
@ -36,4 +38,10 @@ public class QmsPdiInspectionResultsServiceImpl
public Map<String, Object> countByStatus(Long userId) {
return baseMapper.countByStatus(userId);
}
@Override
public Page<QmsPdiTaskInspectionResultVO> listByTaskId(QmsPdiTaskInspectionResultQO request) {
Page<QmsPdiTaskInspectionResultVO> page = new Page<>(request.getPage(), request.getPageSize());
return baseMapper.listByTaskId(page, request);
}
}

View File

@ -102,4 +102,26 @@
</where>
</select>
<!-- 根据任务ID查询检验结果详情联查检测项和部件信息 -->
<select id="listByTaskId" resultType="com.nflg.wms.common.pojo.vo.QmsPdiTaskInspectionResultVO">
SELECT
b.id,
c.component_name AS componentName,
a.inspection_content AS inspectionContent,
d.url AS inspectionImage,
a.status,
b.inspection_item_image AS inspectionItemImage,
b.inspection_item_results AS inspectionItemResults,
b.inspection_time AS inspectionTime,
b.inspection_by AS inspectionBy,
b.remark
FROM qms_pdi_inspection_results b
LEFT JOIN qms_pdi_detection_rules_status_item a ON a.id = b.inspection_item_id
LEFT JOIN qms_pdi_component_anagement c ON a.components_id = c.id
LEFT JOIN file_upload_record d ON a.inspection_image::bigint = d.id
WHERE b.task_id = #{request.taskId}
AND a.status = #{request.status}
AND c.component_name = #{request.componentName}
</select>
</mapper>