Compare commits

..

No commits in common. "95427511471d263b31deb52e299df451a0b89f9c" and "0da38080ca294328bda11c33cd2845b89b882be8" have entirely different histories.

7 changed files with 136 additions and 148 deletions

View File

@ -8,11 +8,13 @@ import com.nflg.wms.common.pojo.qo.*;
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskCheckDetailVO;
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskCountVO;
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskRecordItemDetailVO;
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskRecordVO;
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskVO;
import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskRecord;
import com.nflg.wms.starter.BaseController;
import jakarta.annotation.Resource;
import jakarta.validation.Valid;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -112,14 +114,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))
@ -756,10 +756,16 @@ public class IncomingInspectionTaskControllerService {
List<QmsIncomingInspectionTaskCheckItemVO> datas = inspectionStandardService.getItemsForCheck(standard.getId());
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(datas)).throwMessage("未设置检验项目");
Integer count = incomingInspectionTaskRecordService.getCount(task.getId());
VUtil.trueThrowBusinessError(count > task.getDetectionQty()).throwMessage("样本数量不能大于总数量");
Integer total;
if (Objects.equals(standard.getTestingMethodDictItemId(), dictionaryItemService.getIdByCode("InspectionStandardTestingMethod", "Full"))) {
total = task.getInspectionQty();
} else {
total = getCountOfSampling(task.getId(), task.getInspectionQty(), standard);
}
VUtil.trueThrowBusinessError(count > total).throwMessage("样本数量不能大于总数量");
return new QmsIncomingInspectionTaskCheckDetailVO()
.setItems(datas)
.setCount(Math.min(task.getDetectionQty() - count, request.getNum()))
.setCount(total - count)
.setPdfDrawings(
inspectionStandardItemService.lambdaQuery()
.select(QmsInspectionStandardItem::getPdfDrawing)
@ -806,18 +812,6 @@ 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("该任务已完成");
VUtil.trueThrowBusinessError(incomingInspectionTaskRecordService.lambdaQuery()
.eq(QmsIncomingInspectionTaskRecord::getTaskId, request.getTaskId())
.eq(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo, request.getMaterialUniqueNo())
.exists()
).throwMessage("该物料已检验过");
Integer inspectedQty = incomingInspectionTaskService.getInspectedQty(task.getId());
VUtil.trueThrowBusinessError(request.getInspectionQty() > (task.getDetectionQty() - inspectedQty))
.throwMessage("超出总检验数量");
LocalDateTime now = LocalDateTime.now();
Long userId = UserUtil.getUserId();
String userName = UserUtil.getUserName();
@ -898,6 +892,20 @@ 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())
@ -907,72 +915,9 @@ 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);
task.setUnqualifiedQty(unqualifiedQty);
if (Objects.isNull(task.getInspectionStartTime())) {
task.setInspectionStartTime(request.getInspectionStartTime());
}
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("任务不存在");
VUtil.trueThrowBusinessError(task.getInspectionStatus() == 2).throwMessage("该任务已完成");
Long userId = UserUtil.getUserId();
String userName = UserUtil.getUserName();
@ -982,6 +927,50 @@ 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::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);
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::getInspectionStatus, 2)
.set(QmsIncomingInspectionTask::getInspectionFinishTime, LocalDateTime.now())
@ -989,6 +978,11 @@ 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,4 +19,10 @@ public class QmsIncomingInspectionTaskSubmitQO {
*/
@NotNull(message = "检验结果不能为空")
private Boolean qualified;
/**
* 检验开始时间
*/
@NotNull(message = "检验开始时间不能为空")
private LocalDateTime inspectionStartTime;
}

View File

@ -1,12 +1,10 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ -23,15 +21,9 @@ public class QmsIncomingInspectionTaskTodoCheckSubmitQO {
/**
* 物料唯一编号
*/
@NotBlank(message = "物料唯一编号不能为空")
@NotNull(message = "物料唯一编号不能为空")
private String materialUniqueNo;
/**
* 检验开始时间
*/
@NotNull(message = "检验开始时间不能为空")
private LocalDateTime inspectionStartTime;
/**
* 样本数量
*/

View File

@ -37,11 +37,6 @@ public class QmsIncomingInspectionTaskVO {
*/
private String drawingNoVer;
/**
* 物料规格
*/
private String materialSpecifications;
/**
* 检验标准id
*/

View File

@ -42,8 +42,7 @@
t.callback_result,
t.warehouse,
t.storage_days,
t.storage_location,
t.detection_qty
t.storage_location
FROM qms_incoming_inspection_task t
LEFT JOIN qms_qc_material m ON t.material_id = m.id
LEFT JOIN qms_inspection_standard s ON t.inspection_standard_id = s.id
@ -178,13 +177,13 @@
</select>
<select id="getDetail" resultType="com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskVO">
SELECT t.id,
SELECT
t.id,
t.task_no,
t.material_id,
m.material_no,
m.material_desc,
m.drawing_no_ver,
m.material_specifications,
t.inspection_standard_id,
s.version AS standard_version,
t.supplier_code,

View File

@ -3,6 +3,6 @@
<mapper namespace="com.nflg.wms.repository.mapper.QmsIncomingInspectionTaskRecordMapper">
<select id="getCount" resultType="java.lang.Integer">
SELECT COALESCE(SUM(inspection_qty),0) FROM qms_incoming_inspection_task_record WHERE task_id=#{taskId}
SELECT SUM(count) FROM qms_incoming_inspection_task_record WHERE task_id=#{taskId}
</select>
</mapper>