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

This commit is contained in:
曹鹏飞 2026-06-14 15:35:53 +08:00
commit 45201556c6
6 changed files with 44 additions and 16 deletions

View File

@ -3082,6 +3082,7 @@ public class QmsIssueTicketControllerService {
for (QmsIssueTicketProcessMeasure measure : measures) { for (QmsIssueTicketProcessMeasure measure : measures) {
QmsInspectionTicketDetailVO.MeasureVO measureVO = new QmsInspectionTicketDetailVO.MeasureVO(); QmsInspectionTicketDetailVO.MeasureVO measureVO = new QmsInspectionTicketDetailVO.MeasureVO();
measureVO.setId(measure.getId());
measureVO.setMeasureTypeId(measure.getMeasureTypeId()); measureVO.setMeasureTypeId(measure.getMeasureTypeId());
measureVO.setMeasureContent(measure.getMeasureContent()); measureVO.setMeasureContent(measure.getMeasureContent());
measureVO.setChargeUser(measure.getChargeUser()); measureVO.setChargeUser(measure.getChargeUser());
@ -3155,21 +3156,11 @@ public class QmsIssueTicketControllerService {
vo.setIsEdit(false); vo.setIsEdit(false);
vo.setIsShut(false); vo.setIsShut(false);
} }
// 处理人权限拿到工单时有编辑和审批权限有了审批状态后失去审批权限驳回时失去编辑权限 // 处理人权限未提交或领导驳回重置后可编辑处理人提交后关闭编辑权限
else if (isHandler) { else if (isHandler) {
Short handlerApprovalStatus = myProcess.getApprovalStatus(); Short handlerApprovalStatus = myProcess.getApprovalStatus();
vo.setIsReview(handlerApprovalStatus == null); vo.setIsReview(handlerApprovalStatus == null);
if (handlerApprovalStatus != null && handlerApprovalStatus == 1) { vo.setIsEdit(handlerApprovalStatus == null);
// 驳回失去编辑权限
vo.setIsEdit(false);
} else if (handlerApprovalStatus != null && handlerApprovalStatus == 0) {
// 通过按之前逻辑领导未审批时可编辑
boolean leaderNotApproved = myProcess.getLeaderApprovalResult() == null;
vo.setIsEdit(leaderNotApproved);
} else {
// 未提交有编辑权限
vo.setIsEdit(true);
}
vo.setIsDispatch(false); vo.setIsDispatch(false);
vo.setIsShut(false); vo.setIsShut(false);
} }

View File

@ -211,6 +211,8 @@ public class QmsIssueTicketProcessControllerService {
.set(QmsIssueTicketProcess::getApprovalTime, now) .set(QmsIssueTicketProcess::getApprovalTime, now)
.update(); .update();
issueTicketToDoService.processed(ticket.getId());
// 根据审批状态推送待办 // 根据审批状态推送待办
if (request.getApprovalStatus() != null && request.getApprovalStatus() == 1) { if (request.getApprovalStatus() != null && request.getApprovalStatus() == 1) {
// 驳回推送待办给负责人工单表的 approvalUserId // 驳回推送待办给负责人工单表的 approvalUserId
@ -283,6 +285,8 @@ public class QmsIssueTicketProcessControllerService {
.set(QmsIssueTicketProcess::getLeaderApprovalTime, now) .set(QmsIssueTicketProcess::getLeaderApprovalTime, now)
.update(); .update();
issueTicketToDoService.processed(ticket.getId());
Short leaderApprovalResult = request.getApprovalStatus(); Short leaderApprovalResult = request.getApprovalStatus();
if (leaderApprovalResult == 1) { if (leaderApprovalResult == 1) {
@ -383,6 +387,8 @@ public class QmsIssueTicketProcessControllerService {
.set(QmsIssueTicketProcess::getLeaderApprovalTime, null) .set(QmsIssueTicketProcess::getLeaderApprovalTime, null)
.update(); .update();
issueTicketToDoService.processed(ticket.getId());
// 4. 根据审批状态推送待办 // 4. 根据审批状态推送待办
Long sourceTypeId = dictionaryItemService.getIdByCode("MessageType", "RejectedPDIDefectiveProductHandling"); Long sourceTypeId = dictionaryItemService.getIdByCode("MessageType", "RejectedPDIDefectiveProductHandling");
@ -417,8 +423,6 @@ public class QmsIssueTicketProcessControllerService {
issueTicketToDoService.save(todoItem); issueTicketToDoService.save(todoItem);
} }
} }
issueTicketToDoService.processed(ticket.getId());
} }
/** /**
@ -437,6 +441,8 @@ public class QmsIssueTicketProcessControllerService {
.set(QmsIssueTicketProcess::getApprovalTime, now) .set(QmsIssueTicketProcess::getApprovalTime, now)
.update(); .update();
issueTicketToDoService.processed(ticket.getId());
// 3. 根据审批状态处理 // 3. 根据审批状态处理
if (request.getApprovalStatus() != null && request.getApprovalStatus() == 1) { if (request.getApprovalStatus() != null && request.getApprovalStatus() == 1) {
// 驳回推送给工单创建人 // 驳回推送给工单创建人

View File

@ -217,7 +217,7 @@ public class QmsIssueTicketProcessMeasureControllerService {
throw new NflgException(STATE.BusinessError, "字典【工单解决措施-临时纠正措施】不存在"); throw new NflgException(STATE.BusinessError, "字典【工单解决措施-临时纠正措施】不存在");
} }
for (QmsIssueTicketProcessDraftQO.MeasureItem item : temporaryMeasures) { for (QmsIssueTicketProcessDraftQO.MeasureItem item : temporaryMeasures) {
if (StrUtil.isBlank(item.getMeasureContent())) continue; if (!shouldSaveMeasure(item, currentUserName)) continue;
QmsIssueTicketProcessMeasure measure = new QmsIssueTicketProcessMeasure() QmsIssueTicketProcessMeasure measure = new QmsIssueTicketProcessMeasure()
.setIssueTicketProcessId(processId) .setIssueTicketProcessId(processId)
.setMeasureTypeId(tempTypeId) .setMeasureTypeId(tempTypeId)
@ -237,7 +237,7 @@ public class QmsIssueTicketProcessMeasureControllerService {
throw new NflgException(STATE.BusinessError, "字典【工单解决措施-永久纠正措施】不存在"); throw new NflgException(STATE.BusinessError, "字典【工单解决措施-永久纠正措施】不存在");
} }
for (QmsIssueTicketProcessDraftQO.MeasureItem item : permanentMeasures) { for (QmsIssueTicketProcessDraftQO.MeasureItem item : permanentMeasures) {
if (StrUtil.isBlank(item.getMeasureContent())) continue; if (!shouldSaveMeasure(item, currentUserName)) continue;
QmsIssueTicketProcessMeasure measure = new QmsIssueTicketProcessMeasure() QmsIssueTicketProcessMeasure measure = new QmsIssueTicketProcessMeasure()
.setIssueTicketProcessId(processId) .setIssueTicketProcessId(processId)
.setMeasureTypeId(permTypeId) .setMeasureTypeId(permTypeId)
@ -250,4 +250,14 @@ public class QmsIssueTicketProcessMeasureControllerService {
} }
} }
} }
private boolean shouldSaveMeasure(QmsIssueTicketProcessDraftQO.MeasureItem item, String currentUserName) {
if (item == null || StrUtil.isBlank(item.getMeasureContent())) {
return false;
}
if (StrUtil.isBlank(item.getChargeUser())) {
throw new NflgException(STATE.BusinessError, "措施负责人不能为空");
}
return StrUtil.equals(item.getChargeUser(), currentUserName);
}
} }

View File

@ -62,6 +62,11 @@ public class QmsIssueTicketProcessDraftQO {
*/ */
private String measureContent; private String measureContent;
/**
* 负责人
*/
private String chargeUser;
/** /**
* 计划日期 * 计划日期
*/ */

View File

@ -214,6 +214,11 @@ public class QmsInspectionTicketDetailVO {
@Data @Data
public static class MeasureVO { public static class MeasureVO {
/**
* 处理方案明细ID
*/
private Long id;
/** /**
* 措施类型ID关联字典项表 * 措施类型ID关联字典项表
*/ */

View File

@ -13,10 +13,12 @@ import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.repository.entity.FileUploadRecord; import com.nflg.wms.repository.entity.FileUploadRecord;
import com.nflg.wms.repository.entity.QmsIssueTicket; import com.nflg.wms.repository.entity.QmsIssueTicket;
import com.nflg.wms.repository.entity.QmsIssueTicketProcess; import com.nflg.wms.repository.entity.QmsIssueTicketProcess;
import com.nflg.wms.repository.entity.QmsIssueTicketToDo;
import com.nflg.wms.repository.mapper.QmsIssueTicketMapper; import com.nflg.wms.repository.mapper.QmsIssueTicketMapper;
import com.nflg.wms.repository.service.IFileUploadRecordService; import com.nflg.wms.repository.service.IFileUploadRecordService;
import com.nflg.wms.repository.service.IQmsIssueTicketProcessService; import com.nflg.wms.repository.service.IQmsIssueTicketProcessService;
import com.nflg.wms.repository.service.IQmsIssueTicketService; import com.nflg.wms.repository.service.IQmsIssueTicketService;
import com.nflg.wms.repository.service.IQmsIssueTicketToDoService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -35,6 +37,7 @@ public class QmsIssueTicketServiceImpl
private final IFileUploadRecordService fileUploadRecordService; private final IFileUploadRecordService fileUploadRecordService;
private final IQmsIssueTicketProcessService issueTicketProcessService; private final IQmsIssueTicketProcessService issueTicketProcessService;
private final IQmsIssueTicketToDoService issueTicketToDoService;
@Override @Override
public PageData<QmsIssueTicketVO> search(QmsIssueTicketSearchQO request) { public PageData<QmsIssueTicketVO> search(QmsIssueTicketSearchQO request) {
@ -51,6 +54,11 @@ public class QmsIssueTicketServiceImpl
.list() .list()
.stream().map(QmsIssueTicketProcess::getIssueTicketId).distinct().collect(Collectors.toList()); .stream().map(QmsIssueTicketProcess::getIssueTicketId).distinct().collect(Collectors.toList());
List<Long> todoTicketIds = issueTicketToDoService.lambdaQuery()
.eq(QmsIssueTicketToDo::getHandlerUserId, currentUserId)
.list()
.stream().map(QmsIssueTicketToDo::getTicketId).distinct().collect(Collectors.toList());
var query = lambdaQuery() var query = lambdaQuery()
// 数据权限只能看到与当前登录人相关的工单 // 数据权限只能看到与当前登录人相关的工单
.and(w -> { .and(w -> {
@ -59,6 +67,9 @@ public class QmsIssueTicketServiceImpl
if (CollectionUtil.isNotEmpty(processTicketIds)) { if (CollectionUtil.isNotEmpty(processTicketIds)) {
w.or().in(QmsIssueTicket::getId, processTicketIds); w.or().in(QmsIssueTicket::getId, processTicketIds);
} }
if (CollectionUtil.isNotEmpty(todoTicketIds)) {
w.or().in(QmsIssueTicket::getId, todoTicketIds);
}
}) })
.like(StrUtil.isNotBlank(request.getTicketNo()), QmsIssueTicket::getTicketNo, request.getTicketNo()) .like(StrUtil.isNotBlank(request.getTicketNo()), QmsIssueTicket::getTicketNo, request.getTicketNo())
.like(StrUtil.isNotBlank(request.getTicketTitle()), QmsIssueTicket::getTicketTitle, request.getTicketTitle()) .like(StrUtil.isNotBlank(request.getTicketTitle()), QmsIssueTicket::getTicketTitle, request.getTicketTitle())