pqc工单修改

This commit is contained in:
yf001217 2026-06-14 09:26:34 +08:00
parent 92c6a2e564
commit ed4e0355af
1 changed files with 62 additions and 3 deletions

View File

@ -40,6 +40,12 @@ public class QmsPqcTaskRecordControllerService {
@Resource
private IQmsPqcInspectionRuleService pqcInspectionRuleService;
@Resource
private IQmsInspectorModelItemService inspectorModelItemService;
@Resource
private IQmsQualityInspectorService qualityInspectorService;
@Resource
private IQmsPqcInspectionPointService pqcInspectionPointService;
@ -339,6 +345,7 @@ public class QmsPqcTaskRecordControllerService {
if (Boolean.TRUE.equals(request.getIsReview())) {
queryWrapper.eq(QmsPqcTaskRecord::getStatus, (short) 3)
.eq(QmsPqcTaskRecord::getReviewerId, UserUtil.getUserId())
.orderByDesc(QmsPqcTaskRecord::getCreateTime);
} else if (Objects.equals(request.getType(), 1)) {
queryWrapper.eq(QmsPqcTaskRecord::getStatus, (short) 0)
@ -346,6 +353,7 @@ public class QmsPqcTaskRecordControllerService {
.orderByDesc(QmsPqcTaskRecord::getCreateTime);
} else if (Objects.equals(request.getType(), 0)) {
queryWrapper.in(QmsPqcTaskRecord::getStatus, (short) 1, (short) 2)
.eq(QmsPqcTaskRecord::getReviewerId, UserUtil.getUserId())
.orderByAsc(QmsPqcTaskRecord::getStatus)
.orderByDesc(QmsPqcTaskRecord::getCreateTime);
} else {
@ -1019,6 +1027,9 @@ public class QmsPqcTaskRecordControllerService {
taskRecord.setSelfTesterId(currentUserId);
taskRecord.setSelfTesterName(currentUserName);
}
User reviewer = resolvePqcReviewerUser(taskRecord.getModelNo());
taskRecord.setReviewerId(reviewer.getId());
taskRecord.setReviewerName(reviewer.getUserName());
// 自检提交状态改为1待复核
taskRecord.setStatus((short) 1);
} else {
@ -1031,6 +1042,11 @@ public class QmsPqcTaskRecordControllerService {
}
pqcTaskRecordService.updateById(taskRecord);
if (!hasReviewContent) {
sendPqcReviewTodoMessage(taskRecord, currentUserId, currentUserName, now);
} else {
markPqcReviewTodoDone(taskRecord.getId(), taskRecord.getReviewerId(), currentUserId, currentUserName, now);
}
// 6. 同步生成工单仅当任务总体不合格时才额外生成重检任务
Map<Long, Long> detailIdMap = getTaskDetailIdMap(taskRecord.getId());
List<QmsPqcUnqualifiedItemVO> unqualifiedItems = buildUnqualifiedItems(request, detailIdMap);
@ -1623,17 +1639,60 @@ public class QmsPqcTaskRecordControllerService {
.setSourceTypeId(sourceTypeId)
.setSourceId(sourceId)
.setIsRead(false)
.setCreateUserId(createUserId)
.setCreateUserName(createUserName)
.setCreateUserId(handlerUserId)
.setCreateUserName(handlerUserName)
.setCreateTime(now)
.setUpdateUserId(createUserId)
.setUpdateUserName(createUserName)
.setUpdateTime(now);
// 通过消息服务发送
sendMessageServices.forEach(service -> service.sendSystemMessage(todoItem));
}
private User resolvePqcReviewerUser(String modelNo) {
QmsInspectorModelItem modelItem = inspectorModelItemService.lambdaQuery()
.eq(QmsInspectorModelItem::getModelNo, modelNo)
.last("LIMIT 1")
.one();
VUtil.trueThrowBusinessError(modelItem == null).throwMessage("机型未绑定PQC复核人");
QmsQualityInspector inspector = qualityInspectorService.getById(modelItem.getInspectorId());
VUtil.trueThrowBusinessError(inspector == null).throwMessage("PQC复核人不存在");
VUtil.trueThrowBusinessError(!Objects.equals(inspector.getInspectionType(), 2)).throwMessage("复核人不是PQC类型");
VUtil.trueThrowBusinessError(!Boolean.TRUE.equals(inspector.getEnable())).throwMessage("PQC复核人已禁用");
QmsQualityInspector actualInspector = inspector;
if (inspector.getChangeUserId() != null) {
actualInspector = qualityInspectorService.getById(inspector.getChangeUserId());
}
User reviewer = actualInspector == null ? null : userService.getById(actualInspector.getUserId());
VUtil.trueThrowBusinessError(reviewer == null).throwMessage("实际复核人用户不存在");
return reviewer;
}
private void sendPqcReviewTodoMessage(QmsPqcTaskRecord taskRecord, Long updateUserId, String updateUserName, LocalDateTime now) {
Long reviewTypeId = dictionaryItemService.getIdByCode("MessageType", "PQCReviewTask");
VUtil.trueThrowBusinessError(reviewTypeId == null).throwMessage("消息类型PQCReviewTask不存在");
sendTodoMessage(taskRecord.getTaskNo(), taskRecord.getReviewerId(), taskRecord.getReviewerName(),
taskRecord.getId(), reviewTypeId, updateUserId, updateUserName, now);
}
private void markPqcReviewTodoDone(Long taskId, Long reviewerId, Long updateUserId, String updateUserName, LocalDateTime now) {
Long reviewTypeId = dictionaryItemService.getIdByCode("MessageType", "PQCReviewTask");
VUtil.trueThrowBusinessError(reviewTypeId == null).throwMessage("消息类型PQCReviewTask不存在");
todoItemService.lambdaUpdate()
.set(QmsTodoItem::getIsRead, true)
.set(QmsTodoItem::getUpdateUserId, updateUserId)
.set(QmsTodoItem::getUpdateUserName, updateUserName)
.set(QmsTodoItem::getUpdateTime, now)
.eq(QmsTodoItem::getSourceTypeId, reviewTypeId)
.eq(QmsTodoItem::getSourceId, taskId)
.eq(QmsTodoItem::getCreateUserId, reviewerId)
.eq(QmsTodoItem::getIsRead, false)
.update();
}
private String buildStepKey(QmsPqcInspectionPoint point) {
String stepName = StrUtil.blankToDefault(point.getStepName(), "");
String stepDicItemId = point.getStepDicItemId() == null ? "" : point.getStepDicItemId().toString();