| | |
| | | return R.error("查询条件不能为空"); |
| | | } |
| | | |
| | | // 将ERP参数映射为Java实体字段名(驼峰格式),PageParam会自动转换为数据库字段名(下划线格式) |
| | | // 将ERP参数映射为数据库字段名(下划线格式) |
| | | Map<String, Object> queryMap = new HashMap<>(); |
| | | |
| | | // 从实体类中提取查询条件,映射为数据库字段名 |
| | | // 从实体类中提取查询条件,映射为真实的数据库字段名 |
| | | if (StringUtils.isNotBlank(condition.getLocId())) { |
| | | queryMap.put("locCode", condition.getLocId()); |
| | | queryMap.put("loc_code", condition.getLocId()); |
| | | } |
| | | if (StringUtils.isNotBlank(condition.getMatNr())) { |
| | | queryMap.put("matnrCode", condition.getMatNr()); |
| | | queryMap.put("matnr_code", condition.getMatNr()); |
| | | } |
| | | if (StringUtils.isNotBlank(condition.getPlanNo())) { |
| | | queryMap.put("trackCode", condition.getPlanNo()); |
| | | queryMap.put("track_code", condition.getPlanNo()); |
| | | } |
| | | if (StringUtils.isNotBlank(condition.getBatch())) { |
| | | queryMap.put("batch", condition.getBatch()); |
| | | } |
| | | // 注意:orderNo 和 wareHouseId 不在 LocItem 表中,需要通过其他方式查询 |
| | | // orderNo 已在后面单独处理(plat_order_code 和 plat_work_code) |
| | | // wareHouseId 需要通过 Loc 表关联查询,已在后面单独处理 |
| | | |
| | | BaseParam baseParam = new BaseParam(); |
| | | baseParam.syncMap(queryMap); |
| | |
| | | QueryWrapper<LocItem> wrapper = pageParam.buildWrapper(false); |
| | | |
| | | // 订单号/工单号/MES工单号 |
| | | // 订单号可能存储在:1) LocItem.plat_order_code 2) LocItem.plat_work_code 3) WkOrder.code (通过orderId关联) |
| | | if (StringUtils.isNotBlank(condition.getOrderNo())) { |
| | | String orderNo = condition.getOrderNo(); |
| | | wrapper.and(w -> w.eq("plat_order_code", orderNo) |
| | | .or().eq("plat_work_code", orderNo)); |
| | | |
| | | // 先查询WkOrder表,获取匹配的订单ID列表 |
| | | LambdaQueryWrapper<WkOrder> orderWrapper = new LambdaQueryWrapper<>(); |
| | | orderWrapper.eq(WkOrder::getCode, orderNo); |
| | | List<WkOrder> matchingOrders = asnOrderService.list(orderWrapper); |
| | | List<Long> matchingOrderIds = matchingOrders.stream() |
| | | .map(WkOrder::getId) |
| | | .collect(Collectors.toList()); |
| | | |
| | | // 构建订单号查询条件:LocItem表的plat_order_code、plat_work_code,或通过orderId关联WkOrder.code |
| | | wrapper.and(w -> { |
| | | w.eq("plat_order_code", orderNo) |
| | | .or().eq("plat_work_code", orderNo); |
| | | // 如果找到了匹配的订单,也查询orderId |
| | | if (!matchingOrderIds.isEmpty()) { |
| | | w.or().in("order_id", matchingOrderIds); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // 物料组(需要通过物料表关联查询) |