From 1e23efc100b63450ed1226fe6b9f5037d52a35ae Mon Sep 17 00:00:00 2001 From: tommy Date: Thu, 30 Apr 2026 16:39:34 +0800 Subject: [PATCH 1/3] update type --- src/app/api/shop/actions.ts | 10 +++++----- src/components/Shop/ShopDetail.tsx | 5 ++++- src/components/Shop/TruckLaneDetail.tsx | 5 ++++- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/app/api/shop/actions.ts b/src/app/api/shop/actions.ts index a927342..4585eef 100644 --- a/src/app/api/shop/actions.ts +++ b/src/app/api/shop/actions.ts @@ -25,7 +25,7 @@ export interface ShopAndTruck{ truckLanceCode: String; DepartureTime: String; LoadingSequence?: number | null; - districtReference: Number; + districtReference: string | null; Store_id: Number; remark?: String | null; truckId?: number; @@ -43,7 +43,7 @@ export interface Truck{ truckLanceCode: String; departureTime: String | number[]; loadingSequence: number; - districtReference: Number; + districtReference: string | null; storeId: Number | String; remark?: String | null; shopName?: String | null; @@ -55,7 +55,7 @@ export interface SaveTruckLane { truckLanceCode: string; departureTime: string; loadingSequence: number; - districtReference: number; + districtReference: string | null; storeId: string; remark?: string | null; } @@ -82,7 +82,7 @@ export interface SaveTruckRequest { shopName: string; shopCode: string; loadingSequence: number; - districtReference?: number | null; + districtReference?: string | null; remark?: string | null; } @@ -91,7 +91,7 @@ export interface CreateTruckWithoutShopRequest { truckLanceCode: string; departureTime: string; loadingSequence?: number; - districtReference?: number | null; + districtReference?: string | null; remark?: string | null; } diff --git a/src/components/Shop/ShopDetail.tsx b/src/components/Shop/ShopDetail.tsx index ea6d807..f475193 100644 --- a/src/components/Shop/ShopDetail.tsx +++ b/src/components/Shop/ShopDetail.tsx @@ -291,7 +291,10 @@ const ShopDetail: React.FC = () => { shopName: String(shopDetail!.name), shopCode: String(shopDetail!.code), loadingSequence: addLoadingSequence, - districtReference: Number(lane.districtReference) || 0, + districtReference: + lane.districtReference != null && String(lane.districtReference).trim() !== "" + ? String(lane.districtReference) + : null, remark: remarkValue, }); diff --git a/src/components/Shop/TruckLaneDetail.tsx b/src/components/Shop/TruckLaneDetail.tsx index 30fa394..5874f2a 100644 --- a/src/components/Shop/TruckLaneDetail.tsx +++ b/src/components/Shop/TruckLaneDetail.tsx @@ -301,7 +301,10 @@ const TruckLaneDetail: React.FC = () => { truckLanceCode: String(row.truckLanceCode || ""), departureTime: departureTimeStr, loadingSequence: Number(row.loadingSequence) || 0, - districtReference: Number(row.districtReference) || 0, + districtReference: + row.districtReference != null && String(row.districtReference).trim() !== "" + ? String(row.districtReference) + : null, storeId: storeIdStr, remark: remarkValue, }); From d6f7044b5aec843d38b8688d1e8b776fe7b4e183 Mon Sep 17 00:00:00 2001 From: "B.E.N.S.O.N" Date: Thu, 30 Apr 2026 16:42:38 +0800 Subject: [PATCH 2/3] Due to server explosion , delete unnecessary old flow api --- .../WorkbenchGoodPickExecution.tsx | 22 +------ .../WorkbenchGoodPickExecutionDetail.tsx | 42 +------------ .../JoWorkbench/newJobPickExecution.tsx | 61 +------------------ 3 files changed, 4 insertions(+), 121 deletions(-) diff --git a/src/components/DoWorkbench/WorkbenchGoodPickExecution.tsx b/src/components/DoWorkbench/WorkbenchGoodPickExecution.tsx index bed75e0..75aab6f 100644 --- a/src/components/DoWorkbench/WorkbenchGoodPickExecution.tsx +++ b/src/components/DoWorkbench/WorkbenchGoodPickExecution.tsx @@ -32,7 +32,6 @@ import { AutoAssignReleaseResponse, checkPickOrderCompletion, PickOrderCompletionResponse, - checkAndCompletePickOrderByConsoCode, fetchDoPickOrderDetail, DoPickOrderDetail, batchQrSubmit, @@ -948,26 +947,7 @@ const fetchFgPickOrdersData = useCallback(async () => { }); } - // FIXED: Use the proper API function instead of direct fetch - if (newStatus === 'completed' && lot.pickOrderConsoCode) { - console.log(` Lot ${lot.lotNo} completed, checking if pick order ${lot.pickOrderConsoCode} is complete...`); - - try { - // Use the imported API function instead of direct fetch - const completionResponse = await checkAndCompletePickOrderByConsoCode(lot.pickOrderConsoCode); - console.log(` Pick order completion check result:`, completionResponse); - - if (completionResponse.code === "SUCCESS") { - console.log(`�� Pick order ${lot.pickOrderConsoCode} completed successfully!`); - } else if (completionResponse.message === "not completed") { - console.log(`⏳ Pick order not completed yet, more lines remaining`); - } else { - console.error(`❌ Error checking completion: ${completionResponse.message}`); - } - } catch (error) { - console.error("Error checking pick order completion:", error); - } - } + // Workbench completion is handled in backend scan-pick flow. await fetchAllCombinedLotData(); console.log("Pick quantity submitted successfully!"); diff --git a/src/components/DoWorkbench/WorkbenchGoodPickExecutionDetail.tsx b/src/components/DoWorkbench/WorkbenchGoodPickExecutionDetail.tsx index 15028cb..5ff5022 100644 --- a/src/components/DoWorkbench/WorkbenchGoodPickExecutionDetail.tsx +++ b/src/components/DoWorkbench/WorkbenchGoodPickExecutionDetail.tsx @@ -38,7 +38,6 @@ import { checkPickOrderCompletion, fetchAllPickOrderLotsHierarchicalWorkbench, PickOrderCompletionResponse, - checkAndCompletePickOrderByConsoCode, updateSuggestedLotLineId, updateStockOutLineStatusByQRCodeAndLotNo, confirmLotSubstitution, @@ -2840,15 +2839,6 @@ const handleSubmitPickQtyWithQty = useCallback(async (lot: any, submitQty: numbe return next; }); await refreshWorkbenchAfterScanPick(); - if (canonicalLotForSol.pickOrderConsoCode) { - void checkAndCompletePickOrderByConsoCode(canonicalLotForSol.pickOrderConsoCode) - .then((completionResponse) => { - console.log(` Pick order completion check (workbench just complete):`, completionResponse); - }) - .catch((error) => { - console.error("Error checking pick order completion:", error); - }); - } setTimeout(() => { checkAndAutoAssignNext(); }, 1000); @@ -2951,15 +2941,6 @@ const handleSubmitPickQtyWithQty = useCallback(async (lot: any, submitQty: numbe return next; }); await refreshWorkbenchAfterScanPick(); - if (lot.pickOrderConsoCode) { - void checkAndCompletePickOrderByConsoCode(lot.pickOrderConsoCode) - .then((completionResponse) => { - console.log(` Pick order completion check (workbench submit):`, completionResponse); - }) - .catch((error) => { - console.error("Error checking pick order completion:", error); - }); - } setTimeout(() => { checkAndAutoAssignNext(); }, 1000); @@ -3004,26 +2985,8 @@ const handleSubmitPickQtyWithQty = useCallback(async (lot: any, submitQty: numbe // 注意:库存过账(hold->out)与 ledger 由后端 updateStatus 内部统一处理; // 前端不再额外调用 updateInventoryLotLineQuantities(operation='pick'),避免 double posting。 - // Check if pick order is completed when lot status becomes 'completed' - if (newStatus === 'completed' && lot.pickOrderConsoCode) { - console.log(` Lot ${lot.lotNo} completed, checking if pick order ${lot.pickOrderConsoCode} is complete...`); - - try { - const completionResponse = await checkAndCompletePickOrderByConsoCode(lot.pickOrderConsoCode); - console.log(` Pick order completion check result:`, completionResponse); - - if (completionResponse.code === "SUCCESS") { - console.log(` Pick order ${lot.pickOrderConsoCode} completed successfully!`); - } else if (completionResponse.message === "not completed") { - console.log(`⏳ Pick order not completed yet, more lines remaining`); - } else { - console.error(` Error checking completion: ${completionResponse.message}`); - } - } catch (error) { - console.error("Error checking pick order completion:", error); - } - } - + // Workbench completion is handled in backend scan-pick flow. + void fetchAllCombinedLotData(); console.log("Pick quantity submitted successfully!"); @@ -3050,7 +3013,6 @@ const handleSubmitPickQtyWithQty = useCallback(async (lot: any, submitQty: numbe refreshWorkbenchAfterScanPick, combinedLotData, workbenchScanPickQtyFromLot, - checkAndCompletePickOrderByConsoCode, t, ]); diff --git a/src/components/JoWorkbench/newJobPickExecution.tsx b/src/components/JoWorkbench/newJobPickExecution.tsx index 92fa403..3aa833a 100644 --- a/src/components/JoWorkbench/newJobPickExecution.tsx +++ b/src/components/JoWorkbench/newJobPickExecution.tsx @@ -41,7 +41,6 @@ import { AutoAssignReleaseResponse, checkPickOrderCompletion, PickOrderCompletionResponse, - checkAndCompletePickOrderByConsoCode, confirmLotSubstitution, updateStockOutLineStatusByQRCodeAndLotNo, // ✅ 添加 } from "@/app/api/pickOrder/actions"; @@ -3229,20 +3228,6 @@ const JobPickExecution: React.FC = ({ filterArgs, onBackToList }) => { return next; }); await refreshWorkbenchAfterScanPick(); - if (canonicalLotForSol.pickOrderConsoCode) { - void checkAndCompletePickOrderByConsoCode( - canonicalLotForSol.pickOrderConsoCode, - ) - .then((completionResponse) => { - console.log( - ` Pick order completion check (workbench just complete):`, - completionResponse, - ); - }) - .catch((error) => { - console.error("Error checking pick order completion:", error); - }); - } setTimeout(() => { checkAndAutoAssignNext(); }, 1000); @@ -3342,18 +3327,6 @@ const JobPickExecution: React.FC = ({ filterArgs, onBackToList }) => { return next; }); await refreshWorkbenchAfterScanPick(); - if (lot.pickOrderConsoCode) { - void checkAndCompletePickOrderByConsoCode(lot.pickOrderConsoCode) - .then((completionResponse) => { - console.log( - ` Pick order completion check (workbench submit):`, - completionResponse, - ); - }) - .catch((error) => { - console.error("Error checking pick order completion:", error); - }); - } setTimeout(() => { checkAndAutoAssignNext(); }, 1000); @@ -3395,38 +3368,7 @@ const JobPickExecution: React.FC = ({ filterArgs, onBackToList }) => { ); } - if (newStatus === "completed" && lot.pickOrderConsoCode) { - console.log( - ` Lot ${lot.lotNo} completed, checking if pick order ${lot.pickOrderConsoCode} is complete...`, - ); - - try { - const completionResponse = - await checkAndCompletePickOrderByConsoCode( - lot.pickOrderConsoCode, - ); - console.log( - ` Pick order completion check result:`, - completionResponse, - ); - - if (completionResponse.code === "SUCCESS") { - console.log( - ` Pick order ${lot.pickOrderConsoCode} completed successfully!`, - ); - } else if (completionResponse.message === "not completed") { - console.log( - `⏳ Pick order not completed yet, more lines remaining`, - ); - } else { - console.error( - ` Error checking completion: ${completionResponse.message}`, - ); - } - } catch (error) { - console.error("Error checking pick order completion:", error); - } - } + // Workbench completion is handled in backend scan-pick flow. void fetchJobOrderData(pickOrderIdForRefresh); console.log("Pick quantity submitted successfully!"); @@ -3455,7 +3397,6 @@ const JobPickExecution: React.FC = ({ filterArgs, onBackToList }) => { refreshWorkbenchAfterScanPick, combinedLotData, workbenchScanPickQtyFromLot, - checkAndCompletePickOrderByConsoCode, pickQtyData, tPick, workbenchStoreId, From 26edddb80d198136aa6703df210e9dec50202878 Mon Sep 17 00:00:00 2001 From: "vluk@2fi-solutions.com.hk" Date: Fri, 1 May 2026 00:37:13 +0800 Subject: [PATCH 3/3] fix the cannot compile problem --- src/components/FinishedGoodSearch/GoodPickExecution.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/FinishedGoodSearch/GoodPickExecution.tsx b/src/components/FinishedGoodSearch/GoodPickExecution.tsx index b144987..c50e659 100644 --- a/src/components/FinishedGoodSearch/GoodPickExecution.tsx +++ b/src/components/FinishedGoodSearch/GoodPickExecution.tsx @@ -53,7 +53,6 @@ import GoodPickExecutionForm from "./GoodPickExecutionForm"; import FGPickOrderCard from "./FGPickOrderCard"; import FinishedGoodFloorLanePanel from "./FinishedGoodFloorLanePanel"; import FGPickOrderInfoCard from "./FGPickOrderInfoCard"; -import GoodPickExecutiondetail from "./GoodPickExecutiondetail"; interface Props { filterArgs: Record; onFgPickOrdersChange?: (fgPickOrders: FGPickOrderResponse[]) => void;