import service from '/@/utils/request'; import { withAidopTenantParams } from './aidopTenant'; export interface Paged { total: number; page: number; pageSize: number; list: T[]; } export interface WorkOrderSchedulingRow { id: number; priority?: string | null; workOrd?: string | null; lotSerial?: string | null; issueSite?: string | null; itemNum?: string | null; descr?: string | null; descr1?: string | null; qtyOrded?: number | null; locationStock?: number | null; qtyCompleted?: number | null; planDate?: string | null; prodDate?: string | null; status?: string | null; domain?: string | null; urgent?: number | null; } /** 生成生产排程计划 */ export function productionSchedule(domain: string) { return service .post('/api/Production/scheduling/generate', null, { params: { domain }, timeout: 300000 }) .then((r) => r.data); } /** 同步物料需求 */ export function syncMaterialRequirement(domain: string) { return service .post('/api/WorkOrder/material-requirement/generate', null, { params: { domain } }) .then((r) => r.data); } /** 优先级调整保存并重做资源检查 */ export async function replenishmentWorkOrdCheckChangePriority(params: { workord: string; qty: string | number; instockdate: string; priority: string; domain: string; userAccount: string; lotSerial: string; }): Promise { const res = await service.post('/api/Production/scheduling/update-priority-and-recheck', { workord: params.workord, qty: String(params.qty ?? ''), instockdate: params.instockdate ?? '', priority: params.priority ?? '', domain: params.domain, userAccount: params.userAccount, lotSerial: params.lotSerial ?? '', }); const data = res.data as { message?: string } | undefined; const msg = String(data?.message ?? '').trim().toLowerCase(); if (msg && msg !== 'ok') throw new Error(`接口返回异常:${data?.message}`); } export function fetchWorkOrderSchedulingList(params: Record) { return service.get>('/api/Production/scheduling/list', { params: withAidopTenantParams(params) }).then((r) => r.data); } export function closeWorkOrders(ids: string) { return service.post('/api/Production/scheduling/close', { ids }).then((r) => r.data); } export function saveWorkOrderScheduling(body: { workOrd: string; domain: string; qtyOrded?: number | null; priority?: string | null; lotSerial?: string | null; urgent?: number | null; }) { return service.post('/api/Production/scheduling/save', body).then((r) => r.data); } export function patchWorkOrderStatus(body: { id: number; domain: string; status: string }) { return service.post('/api/Production/scheduling/status', body).then((r) => r.data); } export function syncWorkRouting(body: { workOrd: string; domain: string }) { return service.post('/api/Production/scheduling/sync-routing', body).then((r) => r.data); } export function setWorkOrderUrgent(body: { workOrd: string; domain: string; urgent: number }) { return service.post('/api/Production/scheduling/urgent', body).then((r) => r.data); } export function fetchSchedulingEditPreview(workOrd: string, domain: string) { return service .get<{ workOrd: string; itemNum: string; qtyOrded: number; priority: string; lotSerial: string; urgent: number; ordDate?: string | null; }>('/api/Production/scheduling/edit-preview', { params: { workOrd, domain } }) .then((r) => r.data); } export function fetchSchedulingView(workOrd: string, domain: string) { return service .get<{ master: Record; routings: unknown[]; details: unknown[]; }>('/api/Production/scheduling/view', { params: { workOrd, domain } }) .then((r) => r.data); } export function fetchSchedulingMaterials(workOrd: string, domain: string) { return service .get<{ list: unknown[] }>('/api/Production/scheduling/materials', { params: { workOrd, domain } }) .then((r) => r.data); } export function fetchSchedulingRoutings(workOrd: string, domain: string) { return service .get<{ list: unknown[] }>('/api/Production/scheduling/routings', { params: { workOrd, domain } }) .then((r) => r.data); } export function fetchSchedulingTrace(workOrd: string, domain: string) { return service.get>('/api/Production/scheduling/trace', { params: { workOrd, domain } }).then((r) => r.data); }