import type { PageParam, PageResult } from '@vben/request';
|
|
import { requestClient } from '#/api/request';
|
|
export namespace MesWmSortTaskApi {
|
/** 分拣任务明细 */
|
export interface SortTaskLine {
|
id?: number;
|
noticeLineId?: number; // 发货通知单明细编号
|
itemId?: number;
|
itemCode?: string;
|
itemName?: string;
|
itemBarCode?: string; // 物料条码(扫码校验用)
|
batchCode?: string; // 批次号(扫码校验用)
|
materialStockId?: number; // 分配的库存记录
|
warehouseId?: number;
|
warehouseName?: string;
|
areaId?: number;
|
areaName?: string;
|
locationId?: number;
|
locationName?: string;
|
planQuantity?: number; // 计划分拣数量
|
sortedQuantity?: number; // 已分拣数量
|
scanned?: boolean; // 是否已扫码核验
|
remark?: string;
|
}
|
|
/** 分拣任务 */
|
export interface SortTask {
|
id?: number;
|
code?: string;
|
noticeId?: number;
|
noticeCode?: string;
|
saleOrderId?: number;
|
saleOrderCode?: string;
|
clientId?: number;
|
clientName?: string;
|
recipientName?: string;
|
recipientTelephone?: string;
|
recipientAddress?: string;
|
carrier?: string; // 承运商 / 配送方式
|
shippingNumber?: string; // 物流单号
|
status?: number; // 1 待分拣 2 分拣中 3 已完成 4 已取消
|
sortUserId?: number;
|
sortUserName?: string;
|
sortTime?: string;
|
printCount?: number;
|
totalPlanQuantity?: number;
|
totalSortedQuantity?: number;
|
remark?: string;
|
createTime?: string;
|
lines?: SortTaskLine[];
|
}
|
|
/** 可生成分拣任务的发货通知单 */
|
export interface PendingNotice {
|
noticeId?: number;
|
noticeCode?: string;
|
saleOrderCode?: string;
|
recipientName?: string;
|
recipientTelephone?: string;
|
recipientAddress?: string;
|
deliveryDate?: string;
|
outStatus?: number;
|
}
|
|
/** 提交生产申请结果 */
|
export interface ProductionRequestResult {
|
createdCount?: number;
|
skippedCount?: number;
|
failures?: string[];
|
}
|
}
|
|
/** 查询分拣任务分页 */
|
export function getSortTaskPage(params: PageParam) {
|
return requestClient.get<PageResult<MesWmSortTaskApi.SortTask>>(
|
'/mes/wm/sort-task/page',
|
{ params },
|
);
|
}
|
|
/** 查询分拣任务详情(含明细与货位指引) */
|
export function getSortTask(id: number) {
|
return requestClient.get<MesWmSortTaskApi.SortTask>(
|
`/mes/wm/sort-task/get?id=${id}`,
|
);
|
}
|
|
/** 按发货通知单生成分拣任务 */
|
export function createSortTaskFromNotice(noticeId: number) {
|
return requestClient.post<number>('/mes/wm/sort-task/create-from-notice', null, {
|
params: { noticeId },
|
});
|
}
|
|
/** 扫码分拣:校验条码并累加分拣数量 */
|
export function scanSortLine(data: {
|
barcode: string;
|
lineId: number;
|
quantity?: number;
|
taskId: number;
|
}) {
|
return requestClient.post('/mes/wm/sort-task/scan', data);
|
}
|
|
/** 完成分拣(触发配送出库) */
|
export function finishSortTask(data: {
|
carrier?: string;
|
id: number;
|
remark?: string;
|
shippingNumber?: string;
|
}) {
|
return requestClient.put('/mes/wm/sort-task/finish', data);
|
}
|
|
/** 取消分拣任务 */
|
export function cancelSortTask(id: number) {
|
return requestClient.put('/mes/wm/sort-task/cancel', null, {
|
params: { id },
|
});
|
}
|
|
/** 删除分拣任务 */
|
export function deleteSortTask(id: number) {
|
return requestClient.delete(`/mes/wm/sort-task/delete?id=${id}`);
|
}
|
|
/** 记录打印次数 */
|
export function updateSortTaskPrintCount(id: number) {
|
return requestClient.put('/mes/wm/sort-task/update-print-count', null, {
|
params: { id },
|
});
|
}
|
|
/** 提交生产申请(补建生产申请 MPS 草稿) */
|
export function submitSortProductionRequest(id: number) {
|
return requestClient.post<MesWmSortTaskApi.ProductionRequestResult>(
|
'/mes/wm/sort-task/submit-production-request',
|
null,
|
{ params: { id } },
|
);
|
}
|
|
/** 查询可生成分拣任务的发货通知单(待出库且尚无分拣任务) */
|
export function getPendingNoticeList(noticeCode?: string) {
|
return requestClient.get<MesWmSortTaskApi.PendingNotice[]>(
|
'/mes/wm/sort-task/pending-notice-list',
|
{ params: { noticeCode } },
|
);
|
}
|