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 f9e4bc31..1783c06d 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 @@ -57,6 +57,15 @@ public class QmsIssueTicketControllerService { @Resource private QmsIssueTicketProcessControllerService issueTicketProcessControllerService; + @Resource + private IQmsPdiTaskRecordService pdiTaskRecordService; + + @Resource + private IQmsPdiDetectionRulesService pdiDetectionRulesService; + + @Resource + private IQmsPdiInspectionResultsService pdiInspectionResultsService; + @Resource private WmsIncomingInspectionTaskCallbackService wmsIncomingInspectionTaskCallbackService; @@ -146,6 +155,36 @@ public class QmsIssueTicketControllerService { String userName = UserUtil.getUserName(); LocalDateTime now = LocalDateTime.now(); + // 查询任务记录 + QmsPdiTaskRecord taskRecord = pdiTaskRecordService.getById(request.getTaskRecordId()); + if (Objects.isNull(taskRecord)) { + throw new NflgException(STATE.BusinessError, "PDI检测任务记录不存在"); + } + + // 查询检测规则 + QmsPdiDetectionRules rules = pdiDetectionRulesService.getById(taskRecord.getDetectionRulesId()); + if (Objects.isNull(rules)) { + throw new NflgException(STATE.BusinessError, "PDI检测规则不存在"); + } + + // 根据 inspectionType 生成工单标题 + String ticketTitle; + if (Objects.equals(rules.getInspectionType(), 0)) { + // 新品:机型编号-机台号-订单编号-出厂检验-检测版本号 + ticketTitle = StrUtil.join("-", rules.getMachineNo(), taskRecord.getDeviceNo(), + taskRecord.getOrderNo(), "出厂检验", rules.getInspectionVersion()); + } else { + // 库存:机型编号-订单编号-库存检验-检测版本号 + ticketTitle = StrUtil.join("-", rules.getMachineNo(), + taskRecord.getOrderNo(), "库存检验", rules.getInspectionVersion()); + } + + // 统计不合格检测项数量 + long unqualifiedCount = pdiInspectionResultsService.lambdaQuery() + .eq(QmsPdiInspectionResults::getTaskId, request.getTaskRecordId()) + .eq(QmsPdiInspectionResults::getInspectionItemResults, false) + .count(); + // 自动生成工单编号 String ticketNo = basdeSerialNumberControllerService.generateSerialNumber(38); @@ -153,6 +192,12 @@ public class QmsIssueTicketControllerService { .setSourceType((short) 1) .setSourceId(request.getTaskRecordId()) .setTicketNo(ticketNo) + .setTicketTitle(ticketTitle) + .setProjectNo(taskRecord.getTaskNo()) + .setIncidentType(request.getIncidentType()) + .setIncidentDescription(request.getIncidentDescription()) + .setUnqualifiedQty((int) unqualifiedCount) + .setApprovalStatus((short) 0) .setStatus((short) 0) .setCreateUserId(userId) .setCreateUserName(userName) @@ -169,6 +214,20 @@ public class QmsIssueTicketControllerService { request.getHandlerUserId(), request.getInspectionResultIds() ); + + // 推送待办消息 + Long sourceTypeId = dictionaryItemService.getIdByCode("MessageType", "PDIDefectiveProductHandling"); + VUtil.trueThrowBusinessError(Objects.isNull(sourceTypeId)).throwMessage("消息类型不存在"); + User handlerUser = userService.getById(request.getHandlerUserId()); + QmsTodoItem todoItem = new QmsTodoItem() + .setCode(ticketNo) + .setIsRead(false) + .setSourceTypeId(sourceTypeId) + .setSourceId(entity.getId()) + .setCreateUserId(request.getHandlerUserId()) + .setCreateUserName(handlerUser != null ? handlerUser.getUserName() : userName) + .setCreateTime(now); + todoItemService.save(todoItem); } /** diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiDetectionRulesControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiDetectionRulesControllerService.java index fd3a0908..dda6ad64 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiDetectionRulesControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiDetectionRulesControllerService.java @@ -228,8 +228,8 @@ public class QmsPdiDetectionRulesControllerService { .setInspectionImage(item.getInspectionImage()) .setStatus(item.getStatus()) .setSort(item.getSort()) - .setSetBy(operator) - .setSetTime(now)) + .setCreateBy(operator) + .setCreateTime(now)) .collect(java.util.stream.Collectors.toList()); statusItemService.saveBatch(newStatusItems); } diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiStatusItemControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiStatusItemControllerService.java index 959aed00..810fdd06 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiStatusItemControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiStatusItemControllerService.java @@ -84,8 +84,8 @@ public class QmsPdiStatusItemControllerService { .setInspectionImage(request.getInspectionImage()) .setStatus(request.getStatus()) .setSort(1) // 新数据sort=1 - .setSetBy(operator) - .setSetTime(now); + .setCreateBy(operator) + .setCreateTime(now); statusItemService.save(entity); markMaintained(request.getDetectionRulesId()); } @@ -104,8 +104,8 @@ public class QmsPdiStatusItemControllerService { String operator = UserUtil.getUserName(); var updateChain = statusItemService.lambdaUpdate() .eq(QmsPdiDetectionRulesStatusItem::getId, request.getId()) - .set(QmsPdiDetectionRulesStatusItem::getSetBy, operator) - .set(QmsPdiDetectionRulesStatusItem::getSetTime, LocalDateTime.now()); + .set(QmsPdiDetectionRulesStatusItem::getCreateBy, operator) + .set(QmsPdiDetectionRulesStatusItem::getCreateTime, LocalDateTime.now()); if (StrUtil.isNotBlank(request.getComponentsDes())) { updateChain.set(QmsPdiDetectionRulesStatusItem::getComponentsDes, request.getComponentsDes()); } @@ -201,8 +201,8 @@ public class QmsPdiStatusItemControllerService { .setInspectionImage(dto.getInspectionImage()) .setSort(dto.getSort()) .setStatus(status) - .setSetBy(operator) - .setSetTime(now); + .setCreateBy(operator) + .setCreateTime(now); }) .collect(Collectors.toList()); if (CollectionUtil.isEmpty(entities)) { @@ -254,8 +254,8 @@ public class QmsPdiStatusItemControllerService { vo.setInspectionImage(item.getInspectionImage()); vo.setStatus(item.getStatus()); vo.setSort(item.getSort()); - vo.setSetBy(item.getSetBy()); - vo.setSetTime(item.getSetTime()); + vo.setCreateBy(item.getCreateBy()); + vo.setCreateTime(item.getCreateTime()); return vo; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/QmsPdiStatusItemExportDTO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/QmsPdiStatusItemExportDTO.java index 210ceb73..d27b8809 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/QmsPdiStatusItemExportDTO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/QmsPdiStatusItemExportDTO.java @@ -25,9 +25,9 @@ public class QmsPdiStatusItemExportDTO { @ExcelColumn("状态") private String statusName; - @ExcelColumn("设置人") - private String setBy; + @ExcelColumn("创建人") + private String createBy; - @ExcelColumn("设置时间") - private LocalDateTime setTime; + @ExcelColumn("创建时间") + private LocalDateTime createTime; } 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 index 456a42ae..c11d6fe4 100644 --- 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 @@ -1,5 +1,6 @@ package com.nflg.wms.common.pojo.qo; +import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.Data; @@ -29,4 +30,16 @@ public class QmsIssueTicketPdiAddQO { */ @NotEmpty(message = "检测结果ID列表不能为空") private List inspectionResultIds; + + /** + * 事故类型:0=一般,1=较严重,2=严重 + */ + @NotNull(message = "事故类型不能为空") + private Short incidentType; + + /** + * 事件描述(对不合格项的内容整合) + */ + @NotBlank(message = "事件描述不能为空") + private String incidentDescription; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiStatusItemGroupVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiStatusItemGroupVO.java index 0e8d5351..ecdfbf42 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiStatusItemGroupVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiStatusItemGroupVO.java @@ -63,13 +63,13 @@ public class QmsPdiStatusItemGroupVO { private Integer sort; /** - * 设置人 + * 创建人 */ - private String setBy; + private String createBy; /** - * 设置时间 + * 创建时间 */ - private LocalDateTime setTime; + private LocalDateTime createTime; } } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsPdiDetectionRulesStatusItem.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsPdiDetectionRulesStatusItem.java index 5d4b06aa..688f1cfe 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsPdiDetectionRulesStatusItem.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsPdiDetectionRulesStatusItem.java @@ -57,12 +57,12 @@ public class QmsPdiDetectionRulesStatusItem implements Serializable { private Integer sort; /** - * 设置人 + * 创建人 */ - private String setBy; + private String createBy; /** - * 设置时间 + * 创建时间 */ - private LocalDateTime setTime; + private LocalDateTime createTime; } diff --git a/nflg-wms-repository/src/main/resources/mapper/QmsPdiDetectionRulesStatusItemMapper.xml b/nflg-wms-repository/src/main/resources/mapper/QmsPdiDetectionRulesStatusItemMapper.xml index 710297a7..f84d6b84 100644 --- a/nflg-wms-repository/src/main/resources/mapper/QmsPdiDetectionRulesStatusItemMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/QmsPdiDetectionRulesStatusItemMapper.xml @@ -9,8 +9,8 @@ s.inspection_content, s.inspection_image, CASE s.status WHEN 0 THEN '静态' WHEN 1 THEN '动态' WHEN 2 THEN '特殊' ELSE '' END AS status_name, - s.set_by, - s.set_time + s.create_by, + s.create_time FROM qms_pdi_detection_rules_status_item s WHERE s.detection_rules_id = #{detectionRulesId} AND s.status IN