| | |
| | | throw new CoolException("请至少输入一个查询条件:物料编码、ASN单号、跟踪码、批次或票号"); |
| | | } |
| | | |
| | | // 如果扫描物料编码且ASN单号为空,直接从物料信息表获取,不查询收货区 |
| | | if (!Cools.isEmpty(matnrCode) && Cools.isEmpty(asnCode) && Cools.isEmpty(code) |
| | | && Cools.isEmpty(batch) && Objects.isNull(fieldIndex)) { |
| | | logger.info("=== 从物料信息表查询物料信息(不查询收货区) ==="); |
| | | logger.info("查询参数 - matnrCode: {}", matnrCode); |
| | | |
| | | Matnr matnr = matnrMapper.selectOne(new LambdaQueryWrapper<Matnr>() |
| | | .eq(Matnr::getCode, matnrCode) |
| | | .eq(Matnr::getDeleted, 0) |
| | | .last("LIMIT 1")); |
| | | |
| | | if (matnr == null) { |
| | | logger.warn("物料信息表中未找到物料编码: {}", matnrCode); |
| | | return R.ok(new ArrayList<>()); |
| | | } |
| | | |
| | | // 构造一个虚拟的 WarehouseAreasItem 对象返回物料信息 |
| | | WarehouseAreasItem item = new WarehouseAreasItem(); |
| | | item.setMatnrId(matnr.getId()); |
| | | item.setMatnrCode(matnr.getCode()); |
| | | item.setMaktx(matnr.getName()); |
| | | item.setStockUnit(matnr.getStockUnit()); |
| | | item.setUnit(matnr.getUnit()); |
| | | item.setAnfme(0.0); // 数量设为0,因为不是从收货区查询的 |
| | | item.setWorkQty(0.0); |
| | | item.setQty(0.0); |
| | | |
| | | // 设置扩展字段 |
| | | Map<String, String> fields = FieldsUtils.getFields(matnr.getFieldsIndex()); |
| | | item.setExtendFields(fields); |
| | | |
| | | List<WarehouseAreasItem> resultList = new ArrayList<>(); |
| | | resultList.add(item); |
| | | |
| | | logger.info("从物料信息表返回 1 条物料数据"); |
| | | return R.ok(resultList); |
| | | } |
| | | |
| | | //TODO 后续需根据策略配置,获取组拖数据。如:混装,按批次混装等 |
| | | LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new LambdaQueryWrapper<>(); |
| | | |
| | |
| | | logger.warn("数据库查询结果为空,可能原因:1.物料编码不匹配 2.物料未收货至收货区 3.数据已被删除"); |
| | | } |
| | | |
| | | // 如果扫描物料编码加载物料并且ASN单号为空时,从物料信息表获取物料信息并更新 |
| | | if (!Cools.isEmpty(matnrCode) && Cools.isEmpty(asnCode) && !list.isEmpty()) { |
| | | // 收集所有唯一的物料编码 |
| | | Set<String> matnrCodes = list.stream() |
| | | .map(WarehouseAreasItem::getMatnrCode) |
| | | .filter(matCode -> !Cools.isEmpty(matCode)) |
| | | .collect(Collectors.toSet()); |
| | | |
| | | // 批量查询物料信息 |
| | | if (!matnrCodes.isEmpty()) { |
| | | Map<String, Matnr> matnrMap = new HashMap<>(); |
| | | for (String matCode : matnrCodes) { |
| | | Matnr matnr = matnrMapper.selectOne(new LambdaQueryWrapper<Matnr>() |
| | | .eq(Matnr::getCode, matCode) |
| | | .eq(Matnr::getDeleted, 0) |
| | | .last("LIMIT 1")); |
| | | if (matnr != null) { |
| | | matnrMap.put(matCode, matnr); |
| | | } |
| | | } |
| | | |
| | | // 更新列表中的物料信息 |
| | | list.forEach(item -> { |
| | | String itemMatnrCode = item.getMatnrCode(); |
| | | if (!Cools.isEmpty(itemMatnrCode) && matnrMap.containsKey(itemMatnrCode)) { |
| | | Matnr matnr = matnrMap.get(itemMatnrCode); |
| | | // 从物料信息表更新物料名称 |
| | | if (!Cools.isEmpty(matnr.getName())) { |
| | | item.setMaktx(matnr.getName()); |
| | | } |
| | | // 从物料信息表更新库存单位 |
| | | if (!Cools.isEmpty(matnr.getStockUnit())) { |
| | | item.setStockUnit(matnr.getStockUnit()); |
| | | } |
| | | // 从物料信息表更新单位 |
| | | if (!Cools.isEmpty(matnr.getUnit())) { |
| | | item.setUnit(matnr.getUnit()); |
| | | } |
| | | logger.debug("已从物料信息表更新物料信息 - matnrCode: {}, name: {}, stockUnit: {}", |
| | | itemMatnrCode, matnr.getName(), matnr.getStockUnit()); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | |
| | | list.forEach(item -> { |
| | | Map<String, String> fields = FieldsUtils.getFields(item.getFieldsIndex()); |
| | | item.setExtendFields(fields); |