Merge remote-tracking branch 'origin/qms/develop' into qms/develop

This commit is contained in:
yf001217 2026-06-14 17:55:09 +08:00
commit 27538c238e
8 changed files with 70 additions and 78 deletions

View File

@ -536,7 +536,7 @@ public class IncomingInspectionTaskControllerService {
return aqls.stream()
.filter(aql -> Objects.equals(aql.getId(), id))
.findFirst()
.orElseThrow(() -> new NflgException(STATE.BusinessError,"未找到AQL"));
.orElseThrow(() -> new NflgException(STATE.BusinessError, "未找到AQL"));
}
private Pair<Long, Short> calculatedAqlType(QmsIncomingInspectionTask task, QmsInspectionStandard standard
@ -740,10 +740,7 @@ public class IncomingInspectionTaskControllerService {
.eq(QmsQualityInspector::getInspectionType, 1)
.last("LIMIT 1")
.one();
if (Objects.isNull(inspector)){
return Page.of(0,0,0);
}
return incomingInspectionTaskService.todoSearch(request, inspector.getId());
return incomingInspectionTaskService.todoSearch(request, Objects.isNull(inspector) ? 0 : inspector.getId());
}
/**
@ -758,7 +755,7 @@ public class IncomingInspectionTaskControllerService {
.eq(QmsQualityInspector::getInspectionType, 1)
.last("LIMIT 1")
.one();
if (Objects.isNull(inspector)){
if (Objects.isNull(inspector)) {
return new QmsIncomingInspectionTaskCountVO();
}
return incomingInspectionTaskService.countByCurrentUser(inspector.getId());
@ -786,7 +783,7 @@ public class IncomingInspectionTaskControllerService {
// 校验是否存在已检任务
boolean hasFinished = tasks.stream()
.anyMatch(t -> Objects.equals(t.getInspectionStatus(),(short)2));
.anyMatch(t -> Objects.equals(t.getInspectionStatus(), (short) 2));
VUtil.trueThrowBusinessError(hasFinished)
.throwMessage("已检状态的任务不允许转办");
@ -949,7 +946,7 @@ public class IncomingInspectionTaskControllerService {
inspectionStandardItemService.lambdaQuery()
.select(QmsInspectionStandardItem::getId, QmsInspectionStandardItem::getPdfDrawing)
.eq(QmsInspectionStandardItem::getInspectionStandardId, standard.getId())
.eq(QmsInspectionStandardItem::getItemType,1)
.eq(QmsInspectionStandardItem::getItemType, 1)
.list()
.stream()
.map(it -> new PdfDrawingVO(it.getId(), it.getPdfDrawing()))
@ -995,7 +992,7 @@ public class IncomingInspectionTaskControllerService {
QmsIncomingInspectionTask task = incomingInspectionTaskService.getById(request.getTaskId());
VUtil.trueThrowBusinessError(Objects.isNull(task)).throwMessage("任务不存在");
VUtil.trueThrowBusinessError(task.getInspectionStatus() == 2).throwMessage("该任务已完成");
if(StrUtil.isNotBlank(request.getMaterialUniqueNo())){
if (StrUtil.isNotBlank(request.getMaterialUniqueNo())) {
VUtil.trueThrowBusinessError(!incomingInspectionTaskQrService.lambdaQuery()
.eq(QmsIncomingInspectionTaskQr::getTaskId, request.getTaskId())
.eq(QmsIncomingInspectionTaskQr::getMaterialQrCode, request.getMaterialUniqueNo())

View File

@ -83,7 +83,7 @@ public class WmsIncomingInspectionTaskCallbackService {
qo.setUnqualifiedQty(0);
qo.setQrCodes(records.stream()
.filter(QmsIncomingInspectionTaskRecord::getQualified)
.map(r-> new MaterialQrCodeDTO()
.map(r -> new MaterialQrCodeDTO()
.setQrCode(r.getMaterialUniqueNo())
.setInspectionQty(r.getInspectionQty())
.setUnqualifiedQty(r.getUnqualifiedQty())
@ -93,7 +93,7 @@ public class WmsIncomingInspectionTaskCallbackService {
} else {
qo.setUnqualifiedQty(taskVO.getUnqualifiedQty());
qo.setQrCodes(records.stream()
.map(r-> new MaterialQrCodeDTO()
.map(r -> new MaterialQrCodeDTO()
.setQrCode(r.getMaterialUniqueNo())
.setInspectionQty(r.getInspectionQty())
.setUnqualifiedQty(r.getUnqualifiedQty())
@ -116,34 +116,34 @@ public class WmsIncomingInspectionTaskCallbackService {
* 向WMS系统发送库存检验任务回调
*/
private void inventory(QmsIncomingInspectionTaskVO taskVO, Short processingResult) {
WmsInventoryInspectionTaskCallbackQO qo = new WmsInventoryInspectionTaskCallbackQO()
.setTaskNo(taskVO.getTaskNo())
.setRequestNo(taskVO.getRequestNo())
.setMaterialNo(taskVO.getMaterialNo())
.setFactory(taskVO.getFactory())
.setWarehouse(taskVO.getWarehouse())
.setStorageLocation(taskVO.getStorageLocation())
.setStorageDays(taskVO.getStorageDays())
.setDetectionQty(taskVO.getDetectionQty())
.setQualifiedQty(taskVO.getQualifiedQty())
.setUnqualifiedQty(taskVO.getUnqualifiedQty())
.setInspectionResult(taskVO.getInspectionResult())
.setProcessingResult(processingResult);
List<QmsIncomingInspectionTaskRecord> records = incomingInspectionTaskRecordService.lambdaQuery()
.select(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo, QmsIncomingInspectionTaskRecord::getQualified)
.eq(QmsIncomingInspectionTaskRecord::getTaskId, taskVO.getId())
.list();
qo.setQualifiedMaterialUniqueNo(records.stream()
.filter(QmsIncomingInspectionTaskRecord::getQualified)
.map(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo)
.toList()
);
qo.setUnqualifiedMaterialUniqueNo(records.stream()
.filter(record -> !record.getQualified())
.map(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo)
.toList()
);
// WmsInventoryInspectionTaskCallbackQO qo = new WmsInventoryInspectionTaskCallbackQO()
// .setTaskNo(taskVO.getTaskNo())
// .setRequestNo(taskVO.getRequestNo())
// .setMaterialNo(taskVO.getMaterialNo())
// .setFactory(taskVO.getFactory())
// .setWarehouse(taskVO.getWarehouse())
// .setStorageLocation(taskVO.getStorageLocation())
// .setStorageDays(taskVO.getStorageDays())
// .setDetectionQty(taskVO.getDetectionQty())
// .setQualifiedQty(taskVO.getQualifiedQty())
// .setUnqualifiedQty(taskVO.getUnqualifiedQty())
// .setInspectionResult(taskVO.getInspectionResult())
// .setProcessingResult(processingResult);
//
// List<QmsIncomingInspectionTaskRecord> records = incomingInspectionTaskRecordService.lambdaQuery()
// .select(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo, QmsIncomingInspectionTaskRecord::getQualified)
// .eq(QmsIncomingInspectionTaskRecord::getTaskId, taskVO.getId())
// .list();
// qo.setQualifiedMaterialUniqueNo(records.stream()
// .filter(QmsIncomingInspectionTaskRecord::getQualified)
// .map(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo)
// .toList()
// );
// qo.setUnqualifiedMaterialUniqueNo(records.stream()
// .filter(record -> !record.getQualified())
// .map(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo)
// .toList()
// );
// 注意本方法不可被 @Transactional 包裹否则下面"标记失败"的更新会随异常一起回滚导致失败状态丢失
try {
@ -151,10 +151,8 @@ public class WmsIncomingInspectionTaskCallbackService {
inventoryService.lambdaUpdate()
.set(WmsInventory::getDetectionStatus, (short) 2)
.set(WmsInventory::getDetectionResults, taskVO.getInspectionResult())
.eq(WmsInventory::getMaterialNo, taskVO.getMaterialNo())
.eq(WmsInventory::getFactoryNo, taskVO.getFactory())
.eq(WmsInventory::getWarehouseNo, taskVO.getWarehouse())
.eq(WmsInventory::getBinLocation, taskVO.getStorageLocation())
.eq(WmsInventory::getId, Long.valueOf(taskVO.getRequestNo()))
.eq(WmsInventory::getDetectionStatus, (short) 1)
.update();
updateCallbackResult(taskVO.getId(), true);
} catch (Exception e) {
@ -191,7 +189,7 @@ public class WmsIncomingInspectionTaskCallbackService {
public void process(Long taskId) {
QmsIncomingInspectionTaskVO taskVO = incomingInspectionTaskService.getDetail(taskId);
VUtil.trueThrowBusinessError(Objects.equals(taskVO.getCallbackResult(), true)).throwMessage("请勿重复回调");
VUtil.trueThrowBusinessError(!Objects.equals(taskVO.getInspectionStatus(),(short)2)).throwMessage("来料检验任务状态不允许回调");
VUtil.trueThrowBusinessError(!Objects.equals(taskVO.getInspectionStatus(), (short) 2)).throwMessage("来料检验任务状态不允许回调");
if (taskVO.getInspectionResult()) {
process(taskVO, (short) 0);
} else {
@ -214,10 +212,10 @@ public class WmsIncomingInspectionTaskCallbackService {
private void process(QmsIncomingInspectionTaskVO taskVO, Short processingResult) {
switch (taskVO.getInspectionType()) {
case 0:
incoming(taskVO,processingResult);
incoming(taskVO, processingResult);
break;
case 1:
inventory(taskVO,processingResult);
inventory(taskVO, processingResult);
break;
default:
VUtil.trueThrowBusinessError(true).throwMessage("无效的检验类型:" + taskVO.getInspectionType());
@ -233,7 +231,7 @@ public class WmsIncomingInspectionTaskCallbackService {
private void process(Long taskId, Short processingResult) {
QmsIncomingInspectionTaskVO taskVO = incomingInspectionTaskService.getDetail(taskId);
VUtil.trueThrowBusinessError(Objects.equals(taskVO.getCallbackResult(), true)).throwMessage("请勿重复回调");
VUtil.trueThrowBusinessError(!Objects.equals(taskVO.getInspectionStatus(),(short)2)).throwMessage("来料检验任务状态不允许回调");
VUtil.trueThrowBusinessError(!Objects.equals(taskVO.getInspectionStatus(), (short) 2)).throwMessage("来料检验任务状态不允许回调");
process(taskVO, processingResult);
}
}

View File

@ -231,6 +231,7 @@ public class NormalPGIController extends BaseController {
@PostMapping("noScanSubmit")
@ApiMark(moduleName = "送货单管理", apiName = "无码收货确认")
public ApiResult<Void> noScanSubmit(@Valid @RequestBody @NotNull NoScanningRequest request) {
request.getItems().removeIf(it -> CollectionUtil.isEmpty(it.getDatas()));
WmsSrmOrder order = wmsSrmOrderService.lambdaQuery()
.eq(Objects.nonNull(request.getId()), WmsSrmOrder::getId, request.getId())
.eq(StrUtil.isNotBlank(request.getNo()), WmsSrmOrder::getNoteNum, request.getNo())

View File

@ -36,6 +36,5 @@ public class NoScanningItemRequest {
* 明细列表
*/
@Valid
@NotEmpty
private List<NoScanningItemDataRequest> datas;
}

View File

@ -127,8 +127,8 @@ public class InventoryExpirationInspectionScheduledTask {
InventoryDetectionApplyQO request = new InventoryDetectionApplyQO();
request.setInventoryId(inventory.getId());
request.setInspectionQty(inventory.getNum().intValue());
request.setStorageDays(Math.max(1, (int) ChronoUnit.DAYS.between(inventory.getCreateTime(), now)));
// request.setInspectionQty(inventory.getNum().intValue());
// request.setStorageDays(Math.max(1, (int) ChronoUnit.DAYS.between(inventory.getCreateTime(), now)));
try {
qmsService.pushInventoryInspection(request);
appliedKeys.add(inspectionKey);

View File

@ -1,5 +1,7 @@
package com.nflg.wms.admin.service;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.nflg.wms.common.pojo.ApiResult;
@ -29,6 +31,7 @@ import org.springframework.web.client.RestTemplate;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
@ -177,19 +180,19 @@ public class QmsService {
VUtil.trueThrowBusinessError(Objects.isNull(inventory)).throwMessage("未找到对应库存");
VUtil.trueThrowBusinessError(Objects.equals(inventory.getDetectionStatus(), (short) 1))
.throwMessage("该库存正在检测中,不能重复发起检测任务");
VUtil.trueThrowBusinessError(
Objects.isNull(inventory.getNum())
|| BigDecimal.valueOf(request.getInspectionQty()).compareTo(inventory.getNum()) > 0
).throwMessage("检验数量不能大于库存数量");
// VUtil.trueThrowBusinessError(
// Objects.isNull(inventory.getNum())
// || BigDecimal.valueOf(request.getInspectionQty()).compareTo(inventory.getNum()) > 0
// ).throwMessage("检验数量不能大于库存数量");
ExternalInventoryInspectionApplyQO apply = new ExternalInventoryInspectionApplyQO();
apply.setRequestNo(generateInventoryInspectionRequestNo(request.getInventoryId()));
apply.setRequestNo(String.valueOf(request.getInventoryId()));
apply.setMaterialNo(inventory.getMaterialNo());
apply.setFactory(inventory.getFactoryNo());
apply.setInspectionQty(request.getInspectionQty());
apply.setInspectionQty(inventory.getNum().intValue());
apply.setWarehouse(inventory.getWarehouseNo());
apply.setStorageLocation(inventory.getBinLocation());
apply.setStorageDays(request.getStorageDays());
apply.setStorageDays((int) LocalDateTimeUtil.between(inventory.getCreateTime(), LocalDateTime.now(), ChronoUnit.DAYS));
List<String> qrCodes = getInventoryInspectionQrCodes(apply);
apply.setQrCodes(qrCodes);
@ -259,10 +262,6 @@ public class QmsService {
}
private String generateInventoryInspectionRequestNo(Long inventoryId) {
return LocalDateTime.now().format(INVENTORY_INSPECTION_REQUEST_NO_FORMATTER) + inventoryId;
}
private List<String> getInventoryInspectionQrCodes(ExternalInventoryInspectionApplyQO apply) {
List<WmsQrCodeMaster> qrCodeMasters = qrCodeMasterService.lambdaQuery()
.select(WmsQrCodeMaster::getId, WmsQrCodeMaster::getBarcodeCode)
@ -304,7 +303,7 @@ public class QmsService {
/**
* 推送PDI检验申请
* @param orderNo 订单编号
* @param item 订单项
* @param item 订单项
*/
public void pushPdiInspection(String orderNo, WmsInProduceOrderItem item) {
QmsPdiTaskRecordAddQO qo = new QmsPdiTaskRecordAddQO()

View File

@ -16,17 +16,17 @@ public class InventoryDetectionApplyQO {
@NotNull(message = "库存ID不能为空")
private Long inventoryId;
/**
* 检验数量
*/
@NotNull(message = "检验数量不能为空")
@Min(value = 1, message = "检验数量必须大于0")
private Integer inspectionQty;
/**
* 存储时长单位
*/
@NotNull(message = "存储时长不能为空")
@Min(value = 1, message = "存储时长必须大于0")
private Integer storageDays;
// /**
// * 检验数量
// */
// @NotNull(message = "检验数量不能为空")
// @Min(value = 1, message = "检验数量必须大于0")
// private Integer inspectionQty;
//
// /**
// * 存储时长单位
// */
// @NotNull(message = "存储时长不能为空")
// @Min(value = 1, message = "存储时长必须大于0")
// private Integer storageDays;
}

View File

@ -81,9 +81,7 @@ public class QmsController extends BaseController {
// 找到入库的明细
WmsQcReceiveItem receiveItem = qcReceiveItemService.lambdaQuery()
.eq(WmsQcReceiveItem::getItemCode, qo.getMaterialNo())
.eq(WmsQcReceiveItem::getLineNumber, qo.getDeliveryOrderLine())
.eq(WmsQcReceiveItem::getNoteNum, qo.getDeliveryOrderNo())
.eq(WmsQcReceiveItem::getId, Long.valueOf(qo.getRequestNo()))
.one();
VUtil.trueThrowBusinessError(Objects.isNull(receiveItem))
.throwMessage(StrUtil.format("未找到对应收货明细, 质检单号: {}, 物料: {}, 收货单: {}, 行号: {}",