| 作者 | SHA1 | 备注 | 提交日期 |
|---|---|---|---|
|
|
3f208b7fb1 | Merge remote-tracking branch 'origin/production' into production | 1周前 |
|
|
d6f7044b5a | Due to server explosion , delete unnecessary old flow api | 1周前 |
| @@ -32,7 +32,6 @@ import { | |||||
| AutoAssignReleaseResponse, | AutoAssignReleaseResponse, | ||||
| checkPickOrderCompletion, | checkPickOrderCompletion, | ||||
| PickOrderCompletionResponse, | PickOrderCompletionResponse, | ||||
| checkAndCompletePickOrderByConsoCode, | |||||
| fetchDoPickOrderDetail, | fetchDoPickOrderDetail, | ||||
| DoPickOrderDetail, | DoPickOrderDetail, | ||||
| } from "@/app/api/pickOrder/actions"; | } 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(); | await fetchAllCombinedLotData(); | ||||
| console.log("Pick quantity submitted successfully!"); | console.log("Pick quantity submitted successfully!"); | ||||
| @@ -38,7 +38,6 @@ import { | |||||
| checkPickOrderCompletion, | checkPickOrderCompletion, | ||||
| fetchAllPickOrderLotsHierarchicalWorkbench, | fetchAllPickOrderLotsHierarchicalWorkbench, | ||||
| PickOrderCompletionResponse, | PickOrderCompletionResponse, | ||||
| checkAndCompletePickOrderByConsoCode, | |||||
| updateSuggestedLotLineId, | updateSuggestedLotLineId, | ||||
| updateStockOutLineStatusByQRCodeAndLotNo, | updateStockOutLineStatusByQRCodeAndLotNo, | ||||
| confirmLotSubstitution, | confirmLotSubstitution, | ||||
| @@ -2839,15 +2838,6 @@ const handleSubmitPickQtyWithQty = useCallback(async (lot: any, submitQty: numbe | |||||
| return next; | return next; | ||||
| }); | }); | ||||
| await refreshWorkbenchAfterScanPick(); | 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(() => { | setTimeout(() => { | ||||
| checkAndAutoAssignNext(); | checkAndAutoAssignNext(); | ||||
| }, 1000); | }, 1000); | ||||
| @@ -2950,15 +2940,6 @@ const handleSubmitPickQtyWithQty = useCallback(async (lot: any, submitQty: numbe | |||||
| return next; | return next; | ||||
| }); | }); | ||||
| await refreshWorkbenchAfterScanPick(); | 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(() => { | setTimeout(() => { | ||||
| checkAndAutoAssignNext(); | checkAndAutoAssignNext(); | ||||
| }, 1000); | }, 1000); | ||||
| @@ -3003,26 +2984,8 @@ const handleSubmitPickQtyWithQty = useCallback(async (lot: any, submitQty: numbe | |||||
| // 注意:库存过账(hold->out)与 ledger 由后端 updateStatus 内部统一处理; | // 注意:库存过账(hold->out)与 ledger 由后端 updateStatus 内部统一处理; | ||||
| // 前端不再额外调用 updateInventoryLotLineQuantities(operation='pick'),避免 double posting。 | // 前端不再额外调用 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(); | void fetchAllCombinedLotData(); | ||||
| console.log("Pick quantity submitted successfully!"); | console.log("Pick quantity submitted successfully!"); | ||||
| @@ -3049,7 +3012,6 @@ const handleSubmitPickQtyWithQty = useCallback(async (lot: any, submitQty: numbe | |||||
| refreshWorkbenchAfterScanPick, | refreshWorkbenchAfterScanPick, | ||||
| combinedLotData, | combinedLotData, | ||||
| workbenchScanPickQtyFromLot, | workbenchScanPickQtyFromLot, | ||||
| checkAndCompletePickOrderByConsoCode, | |||||
| t, | t, | ||||
| ]); | ]); | ||||
| @@ -41,7 +41,6 @@ import { | |||||
| AutoAssignReleaseResponse, | AutoAssignReleaseResponse, | ||||
| checkPickOrderCompletion, | checkPickOrderCompletion, | ||||
| PickOrderCompletionResponse, | PickOrderCompletionResponse, | ||||
| checkAndCompletePickOrderByConsoCode, | |||||
| confirmLotSubstitution, | confirmLotSubstitution, | ||||
| updateStockOutLineStatusByQRCodeAndLotNo, // ✅ 添加 | updateStockOutLineStatusByQRCodeAndLotNo, // ✅ 添加 | ||||
| } from "@/app/api/pickOrder/actions"; | } from "@/app/api/pickOrder/actions"; | ||||
| @@ -3229,20 +3228,6 @@ const JobPickExecution: React.FC<Props> = ({ filterArgs, onBackToList }) => { | |||||
| return next; | return next; | ||||
| }); | }); | ||||
| await refreshWorkbenchAfterScanPick(); | 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(() => { | setTimeout(() => { | ||||
| checkAndAutoAssignNext(); | checkAndAutoAssignNext(); | ||||
| }, 1000); | }, 1000); | ||||
| @@ -3342,18 +3327,6 @@ const JobPickExecution: React.FC<Props> = ({ filterArgs, onBackToList }) => { | |||||
| return next; | return next; | ||||
| }); | }); | ||||
| await refreshWorkbenchAfterScanPick(); | 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(() => { | setTimeout(() => { | ||||
| checkAndAutoAssignNext(); | checkAndAutoAssignNext(); | ||||
| }, 1000); | }, 1000); | ||||
| @@ -3395,38 +3368,7 @@ const JobPickExecution: React.FC<Props> = ({ 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); | void fetchJobOrderData(pickOrderIdForRefresh); | ||||
| console.log("Pick quantity submitted successfully!"); | console.log("Pick quantity submitted successfully!"); | ||||
| @@ -3455,7 +3397,6 @@ const JobPickExecution: React.FC<Props> = ({ filterArgs, onBackToList }) => { | |||||
| refreshWorkbenchAfterScanPick, | refreshWorkbenchAfterScanPick, | ||||
| combinedLotData, | combinedLotData, | ||||
| workbenchScanPickQtyFromLot, | workbenchScanPickQtyFromLot, | ||||
| checkAndCompletePickOrderByConsoCode, | |||||
| pickQtyData, | pickQtyData, | ||||
| tPick, | tPick, | ||||
| workbenchStoreId, | workbenchStoreId, | ||||