Merge remote-tracking branch '惠信/feature/NoScanning' into feature/NoScanning
This commit is contained in:
commit
95925bc2fd
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue