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/DoWorkbench/WorkbenchGoodPickExecution.tsx b/src/components/DoWorkbench/WorkbenchGoodPickExecution.tsx index f05aaf2..8d51ddd 100644 --- a/src/components/DoWorkbench/WorkbenchGoodPickExecution.tsx +++ b/src/components/DoWorkbench/WorkbenchGoodPickExecution.tsx @@ -32,7 +32,6 @@ import { AutoAssignReleaseResponse, checkPickOrderCompletion, PickOrderCompletionResponse, - checkAndCompletePickOrderByConsoCode, fetchDoPickOrderDetail, DoPickOrderDetail, } from "@/app/api/pickOrder/actions"; @@ -947,26 +946,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 dff4545..178edbd 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, @@ -2839,15 +2838,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); @@ -2950,15 +2940,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); @@ -3003,26 +2984,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!"); @@ -3049,7 +3012,6 @@ const handleSubmitPickQtyWithQty = useCallback(async (lot: any, submitQty: numbe refreshWorkbenchAfterScanPick, combinedLotData, workbenchScanPickQtyFromLot, - checkAndCompletePickOrderByConsoCode, t, ]); 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; diff --git a/src/components/JoWorkbench/newJobPickExecution.tsx b/src/components/JoWorkbench/newJobPickExecution.tsx index f4f8bd4..f3f8a31 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"; @@ -3053,20 +3052,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); @@ -3166,18 +3151,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); @@ -3219,38 +3192,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!"); @@ -3279,7 +3221,6 @@ const JobPickExecution: React.FC = ({ filterArgs, onBackToList }) => { refreshWorkbenchAfterScanPick, combinedLotData, workbenchScanPickQtyFromLot, - checkAndCompletePickOrderByConsoCode, pickQtyData, tPick, workbenchStoreId, 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, });