贴标申请,仓储转运

This commit is contained in:
2026-10-13 20:51:44 +08:00
parent c2bb769676
commit b033a89aaf
4 changed files with 34 additions and 3 deletions
@@ -36,7 +36,8 @@ public final class WarehouseTransferResponses {
String destinationType, String destinationWarehouseCode, String destinationWarehouseName,
int packageCount, String deliveryMethod, boolean needRelabel, String relabelNo,
String relabelStatus, String relabelFulfillmentStatus,
String status, LocalDateTime estimatedArrivalAt, LocalDateTime createdAt) {}
String status, LocalDateTime estimatedArrivalAt, LocalDateTime createdAt,
LocalDateTime reviewedAt, LocalDateTime measuredAt, LocalDateTime outboundAt) {}
public record Detail(Long id, String transferNo, Long inboundOrderId, String inboundCode,
Long lastlegOrderId, String lastlegOrderNo, String orderType, String orderStatus,
String status,
@@ -10,6 +10,15 @@ import java.util.List;
@Mapper
public interface WarehouseTransferPalletMapper extends BaseMapper<WarehouseTransferPallet> {
record MeasurementTime(Long transferOrderId, java.time.LocalDateTime measuredAt) {}
@Select("<script>SELECT p.transfer_order_id AS transferOrderId,MAX(p.completed_at) AS measuredAt " +
"FROM ll_warehouse_transfer_pallet p JOIN ll_warehouse_transfer_order t " +
"ON t.id=p.transfer_order_id AND t.customer_id=p.customer_id " +
"WHERE t.id IN <foreach collection='orderIds' item='id' open='(' separator=',' close=')'>#{id}</foreach> " +
"AND p.completed_at IS NOT NULL GROUP BY p.transfer_order_id</script>")
List<MeasurementTime> measurementTimes(@Param("orderIds") List<Long> orderIds);
@Select("SELECT * FROM ll_warehouse_transfer_pallet WHERE customer_id=#{customerId} AND transfer_order_id=#{transferOrderId} ORDER BY sequence_no")
List<WarehouseTransferPallet> listOrder(@Param("customerId") String customerId,
@Param("transferOrderId") Long transferOrderId);
@@ -428,6 +428,7 @@ public class WarehouseTransferService {
.orderByDesc(WarehouseTransferOrder::getCreatedAt).orderByDesc(WarehouseTransferOrder::getId);
Page<WarehouseTransferOrder> result = transfers.selectPage(Page.of(query.page(), query.size()), wrapper);
Map<String, RelabelApplication> relabelApplicationsByNo = relabelApplications(result.getRecords());
Map<Long, LocalDateTime> measurementTimes = measurementTimes(result.getRecords());
List<WarehouseTransferResponses.Summary> records = result.getRecords().stream().map(value ->
new WarehouseTransferResponses.Summary(value.getId(), value.getTransferNo(), value.getInboundCode(),
value.getLastlegOrderId(), value.getLastlegOrderNo(), value.getOperatingWarehouseId(),
@@ -439,7 +440,8 @@ public class WarehouseTransferService {
value.getRelabelNo() == null || relabelApplicationsByNo.get(value.getRelabelNo()) == null
? null : relabelApplicationsByNo.get(value.getRelabelNo()).getFulfillmentStatus(),
value.getStatus(),
value.getEstimatedArrivalAt(), value.getCreatedAt())).toList();
value.getEstimatedArrivalAt(), value.getCreatedAt(), value.getReviewedAt(),
measurementTimes.get(value.getId()), value.getOutboundAt())).toList();
return new PageResult<>(records, result.getCurrent(), result.getSize(), result.getTotal(), result.getPages());
}
@@ -1320,10 +1322,17 @@ public class WarehouseTransferService {
relabel == null ? null : relabel.getStatus(),
relabel == null ? null : relabel.getFulfillmentStatus(),
value.getStatus(),
value.getEstimatedArrivalAt(), value.getCreatedAt());
value.getEstimatedArrivalAt(), value.getCreatedAt(), value.getReviewedAt(), null, value.getOutboundAt());
}).toList();
}
private Map<Long, LocalDateTime> measurementTimes(List<WarehouseTransferOrder> transferOrders) {
if (transferOrders.isEmpty()) return Map.of();
return transferPallets.measurementTimes(transferOrders.stream().map(WarehouseTransferOrder::getId).toList())
.stream().collect(Collectors.toMap(WarehouseTransferPalletMapper.MeasurementTime::transferOrderId,
WarehouseTransferPalletMapper.MeasurementTime::measuredAt));
}
private Map<String, RelabelApplication> relabelApplications(List<WarehouseTransferOrder> transferOrders) {
Set<String> relabelNos = transferOrders.stream().map(WarehouseTransferOrder::getRelabelNo)
.filter(StringUtils::hasText).collect(Collectors.toSet());