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

@ -740,10 +740,7 @@ public class IncomingInspectionTaskControllerService {
.eq(QmsQualityInspector::getInspectionType, 1) .eq(QmsQualityInspector::getInspectionType, 1)
.last("LIMIT 1") .last("LIMIT 1")
.one(); .one();
if (Objects.isNull(inspector)){ return incomingInspectionTaskService.todoSearch(request, Objects.isNull(inspector) ? 0 : inspector.getId());
return Page.of(0,0,0);
}
return incomingInspectionTaskService.todoSearch(request, inspector.getId());
} }
/** /**

View File

@ -116,34 +116,34 @@ public class WmsIncomingInspectionTaskCallbackService {
* 向WMS系统发送库存检验任务回调 * 向WMS系统发送库存检验任务回调
*/ */
private void inventory(QmsIncomingInspectionTaskVO taskVO, Short processingResult) { private void inventory(QmsIncomingInspectionTaskVO taskVO, Short processingResult) {
WmsInventoryInspectionTaskCallbackQO qo = new WmsInventoryInspectionTaskCallbackQO() // WmsInventoryInspectionTaskCallbackQO qo = new WmsInventoryInspectionTaskCallbackQO()
.setTaskNo(taskVO.getTaskNo()) // .setTaskNo(taskVO.getTaskNo())
.setRequestNo(taskVO.getRequestNo()) // .setRequestNo(taskVO.getRequestNo())
.setMaterialNo(taskVO.getMaterialNo()) // .setMaterialNo(taskVO.getMaterialNo())
.setFactory(taskVO.getFactory()) // .setFactory(taskVO.getFactory())
.setWarehouse(taskVO.getWarehouse()) // .setWarehouse(taskVO.getWarehouse())
.setStorageLocation(taskVO.getStorageLocation()) // .setStorageLocation(taskVO.getStorageLocation())
.setStorageDays(taskVO.getStorageDays()) // .setStorageDays(taskVO.getStorageDays())
.setDetectionQty(taskVO.getDetectionQty()) // .setDetectionQty(taskVO.getDetectionQty())
.setQualifiedQty(taskVO.getQualifiedQty()) // .setQualifiedQty(taskVO.getQualifiedQty())
.setUnqualifiedQty(taskVO.getUnqualifiedQty()) // .setUnqualifiedQty(taskVO.getUnqualifiedQty())
.setInspectionResult(taskVO.getInspectionResult()) // .setInspectionResult(taskVO.getInspectionResult())
.setProcessingResult(processingResult); // .setProcessingResult(processingResult);
//
List<QmsIncomingInspectionTaskRecord> records = incomingInspectionTaskRecordService.lambdaQuery() // List<QmsIncomingInspectionTaskRecord> records = incomingInspectionTaskRecordService.lambdaQuery()
.select(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo, QmsIncomingInspectionTaskRecord::getQualified) // .select(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo, QmsIncomingInspectionTaskRecord::getQualified)
.eq(QmsIncomingInspectionTaskRecord::getTaskId, taskVO.getId()) // .eq(QmsIncomingInspectionTaskRecord::getTaskId, taskVO.getId())
.list(); // .list();
qo.setQualifiedMaterialUniqueNo(records.stream() // qo.setQualifiedMaterialUniqueNo(records.stream()
.filter(QmsIncomingInspectionTaskRecord::getQualified) // .filter(QmsIncomingInspectionTaskRecord::getQualified)
.map(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo) // .map(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo)
.toList() // .toList()
); // );
qo.setUnqualifiedMaterialUniqueNo(records.stream() // qo.setUnqualifiedMaterialUniqueNo(records.stream()
.filter(record -> !record.getQualified()) // .filter(record -> !record.getQualified())
.map(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo) // .map(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo)
.toList() // .toList()
); // );
// 注意本方法不可被 @Transactional 包裹否则下面"标记失败"的更新会随异常一起回滚导致失败状态丢失 // 注意本方法不可被 @Transactional 包裹否则下面"标记失败"的更新会随异常一起回滚导致失败状态丢失
try { try {
@ -151,10 +151,8 @@ public class WmsIncomingInspectionTaskCallbackService {
inventoryService.lambdaUpdate() inventoryService.lambdaUpdate()
.set(WmsInventory::getDetectionStatus, (short) 2) .set(WmsInventory::getDetectionStatus, (short) 2)
.set(WmsInventory::getDetectionResults, taskVO.getInspectionResult()) .set(WmsInventory::getDetectionResults, taskVO.getInspectionResult())
.eq(WmsInventory::getMaterialNo, taskVO.getMaterialNo()) .eq(WmsInventory::getId, Long.valueOf(taskVO.getRequestNo()))
.eq(WmsInventory::getFactoryNo, taskVO.getFactory()) .eq(WmsInventory::getDetectionStatus, (short) 1)
.eq(WmsInventory::getWarehouseNo, taskVO.getWarehouse())
.eq(WmsInventory::getBinLocation, taskVO.getStorageLocation())
.update(); .update();
updateCallbackResult(taskVO.getId(), true); updateCallbackResult(taskVO.getId(), true);
} catch (Exception e) { } catch (Exception e) {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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