diff --git a/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/controller/DeliveryTransferController.java b/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/controller/DeliveryTransferController.java index 190566ecd..5568f4b1c 100644 --- a/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/controller/DeliveryTransferController.java +++ b/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/controller/DeliveryTransferController.java @@ -37,7 +37,7 @@ public class DeliveryTransferController { @PreAuthorize("hasAuthority('" + OverseasPermissions.OUTBOUND_CREATE + "')") @Operation(summary = "Create one-click dropship outbound and push a PDA picking task") public ApiResponse createOneClick( - @AuthenticationPrincipal AuthenticatedUser user, @RequestParam String customerId, + @AuthenticationPrincipal AuthenticatedUser user, @RequestParam(required = false) String customerId, @Valid @RequestBody DeliveryRequests.OneClickOutbound request) { return ApiResponse.success(service.createOneClick(requiredCustomer(user, customerId), operator(user), request)); } @@ -48,7 +48,8 @@ public class DeliveryTransferController { public ApiResponse> oneClickCandidates( @AuthenticationPrincipal AuthenticatedUser user, @RequestParam String customerId, @RequestParam(required = false) String warehouseId) { - return ApiResponse.success(service.oneClickCandidates(requiredCustomer(user, customerId), warehouseId)); + requirePlatform(user); + return ApiResponse.success(service.oneClickCandidates(customerId, warehouseId)); } @GetMapping("/outbound-orders/return/candidates") diff --git a/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/dto/DeliveryRequests.java b/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/dto/DeliveryRequests.java index ad32ca235..d71ee02a0 100644 --- a/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/dto/DeliveryRequests.java +++ b/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/dto/DeliveryRequests.java @@ -53,7 +53,7 @@ public final class DeliveryRequests { String documentNo, String lxCode, String warehouseId, String status, String dispatchNo, String waybillNo, String vehiclePlate, String driverName, String deliveryMethod, - LocalDateTime plannedFrom, LocalDateTime plannedTo) { + LocalDateTime plannedFrom, LocalDateTime plannedTo, String outboundType) { public Query { if (page == 0) page = 1; if (size == 0) size = 20; } } diff --git a/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/dto/DeliveryResponses.java b/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/dto/DeliveryResponses.java index 91423c863..654827545 100644 --- a/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/dto/DeliveryResponses.java +++ b/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/dto/DeliveryResponses.java @@ -46,7 +46,7 @@ public final class DeliveryResponses { String destinationWarehouseCode, String destinationWarehouseName, String skuCode, int packageCount, int pickedPackageCount, String status) {} public record OutboundDetail(OutboundRow outbound, DeliveryRow delivery, List pallets) {} - public record OneClickCandidate(Long inventoryPositionId, String overseasWarehouseId, + public record OneClickCandidate(Long inventoryPositionId, String orderNo, String customerId, String customerName, String overseasWarehouseId, String overseasWarehouseName, String palletNo, String inboundCode, String skuCode, String productName, long availablePackages) {} public record ReturnOutboundCandidate(String returnNo, String overseasWarehouseId, diff --git a/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/service/DeliveryTransferService.java b/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/service/DeliveryTransferService.java index e0a3ade4c..b824679a4 100644 --- a/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/service/DeliveryTransferService.java +++ b/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/service/DeliveryTransferService.java @@ -257,7 +257,7 @@ public class DeliveryTransferService { } public List oneClickCandidates(String customerId, String warehouseId) { - return dropshipProfiles.listOutboundCandidates(required(customerId, "Customer is required"), + return dropshipProfiles.listOutboundCandidates(customerId, StringUtils.hasText(warehouseId) ? warehouseId.trim() : null).stream() .map(this::oneClickCandidate).toList(); } @@ -604,6 +604,7 @@ public class DeliveryTransferService { .like(StringUtils.hasText(query.lxCode()), OutboundOrder::getLxCodes, query.lxCode()) .eq(StringUtils.hasText(query.warehouseId()), OutboundOrder::getOverseasWarehouseId, query.warehouseId()) .eq(StringUtils.hasText(query.status()), OutboundOrder::getStatus, query.status()) + .eq(StringUtils.hasText(query.outboundType()), OutboundOrder::getOutboundType, query.outboundType()) .orderByDesc(OutboundOrder::getCreatedAt)); return page(page, page.getRecords().stream().map(this::outboundRow).toList()); } @@ -696,7 +697,7 @@ public class DeliveryTransferService { item.getSkuCode(), value(item.getPackageCount()), value(item.getPickedPackageCount()), item.getStatus()); } private DeliveryResponses.OneClickCandidate oneClickCandidate(DropshipOutboundCandidate candidate) { - return new DeliveryResponses.OneClickCandidate(candidate.getInventoryPositionId(), + return new DeliveryResponses.OneClickCandidate(candidate.getInventoryPositionId(), candidate.getOrderNo(), candidate.getCustomerId(), candidate.getCustomerName(), candidate.getOverseasWarehouseId(), candidate.getOverseasWarehouseName(), candidate.getPalletNo(), candidate.getInboundCode(), candidate.getSkuCode(), candidate.getProductName(), value(candidate.getAvailablePackages())); diff --git a/lastleg-service/src/main/java/com/baiyue/lastleg/dropship/mapper/DropshipOrderProfileMapper.java b/lastleg-service/src/main/java/com/baiyue/lastleg/dropship/mapper/DropshipOrderProfileMapper.java index e9e623908..0d3bf6f05 100644 --- a/lastleg-service/src/main/java/com/baiyue/lastleg/dropship/mapper/DropshipOrderProfileMapper.java +++ b/lastleg-service/src/main/java/com/baiyue/lastleg/dropship/mapper/DropshipOrderProfileMapper.java @@ -10,7 +10,7 @@ import java.util.List; public interface DropshipOrderProfileMapper extends BaseMapper { String OUTBOUND_CANDIDATE_SELECT = "SELECT pos.id inventory_position_id,p.id profile_id," + "p.warehouse_pallet_id,pos.overseas_warehouse_id,b.overseas_warehouse_name," + - "p.pallet_no,b.inbound_code,s.sku_code,s.product_name," + + "p.pallet_no,b.inbound_code,o.order_no,o.customer_id,o.customer_name,s.sku_code,s.product_name," + "LEAST(pos.available_packages,s.package_count,(SELECT COUNT(*) FROM ll_dropship_carton c " + "WHERE c.customer_id=p.customer_id AND c.profile_id=p.id AND c.sku_code=s.sku_code " + "AND c.status='AVAILABLE')) available_packages FROM ll_dropship_order_profile p " + @@ -21,7 +21,7 @@ public interface DropshipOrderProfileMapper extends BaseMapper0 AND s.package_count>0 " + "AND EXISTS (SELECT 1 FROM ll_dropship_carton c WHERE c.customer_id=p.customer_id " + "AND c.profile_id=p.id AND c.sku_code=s.sku_code AND c.status='AVAILABLE') " + diff --git a/lastleg-service/src/main/java/com/baiyue/lastleg/dropship/model/DropshipOutboundCandidate.java b/lastleg-service/src/main/java/com/baiyue/lastleg/dropship/model/DropshipOutboundCandidate.java index b5de0b755..400325958 100644 --- a/lastleg-service/src/main/java/com/baiyue/lastleg/dropship/model/DropshipOutboundCandidate.java +++ b/lastleg-service/src/main/java/com/baiyue/lastleg/dropship/model/DropshipOutboundCandidate.java @@ -12,6 +12,9 @@ public class DropshipOutboundCandidate { private String overseasWarehouseName; private String palletNo; private String inboundCode; + private String orderNo; + private String customerId; + private String customerName; private String skuCode; private String productName; private Long availablePackages; diff --git a/lastleg-service/src/test/java/com/baiyue/lastleg/delivery/controller/MerchantDeliveryControllerTest.java b/lastleg-service/src/test/java/com/baiyue/lastleg/delivery/controller/MerchantDeliveryControllerTest.java index 91e429644..3ce1f7237 100644 --- a/lastleg-service/src/test/java/com/baiyue/lastleg/delivery/controller/MerchantDeliveryControllerTest.java +++ b/lastleg-service/src/test/java/com/baiyue/lastleg/delivery/controller/MerchantDeliveryControllerTest.java @@ -34,7 +34,7 @@ class MerchantDeliveryControllerTest { private final DeliveryTransferService service = mock(DeliveryTransferService.class); private final MerchantDeliveryController controller = controller(); private final DeliveryRequests.Query query = new DeliveryRequests.Query( - 1, 20, null, null, null, null, null, null, null, null, null, null, null); + 1, 20, null, null, null, null, null, null, null, null, null, null, null, null); @Test void fixedRoutesUseIndependentListAndCreatePermissionsWithoutCustomerParameter() throws Exception { diff --git a/scripts/db/inbound-source-pallet-fields.sql b/scripts/db/inbound-source-pallet-fields.sql new file mode 100644 index 000000000..47a9cd779 --- /dev/null +++ b/scripts/db/inbound-source-pallet-fields.sql @@ -0,0 +1,8 @@ +-- 入仓计划与实收的一件代发来源托盘快照字段(目标库:baiyue_lastleg) +USE baiyue_lastleg; + +SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_inbound_plan_pallet' AND column_name='source_pallet_no'), 'SELECT 1', 'ALTER TABLE ll_inbound_plan_pallet ADD COLUMN source_pallet_no VARCHAR(128) NULL COMMENT ''一件代发不可变来源托盘号快照'' AFTER pallet_no')); +PREPARE s FROM @ddl; EXECUTE s; DEALLOCATE PREPARE s; + +SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_inbound_stock_receipt' AND column_name='source_pallet_no'), 'SELECT 1', 'ALTER TABLE ll_inbound_stock_receipt ADD COLUMN source_pallet_no VARCHAR(128) NULL COMMENT ''一件代发不可变来源托盘号快照'' AFTER pallet_no')); +PREPARE s FROM @ddl; EXECUTE s; DEALLOCATE PREPARE s; diff --git a/scripts/start-gateway-overseas-local.ps1 b/scripts/start-gateway-overseas-local.ps1 new file mode 100644 index 000000000..2ed797286 --- /dev/null +++ b/scripts/start-gateway-overseas-local.ps1 @@ -0,0 +1,8 @@ +$ErrorActionPreference = 'Stop' + +. (Join-Path $PSScriptRoot 'local-env.ps1') +$env:LASTLEG_SECURITY_SERVICE_URL = 'http://127.0.0.1:9303' + +$maven = 'D:\apache-maven-3.8.8\bin\mvn.cmd' +$module = Join-Path (Split-Path $PSScriptRoot -Parent) 'gateway-overseas' +& $maven -o spring-boot:run -DskipTests