Compare commits

...

5 Commits

Author SHA1 Message Date
funny 14221a8945 Merge remote-tracking branch 'origin/qms/develop' into qms/develop 2026-04-29 09:28:45 +08:00
funny d30414d655 Merge branch 'qms/yf' into qms/develop 2026-04-29 09:25:08 +08:00
funny 2dceac7fdd 新建工单功能添加 2026-04-29 09:24:31 +08:00
funny 7cf102fa19 Merge branch 'qms/develop' into qms/yf 2026-04-28 18:42:32 +08:00
funny 20bb9b761a pdi检验管理功能修改
新建工单功能添加
2026-04-28 18:34:46 +08:00
8 changed files with 96 additions and 24 deletions

View File

@ -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);
}
/**

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<Long> inspectionResultIds;
/**
* 事故类型0=一般1=较严重2=严重
*/
@NotNull(message = "事故类型不能为空")
private Short incidentType;
/**
* 事件描述对不合格项的内容整合
*/
@NotBlank(message = "事件描述不能为空")
private String incidentDescription;
}

View File

@ -63,13 +63,13 @@ public class QmsPdiStatusItemGroupVO {
private Integer sort;
/**
* 设置
* 创建
*/
private String setBy;
private String createBy;
/**
* 设置时间
* 创建时间
*/
private LocalDateTime setTime;
private LocalDateTime createTime;
}
}

View File

@ -57,12 +57,12 @@ public class QmsPdiDetectionRulesStatusItem implements Serializable {
private Integer sort;
/**
* 设置
* 创建
*/
private String setBy;
private String createBy;
/**
* 设置时间
* 创建时间
*/
private LocalDateTime setTime;
private LocalDateTime createTime;
}

View File

@ -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