fix(inspection-task): 优化来料检验任务提交及暂存逻辑

- 优化提交检验接口,增加任务存在性和完成状态校验
- 移除暂存检验结果接口及相关代码,简化业务流程
- 在提交检验时设置和更新检验开始时间及状态
- 校验质检人员时增加空格格式调整,提升代码规范性
- 调整相关请求参数,删除无用字段,只保留检验结果及开始时间校验
- 在提交样本检验时校验任务状态,防止重复完成操作
This commit is contained in:
曹鹏飞 2026-04-29 15:09:34 +08:00
parent 1a933353a3
commit 6362d6ed7e
4 changed files with 76 additions and 72 deletions

View File

@ -112,14 +112,14 @@ public class QmsIncomingInspectionTaskController extends BaseController {
return ApiResult.success();
}
/**
* 暂存检验结果
*/
@PostMapping("pad/staging")
public ApiResult<Void> staging(@Valid @RequestBody QmsIncomingInspectionTaskSubmitQO request){
incomingInspectionTaskControllerService.staging(request);
return ApiResult.success();
}
// /**
// * 暂存检验结果
// */
// @PostMapping("pad/staging")
// public ApiResult<Void> staging(@Valid @RequestBody QmsIncomingInspectionTaskSubmitQO request){
// incomingInspectionTaskControllerService.staging(request);
// return ApiResult.success();
// }
/**
* 提交检验结果

View File

@ -560,7 +560,7 @@ public class IncomingInspectionTaskControllerService {
// 通过当前登录用户的 userId 查询对应的质检人员记录
QmsQualityInspector inspector = qualityInspectorService.lambdaQuery()
.eq(QmsQualityInspector::getUserId, userId)
.eq(QmsQualityInspector::getInspectionType,1)
.eq(QmsQualityInspector::getInspectionType, 1)
.last("LIMIT 1")
.one();
VUtil.trueThrowBusinessError(Objects.isNull(inspector))
@ -577,7 +577,7 @@ public class IncomingInspectionTaskControllerService {
// 通过当前登录用户的 userId 查询对应的质检人员记录
QmsQualityInspector inspector = qualityInspectorService.lambdaQuery()
.eq(QmsQualityInspector::getUserId, userId)
.eq(QmsQualityInspector::getInspectionType,1)
.eq(QmsQualityInspector::getInspectionType, 1)
.last("LIMIT 1")
.one();
VUtil.trueThrowBusinessError(Objects.isNull(inspector))
@ -759,7 +759,7 @@ public class IncomingInspectionTaskControllerService {
VUtil.trueThrowBusinessError(count > task.getDetectionQty()).throwMessage("样本数量不能大于总数量");
return new QmsIncomingInspectionTaskCheckDetailVO()
.setItems(datas)
.setCount(Math.min(task.getDetectionQty() - count,request.getNum()))
.setCount(Math.min(task.getDetectionQty() - count, request.getNum()))
.setPdfDrawings(
inspectionStandardItemService.lambdaQuery()
.select(QmsInspectionStandardItem::getPdfDrawing)
@ -806,6 +806,9 @@ public class IncomingInspectionTaskControllerService {
@Transactional
public void submitCheckItem(QmsIncomingInspectionTaskTodoCheckSubmitQO request) {
QmsIncomingInspectionTask task = incomingInspectionTaskService.getById(request.getTaskId());
VUtil.trueThrowBusinessError(Objects.isNull(task)).throwMessage("任务不存在");
VUtil.trueThrowBusinessError(task.getInspectionStatus() == 2).throwMessage("该任务已完成");
LocalDateTime now = LocalDateTime.now();
Long userId = UserUtil.getUserId();
String userName = UserUtil.getUserName();
@ -886,20 +889,6 @@ public class IncomingInspectionTaskControllerService {
if (!updateDatas.isEmpty()) {
incomingInspectionTaskRecordItemDataService.updateBatchById(updateDatas);
}
}
/**
* 暂存检验结果
* 1. 根据任务ID查询所有样本记录
* 2. 计算合格数量和不合格数量
* 3. 更新任务的合格数量不合格数量检验结果
* 4. 如果检验开始时间为空则更新检验开始时间
*/
@Transactional
public void staging(QmsIncomingInspectionTaskSubmitQO request) {
QmsIncomingInspectionTask task = incomingInspectionTaskService.getById(request.getTaskId());
VUtil.trueThrowBusinessError(Objects.isNull(task)).throwMessage("任务不存在");
// 查询该任务下所有检验记录
List<QmsIncomingInspectionTaskRecord> records = incomingInspectionTaskRecordService.lambdaQuery()
.eq(QmsIncomingInspectionTaskRecord::getTaskId, request.getTaskId())
@ -909,51 +898,72 @@ public class IncomingInspectionTaskControllerService {
int qualifiedQty = records.stream()
.map(QmsIncomingInspectionTaskRecord::getQualifiedQty)
.reduce(0, Integer::sum);
task.setQualifiedQty(qualifiedQty);
int unqualifiedQty = records.stream()
.map(QmsIncomingInspectionTaskRecord::getUnqualifiedQty)
.reduce(0, Integer::sum);
Long userId = UserUtil.getUserId();
String userName = UserUtil.getUserName();
LocalDateTime now = LocalDateTime.now();
// 构建更新对象
var updateWrapper = incomingInspectionTaskService.lambdaUpdate()
.eq(QmsIncomingInspectionTask::getId, request.getTaskId())
.ne(QmsIncomingInspectionTask::getInspectionStatus, 2)
.set(QmsIncomingInspectionTask::getQualifiedQty, qualifiedQty)
.set(QmsIncomingInspectionTask::getUnqualifiedQty, unqualifiedQty)
.set(QmsIncomingInspectionTask::getInspectionResult, request.getQualified())
.set(QmsIncomingInspectionTask::getUpdateUserId, userId)
.set(QmsIncomingInspectionTask::getUpdateUserName, userName)
.set(QmsIncomingInspectionTask::getUpdateTime, now);
// 如果检验开始时间为空则更新检验开始时间
task.setUnqualifiedQty(unqualifiedQty);
if (Objects.isNull(task.getInspectionStartTime())) {
updateWrapper.set(QmsIncomingInspectionTask::getInspectionStartTime, request.getInspectionStartTime());
updateWrapper.set(QmsIncomingInspectionTask::getInspectionStatus, 1);
task.setInspectionStartTime(request.getInspectionStartTime());
}
updateWrapper.update();
task.setInspectionStatus((short) 1);
incomingInspectionTaskService.updateById(task);
}
// /**
// * 暂存检验结果
// * 1. 根据任务ID查询所有样本记录
// * 2. 计算合格数量和不合格数量
// * 3. 更新任务的合格数量不合格数量检验结果
// * 4. 如果检验开始时间为空则更新检验开始时间
// */
// @Transactional
// public void staging(QmsIncomingInspectionTaskSubmitQO request) {
// QmsIncomingInspectionTask task = incomingInspectionTaskService.getById(request.getTaskId());
// VUtil.trueThrowBusinessError(Objects.isNull(task)).throwMessage("任务不存在");
//
// // 查询该任务下所有检验记录
// List<QmsIncomingInspectionTaskRecord> records = incomingInspectionTaskRecordService.lambdaQuery()
// .eq(QmsIncomingInspectionTaskRecord::getTaskId, request.getTaskId())
// .list();
//
// // 计算合格数量和不合格数量
// int qualifiedQty = records.stream()
// .map(QmsIncomingInspectionTaskRecord::getQualifiedQty)
// .reduce(0, Integer::sum);
// int unqualifiedQty = records.stream()
// .map(QmsIncomingInspectionTaskRecord::getUnqualifiedQty)
// .reduce(0, Integer::sum);
//
// Long userId = UserUtil.getUserId();
// String userName = UserUtil.getUserName();
// LocalDateTime now = LocalDateTime.now();
//
// // 构建更新对象
// var updateWrapper = incomingInspectionTaskService.lambdaUpdate()
// .eq(QmsIncomingInspectionTask::getId, request.getTaskId())
// .ne(QmsIncomingInspectionTask::getInspectionStatus, 2)
// .set(QmsIncomingInspectionTask::getQualifiedQty, qualifiedQty)
// .set(QmsIncomingInspectionTask::getUnqualifiedQty, unqualifiedQty)
// .set(QmsIncomingInspectionTask::getInspectionResult, request.getQualified())
// .set(QmsIncomingInspectionTask::getUpdateUserId, userId)
// .set(QmsIncomingInspectionTask::getUpdateUserName, userName)
// .set(QmsIncomingInspectionTask::getUpdateTime, now);
//
// // 如果检验开始时间为空则更新检验开始时间
// if (Objects.isNull(task.getInspectionStartTime())) {
// updateWrapper.set(QmsIncomingInspectionTask::getInspectionStartTime, request.getInspectionStartTime());
// updateWrapper.set(QmsIncomingInspectionTask::getInspectionStatus, 1);
// }
//
// updateWrapper.update();
// }
@Transactional
public void submit(@Valid QmsIncomingInspectionTaskSubmitQO request) {
QmsIncomingInspectionTask task = incomingInspectionTaskService.getById(request.getTaskId());
VUtil.trueThrowBusinessError(Objects.isNull(task)).throwMessage("任务不存在");
// 查询该任务下所有检验记录
List<QmsIncomingInspectionTaskRecord> records = incomingInspectionTaskRecordService.lambdaQuery()
.eq(QmsIncomingInspectionTaskRecord::getTaskId, request.getTaskId())
.list();
// 计算合格数量和不合格数量
int qualifiedQty = records.stream()
.map(QmsIncomingInspectionTaskRecord::getQualifiedQty)
.reduce(0, Integer::sum);
int unqualifiedQty = records.stream()
.map(QmsIncomingInspectionTaskRecord::getUnqualifiedQty)
.reduce(0, Integer::sum);
VUtil.trueThrowBusinessError(task.getInspectionStatus() == 2).throwMessage("该任务已完成");
Long userId = UserUtil.getUserId();
String userName = UserUtil.getUserName();
@ -963,8 +973,6 @@ public class IncomingInspectionTaskControllerService {
var updateWrapper = incomingInspectionTaskService.lambdaUpdate()
.eq(QmsIncomingInspectionTask::getId, request.getTaskId())
.ne(QmsIncomingInspectionTask::getInspectionStatus, 2)
.set(QmsIncomingInspectionTask::getQualifiedQty, qualifiedQty)
.set(QmsIncomingInspectionTask::getUnqualifiedQty, unqualifiedQty)
.set(QmsIncomingInspectionTask::getInspectionResult, request.getQualified())
.set(QmsIncomingInspectionTask::getInspectionStatus, 2)
.set(QmsIncomingInspectionTask::getInspectionFinishTime, LocalDateTime.now())
@ -972,11 +980,6 @@ public class IncomingInspectionTaskControllerService {
.set(QmsIncomingInspectionTask::getUpdateUserName, userName)
.set(QmsIncomingInspectionTask::getUpdateTime, now);
// 如果检验开始时间为空则更新检验开始时间
if (Objects.isNull(task.getInspectionStartTime())) {
updateWrapper.set(QmsIncomingInspectionTask::getInspectionStartTime, request.getInspectionStartTime());
}
updateWrapper.update();
if (task.getInspectionResult()) {

View File

@ -19,10 +19,4 @@ public class QmsIncomingInspectionTaskSubmitQO {
*/
@NotNull(message = "检验结果不能为空")
private Boolean qualified;
/**
* 检验开始时间
*/
@NotNull(message = "检验开始时间不能为空")
private LocalDateTime inspectionStartTime;
}

View File

@ -5,6 +5,7 @@ import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ -24,6 +25,12 @@ public class QmsIncomingInspectionTaskTodoCheckSubmitQO {
@NotNull(message = "物料唯一编号不能为空")
private String materialUniqueNo;
/**
* 检验开始时间
*/
@NotNull(message = "检验开始时间不能为空")
private LocalDateTime inspectionStartTime;
/**
* 样本数量
*/