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 a04d6a60..50f875c9 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 @@ -5,6 +5,7 @@ import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.qo.QmsIssueTicketAddQO; import com.nflg.wms.common.pojo.qo.QmsIssueTicketAuditQO; +import com.nflg.wms.common.pojo.qo.QmsIssueTicketPdiAddQO; import com.nflg.wms.common.pojo.qo.QmsIssueTicketSearchQO; import com.nflg.wms.common.pojo.vo.QmsIssueTicketDetailVO; import com.nflg.wms.common.pojo.vo.QmsIssueTicketVO; @@ -43,6 +44,16 @@ public class QmsIssueTicketController extends BaseController { return ApiResult.success(); } + /** + * 新增PDI检测工单 + * 同步创建工单,异步创建工单处理记录 + */ + @PostMapping("addPdiTicket") + public ApiResult addPdiTicket(@Valid @RequestBody QmsIssueTicketPdiAddQO request) { + issueTicketControllerService.addPdiTicket(request); + return ApiResult.success(); + } + /** * 审核质量问题工单 * 更新审批状态、审批意见、审批人信息,并根据审批结果更新工单状态 diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsIssueTicketProcessController.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsIssueTicketProcessController.java index d216ae54..45960af3 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsIssueTicketProcessController.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsIssueTicketProcessController.java @@ -2,8 +2,12 @@ package com.nflg.qms.admin.controller; import com.nflg.qms.admin.service.QmsIssueTicketProcessControllerService; import com.nflg.wms.common.pojo.ApiResult; +import com.nflg.wms.common.pojo.qo.QmsIssueTicketProcessAddQO; import com.nflg.wms.starter.BaseController; import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -16,4 +20,13 @@ public class QmsIssueTicketProcessController extends BaseController { @Resource private QmsIssueTicketProcessControllerService issueTicketProcessControllerService; + + /** + * 新增工单处理 + */ + @PostMapping("add") + public ApiResult add(@Valid @RequestBody QmsIssueTicketProcessAddQO request) { + issueTicketProcessControllerService.add(request); + return ApiResult.success(); + } } 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 b34405f3..6e7707f4 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 @@ -7,6 +7,7 @@ import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.exception.NflgException; import com.nflg.wms.common.pojo.qo.QmsIssueTicketAddQO; import com.nflg.wms.common.pojo.qo.QmsIssueTicketAuditQO; +import com.nflg.wms.common.pojo.qo.QmsIssueTicketPdiAddQO; import com.nflg.wms.common.pojo.vo.*; import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.common.util.VUtil; @@ -53,6 +54,9 @@ public class QmsIssueTicketControllerService { @Resource private IDictionaryItemService dictionaryItemService; + @Resource + private QmsIssueTicketProcessControllerService issueTicketProcessControllerService; + /** * 审核质量问题工单 * 更新审批状态、审批意见、审批人信息、事故类型,并更新工单状态 @@ -126,6 +130,42 @@ public class QmsIssueTicketControllerService { issueTicketService.save(entity); } + /** + * 新增PDI检测工单 + * 工单编号自动生成(序号38),来源类型固定为1(PDI检测任务),状态默认为0(待流转) + * 异步新增工单处理记录 + */ + @Transactional(rollbackFor = Exception.class) + public void addPdiTicket(@Valid QmsIssueTicketPdiAddQO request) { + Long userId = UserUtil.getUserId(); + String userName = UserUtil.getUserName(); + LocalDateTime now = LocalDateTime.now(); + + // 自动生成工单编号 + String ticketNo = basdeSerialNumberControllerService.generateSerialNumber(38); + + QmsIssueTicket entity = new QmsIssueTicket() + .setSourceType((short) 1) + .setSourceId(request.getTaskRecordId()) + .setTicketNo(ticketNo) + .setStatus((short) 0) + .setCreateUserId(userId) + .setCreateUserName(userName) + .setCreateTime(now) + .setUpdateUserId(userId) + .setUpdateUserName(userName) + .setUpdateTime(now); + + issueTicketService.save(entity); + + // 异步新增工单处理记录 + issueTicketProcessControllerService.addAsync( + entity.getId(), + request.getHandlerUserId(), + request.getInspectionResultIds() + ); + } + /** * 通过来料检测任务ID发起IQC检测任务类型质量问题工单 * 工单编号自动生成,来源类型固定为0(IQC检测任务),状态默认为0(待流转) diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketProcessControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketProcessControllerService.java index 6b388368..bfb4d38b 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketProcessControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketProcessControllerService.java @@ -1,9 +1,19 @@ package com.nflg.qms.admin.service; +import com.nflg.wms.common.constant.STATE; +import com.nflg.wms.common.exception.NflgException; +import com.nflg.wms.common.pojo.qo.QmsIssueTicketProcessAddQO; +import com.nflg.wms.repository.entity.QmsIssueTicketProcess; +import com.nflg.wms.repository.entity.User; import com.nflg.wms.repository.service.IQmsIssueTicketProcessService; +import com.nflg.wms.repository.service.IUserService; import jakarta.annotation.Resource; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.stream.Collectors; + /** * 质量问题工单处理 ControllerService */ @@ -12,4 +22,39 @@ public class QmsIssueTicketProcessControllerService { @Resource private IQmsIssueTicketProcessService issueTicketProcessService; + + @Resource + private IUserService userService; + + /** + * 新增工单处理(同步,供 Controller 直接调用) + */ + public void add(QmsIssueTicketProcessAddQO request) { + doAdd(request.getIssueTicketId(), request.getHandlerUserId(), request.getTaskResultIds()); + } + + /** + * 异步新增工单处理(供内部服务调用) + */ + @Async("ticketTaskExecutor") + public void addAsync(Long issueTicketId, Long handlerUserId, List taskResultIds) { + doAdd(issueTicketId, handlerUserId, taskResultIds); + } + + private void doAdd(Long issueTicketId, Long handlerUserId, List taskResultIds) { + User user = userService.getById(handlerUserId); + if (user == null) { + throw new NflgException(STATE.BusinessError, "处理人用户不存在"); + } + + QmsIssueTicketProcess entity = new QmsIssueTicketProcess() + .setIssueTicketId(issueTicketId) + .setHandlerUserId(handlerUserId) + .setHandlerUserName(user.getUserName()) + .setTaskResultIds(taskResultIds.stream() + .map(String::valueOf) + .collect(Collectors.joining(","))); + + issueTicketProcessService.save(entity); + } } diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiInspectionResultsControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiInspectionResultsControllerService.java index b10512bc..d08e9014 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiInspectionResultsControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiInspectionResultsControllerService.java @@ -181,7 +181,7 @@ public class QmsPdiInspectionResultsControllerService { taskRecordService.lambdaUpdate() .eq(QmsPdiTaskRecord::getId, taskRecord.getId()) .set(QmsPdiTaskRecord::getInspectionInspection, - request.getOverallResult() != null && request.getOverallResult() ? "合格" : "不合格") + request.getOverallResult() != null && request.getOverallResult()) .update(); // 5. 设置检测完成时间,状态改为已完成 diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIssueTicketPdiAddQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIssueTicketPdiAddQO.java new file mode 100644 index 00000000..456a42ae --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIssueTicketPdiAddQO.java @@ -0,0 +1,32 @@ +package com.nflg.wms.common.pojo.qo; + +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +/** + * PDI检测工单 新增参数 + */ +@Data +public class QmsIssueTicketPdiAddQO { + + /** + * PDI检测任务记录ID(QmsPdiTaskRecord.ID),存入工单的source_id + */ + @NotNull(message = "PDI检测任务记录ID不能为空") + private Long taskRecordId; + + /** + * 处理人用户ID + */ + @NotNull(message = "处理人用户ID不能为空") + private Long handlerUserId; + + /** + * PDI检测结果ID列表(qms_pdi_inspection_results.ID),存入工单处理的task_result_ids + */ + @NotEmpty(message = "检测结果ID列表不能为空") + private List inspectionResultIds; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIssueTicketProcessAddQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIssueTicketProcessAddQO.java new file mode 100644 index 00000000..cd178657 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIssueTicketProcessAddQO.java @@ -0,0 +1,32 @@ +package com.nflg.wms.common.pojo.qo; + +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +/** + * 质量问题工单处理 新增参数 + */ +@Data +public class QmsIssueTicketProcessAddQO { + + /** + * 任务结果ID列表(QmsPdiTaskRecord.ID) + */ + @NotEmpty(message = "任务结果ID列表不能为空") + private List taskResultIds; + + /** + * 处理人用户ID + */ + @NotNull(message = "处理人用户ID不能为空") + private Long handlerUserId; + + /** + * 质量问题工单ID + */ + @NotNull(message = "质量问题工单ID不能为空") + private Long issueTicketId; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTaskRecordDefectPageVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTaskRecordDefectPageVO.java index 3bba32aa..64330088 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTaskRecordDefectPageVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTaskRecordDefectPageVO.java @@ -61,9 +61,9 @@ public class QmsPdiTaskRecordDefectPageVO { private Integer inspectionEnable; /** - * 质检结果 + * 质检结果:true=合格,false=不合格 */ - private String inspectionInspection; + private Boolean inspectionInspection; /** * 质检人名字 diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTaskRecordPageVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTaskRecordPageVO.java index 60f78b60..186c6d16 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTaskRecordPageVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTaskRecordPageVO.java @@ -61,9 +61,9 @@ public class QmsPdiTaskRecordPageVO { private Integer inspectionEnable; /** - * 质检结果 + * 质检结果:true=合格,false=不合格 */ - private String inspectionInspection; + private Boolean inspectionInspection; /** * 质检人名字(通过 detection_rules.inspector_id -> user.user_name) diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsPdiTaskRecord.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsPdiTaskRecord.java index 362d9132..d63832b1 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsPdiTaskRecord.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsPdiTaskRecord.java @@ -43,9 +43,9 @@ public class QmsPdiTaskRecord implements Serializable { private Integer inspectionEnable; /** - * 质检结果 + * 质检结果:true=合格,false=不合格 */ - private String inspectionInspection; + private Boolean inspectionInspection; /** * 帮办人ID(user.id)