Merge remote-tracking branch '惠信/feature/NoScanning' into feature/NoScanning

This commit is contained in:
曹鹏飞 2026-06-09 09:51:10 +08:00
commit 95925bc2fd
1 changed files with 43 additions and 10 deletions

View File

@ -32,8 +32,12 @@ import org.springframework.web.client.RestTemplate;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
@Slf4j
@Component
@ -164,16 +168,7 @@ public class QmsService {
apply.setStorageLocation(inventory.getBinLocation());
apply.setStorageDays(request.getStorageDays());
List<String> qrCodes = qrCodeMasterService.lambdaQuery()
.select(WmsQrCodeMaster::getBarcodeCode)
.eq(WmsQrCodeMaster::getMaterialCode, apply.getMaterialNo())
.eq(WmsQrCodeMaster::getFactoryCode, apply.getFactory())
.eq(WmsQrCodeMaster::getStorageLocation, apply.getWarehouse())
.eq(WmsQrCodeMaster::getBinLocation, apply.getStorageLocation())
.list()
.stream()
.map(WmsQrCodeMaster::getBarcodeCode)
.toList();
List<String> qrCodes = getInventoryInspectionQrCodes(apply);
apply.setQrCodes(qrCodes);
log.info("推送库存检测申请到QMS申请参数={},关联二维码={}",
JSONUtil.toJsonStr(apply), JSONUtil.toJsonStr(qrCodes));
@ -243,4 +238,42 @@ public class QmsService {
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)
.eq(WmsQrCodeMaster::getMaterialCode, apply.getMaterialNo())
.eq(WmsQrCodeMaster::getFactoryCode, apply.getFactory())
.eq(WmsQrCodeMaster::getStorageLocation, apply.getWarehouse())
.eq(WmsQrCodeMaster::getBinLocation, apply.getStorageLocation())
.list();
if (qrCodeMasters.isEmpty()) {
return List.of();
}
List<Long> qrCodeIds = qrCodeMasters.stream()
.map(WmsQrCodeMaster::getId)
.filter(Objects::nonNull)
.toList();
Map<Long, List<WmsQrCodeMaster>> childrenMap = qrCodeMasterService.lambdaQuery()
.select(WmsQrCodeMaster::getParentBarcodeId, WmsQrCodeMaster::getBarcodeCode)
.in(WmsQrCodeMaster::getParentBarcodeId, qrCodeIds)
.list()
.stream()
.collect(Collectors.groupingBy(WmsQrCodeMaster::getParentBarcodeId));
LinkedHashSet<String> qrCodes = new LinkedHashSet<>();
qrCodeMasters.forEach(qrCodeMaster -> {
List<WmsQrCodeMaster> children = childrenMap.get(qrCodeMaster.getId());
if (Objects.nonNull(children) && !children.isEmpty()) {
children.stream()
.map(WmsQrCodeMaster::getBarcodeCode)
.filter(Objects::nonNull)
.forEach(qrCodes::add);
} else if (Objects.nonNull(qrCodeMaster.getBarcodeCode())) {
qrCodes.add(qrCodeMaster.getBarcodeCode());
}
});
return new ArrayList<>(qrCodes);
}
}