| | |
| | | |
| | | @Override |
| | | public OrderDetlPakout selectItem(Long orderId, String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2, String boxType3) { |
| | | return this.baseMapper.selectItem(orderId, matnr, batch,brand,standby1,standby2,standby3,boxType1,boxType2,boxType3); |
| | | // 延迟出库后,man_order_detl_pakout 会按托盘拆明细。 |
| | | // 旧的 orderId + 物料维度可能命中多条记录,不能再用 mapper 返回单对象的 selectOne 语义。 |
| | | // 这里统一改为列表查询并按 id 取第一条,避免 TooManyResultsException;需要精确回写时请优先使用 pallet_id。 |
| | | return selectFirst(buildItemWrapper(orderId, null, matnr, batch, brand, standby1, standby2, standby3, boxType1, boxType2, boxType3)); |
| | | } |
| | | |
| | | @Override |
| | | public OrderDetlPakout selectItem(String orderNo, String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2, String boxType3) { |
| | | return this.baseMapper.selectItemByOrderNo(orderNo, matnr, batch,brand,standby1,standby2,standby3,boxType1,boxType2,boxType3); |
| | | // 同上,orderNo + 物料维度在新模型中不保证唯一,只作为旧数据的兜底匹配。 |
| | | return selectFirst(buildItemWrapper(null, orderNo, matnr, batch, brand, standby1, standby2, standby3, boxType1, boxType2, boxType3)); |
| | | } |
| | | |
| | | @Override |
| | |
| | | if (Cools.isEmpty(orderNo) || Cools.isEmpty(palletId)) { |
| | | return null; |
| | | } |
| | | return this.selectOne(new EntityWrapper<OrderDetlPakout>() |
| | | .eq("order_no", orderNo) |
| | | .eq("pallet_id", palletId)); |
| | | // orderNo + palletId 是延迟出库订单明细的精确匹配键。 |
| | | // 仍然使用 selectList 取第一条,防止历史脏数据里同一托盘重复时 selectOne 直接中断定时线程。 |
| | | EntityWrapper<OrderDetlPakout> wrapper = new EntityWrapper<>(); |
| | | wrapper.eq("order_no", orderNo) |
| | | .eq("pallet_id", palletId) |
| | | .orderBy("id", true); |
| | | return selectFirst(wrapper); |
| | | } |
| | | |
| | | @Override |
| | |
| | | public boolean increaseWorkQty(Long orderId, String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2, String boxType3, Double workQty) { |
| | | return this.baseMapper.increaseWorkQty(orderId, matnr, batch,brand,standby1,standby2,standby3,boxType1,boxType2,boxType3, workQty) > 0; |
| | | } |
| | | |
| | | private EntityWrapper<OrderDetlPakout> buildItemWrapper(Long orderId, String orderNo, String matnr, String batch, String brand, |
| | | String standby1, String standby2, String standby3, |
| | | String boxType1, String boxType2, String boxType3) { |
| | | EntityWrapper<OrderDetlPakout> wrapper = new EntityWrapper<>(); |
| | | wrapper.eq("matnr", matnr) |
| | | .eq("batch", batch) |
| | | .eq("brand", brand) |
| | | .eq("standby1", standby1) |
| | | .eq("standby2", standby2) |
| | | .eq("standby3", standby3) |
| | | .eq("box_type1", boxType1) |
| | | .eq("box_type2", boxType2) |
| | | .eq("box_type3", boxType3) |
| | | .orderBy("id", true); |
| | | if (!Cools.isEmpty(orderId)) { |
| | | wrapper.eq("order_id", orderId); |
| | | } |
| | | if (!Cools.isEmpty(orderNo)) { |
| | | wrapper.eq("order_no", orderNo); |
| | | } |
| | | return wrapper; |
| | | } |
| | | |
| | | private OrderDetlPakout selectFirst(EntityWrapper<OrderDetlPakout> wrapper) { |
| | | List<OrderDetlPakout> rows = this.selectList(wrapper); |
| | | return Cools.isEmpty(rows) ? null : rows.get(0); |
| | | } |
| | | } |