后端迁移库存服务模块
This commit is contained in:
+46
-9
@@ -3,15 +3,49 @@ import {
|
||||
findFirstAvailableInventoryItemBySkuCode,
|
||||
releaseReservedInventoryItem,
|
||||
} from '../../repositories/inventory-repo.js'
|
||||
import type { InventoryItemRow } from '../../types/repository-rows.js'
|
||||
import { nowIso } from '../../utils/time.js'
|
||||
|
||||
type InventoryItemId = number | string | null | undefined
|
||||
type InventoryGroupCodesInput = string | string[] | null | undefined
|
||||
|
||||
type ReserveInventoryForTaskInput = {
|
||||
skuCode?: string
|
||||
taskId: number | string
|
||||
credentialType?: string
|
||||
roleKey?: string
|
||||
inventoryGroupCodes?: InventoryGroupCodesInput
|
||||
}
|
||||
|
||||
type ReserveInventoryForTaskDeps = {
|
||||
assignReservedInventoryItem?: (
|
||||
inventoryItemId: number | string,
|
||||
taskId: number | string,
|
||||
updatedAt: string,
|
||||
roleKey?: string,
|
||||
) => Promise<InventoryItemRow | null>
|
||||
findFirstAvailableInventoryItemBySkuCode?: (
|
||||
skuCode: string,
|
||||
credentialType?: string,
|
||||
inventoryGroupCodes?: InventoryGroupCodesInput,
|
||||
) => Promise<InventoryItemRow | null>
|
||||
nowIso?: () => string
|
||||
}
|
||||
|
||||
type ReleaseReservedInventoryItemsDeps = {
|
||||
releaseReservedInventoryItem?: (
|
||||
inventoryItemId: number | string,
|
||||
updatedAt: string,
|
||||
) => Promise<InventoryItemRow | null>
|
||||
}
|
||||
|
||||
export async function reserveInventoryForTask({
|
||||
skuCode,
|
||||
taskId,
|
||||
credentialType = 'tencent_code',
|
||||
roleKey = 'primary_code',
|
||||
inventoryGroupCodes = null,
|
||||
}) {
|
||||
}: ReserveInventoryForTaskInput): Promise<InventoryItemRow | null> {
|
||||
return reserveInventoryForTaskWithDeps(
|
||||
{ skuCode, taskId, credentialType, roleKey, inventoryGroupCodes },
|
||||
{
|
||||
@@ -29,13 +63,13 @@ export async function reserveInventoryForTaskWithDeps(
|
||||
credentialType = 'tencent_code',
|
||||
roleKey = 'primary_code',
|
||||
inventoryGroupCodes = null,
|
||||
},
|
||||
}: ReserveInventoryForTaskInput,
|
||||
{
|
||||
assignReservedInventoryItem: assignReserved = assignReservedInventoryItem,
|
||||
findFirstAvailableInventoryItemBySkuCode: findAvailable = findFirstAvailableInventoryItemBySkuCode,
|
||||
nowIso: getNowIso = nowIso,
|
||||
} = {},
|
||||
) {
|
||||
}: ReserveInventoryForTaskDeps = {},
|
||||
): Promise<InventoryItemRow | null> {
|
||||
if (!skuCode) {
|
||||
return null
|
||||
}
|
||||
@@ -53,7 +87,10 @@ export async function reserveInventoryForTaskWithDeps(
|
||||
return assignReserved(available.id, taskId, getNowIso(), roleKey)
|
||||
}
|
||||
|
||||
export async function releaseReservedInventoryItems(inventoryItemIds = [], updatedAt = nowIso()) {
|
||||
export async function releaseReservedInventoryItems(
|
||||
inventoryItemIds: InventoryItemId[] = [],
|
||||
updatedAt = nowIso(),
|
||||
): Promise<InventoryItemRow[]> {
|
||||
return releaseReservedInventoryItemsWithDeps(
|
||||
inventoryItemIds,
|
||||
updatedAt,
|
||||
@@ -62,13 +99,13 @@ export async function releaseReservedInventoryItems(inventoryItemIds = [], updat
|
||||
}
|
||||
|
||||
export async function releaseReservedInventoryItemsWithDeps(
|
||||
inventoryItemIds = [],
|
||||
inventoryItemIds: InventoryItemId[] = [],
|
||||
updatedAt = nowIso(),
|
||||
{
|
||||
releaseReservedInventoryItem: releaseReserved = releaseReservedInventoryItem,
|
||||
} = {},
|
||||
) {
|
||||
const released = []
|
||||
}: ReleaseReservedInventoryItemsDeps = {},
|
||||
): Promise<InventoryItemRow[]> {
|
||||
const released: InventoryItemRow[] = []
|
||||
|
||||
for (const inventoryItemId of inventoryItemIds) {
|
||||
if (!inventoryItemId) {
|
||||
Reference in New Issue
Block a user