/** * 预测模块 Mock 种子数据 * * createSeedData() 每次调用返回全新的深拷贝初始状态。 * 持久化由 storage.ts 管理。 * * 数据覆盖: * - 预测单 20 条(9 种状态 × 3 种角色) * - 变更单 8 条(5 种状态) * - 客户 10 条(8 正常 + 2 停用) * - 产品 14 条(12 上架 + 2 下架) * - 配置 6 条 */ // ============================================================ // 客户种子数据 // ============================================================ const seedCustomers = [ { customerId: 1, customerCode: 'CUST-001', customerName: '上海华峰铝业有限公司', shortName: '华峰铝业', tradeType: 'DOMESTIC', customerStatus: '正常', creationDate: '2026-01-10 08:00:00' }, { customerId: 2, customerCode: 'CUST-002', customerName: '深圳创新科技有限公司', shortName: '深圳创新', tradeType: 'EXPORT', customerStatus: '正常', creationDate: '2026-01-15 09:00:00' }, { customerId: 3, customerCode: 'CUST-003', customerName: '浙江新材料股份有限公司', shortName: '浙江新材料', tradeType: 'DOMESTIC', customerStatus: '正常', creationDate: '2026-02-01 10:00:00' }, { customerId: 4, customerCode: 'CUST-004', customerName: '华南精密制造有限公司', shortName: '华南精密', tradeType: 'DOMESTIC', customerStatus: '正常', creationDate: '2026-02-10 11:00:00' }, { customerId: 5, customerCode: 'CUST-005', customerName: '泰国铝业工业有限公司', shortName: '泰国铝业', tradeType: 'EXPORT', customerStatus: '正常', creationDate: '2026-02-20 12:00:00' }, { customerId: 6, customerCode: 'CUST-006', customerName: '江苏新能源汽车部件有限公司', shortName: '江苏新能源', tradeType: 'DOMESTIC', customerStatus: '正常', creationDate: '2026-03-01 13:00:00' }, { customerId: 7, customerCode: 'CUST-007', customerName: '马来西亚包装材料有限公司', shortName: '马来包装', tradeType: 'EXPORT', customerStatus: '正常', creationDate: '2026-03-10 14:00:00' }, { customerId: 8, customerCode: 'CUST-008', customerName: '北京航天材料研究所', shortName: '北京航天', tradeType: 'DOMESTIC', customerStatus: '正常', creationDate: '2026-03-20 15:00:00' }, { customerId: 9, customerCode: 'CUST-009', customerName: '广州电子科技有限公司', shortName: '广州电子', tradeType: 'DOMESTIC', customerStatus: '停用', creationDate: '2026-04-01 16:00:00' }, { customerId: 10, customerCode: 'CUST-010', customerName: '成都铝材贸易有限公司', shortName: '成都铝材', tradeType: 'DOMESTIC', customerStatus: '停用', creationDate: '2026-04-10 17:00:00' }, ] // ============================================================ // 产品种子数据 // ============================================================ const seedProducts = [ { productId: 1, productCode: 'PROD-001', productName: '5052铝合金板', productCategory: '铝加工材', materialLevel: 'FINISHED', standardization: 'STANDARD', minOrderQty: 5000, isActive: true, creationDate: '2026-01-05 08:00:00' }, { productId: 2, productCode: 'PROD-002', productName: '6061铝合金棒', productCategory: '铝加工材', materialLevel: 'FINISHED', standardization: 'STANDARD', minOrderQty: 3000, isActive: true, creationDate: '2026-01-06 08:00:00' }, { productId: 3, productCode: 'PROD-003', productName: '7075铝合金型材', productCategory: '铝加工材', materialLevel: 'INGOT', standardization: 'NON_STANDARD', minOrderQty: 500, isActive: true, creationDate: '2026-01-07 08:00:00' }, { productId: 4, productCode: 'PROD-004', productName: '铝合金窗框-X2', productCategory: '铝加工制品', materialLevel: 'COLD_ROLLED', standardization: 'STANDARD', minOrderQty: 2000, isActive: true, creationDate: '2026-01-08 08:00:00' }, { productId: 5, productCode: 'PROD-005', productName: '铝门框架-Y1', productCategory: '铝加工制品', materialLevel: 'FINISHED', standardization: 'STANDARD', minOrderQty: 1500, isActive: true, creationDate: '2026-01-09 08:00:00' }, { productId: 6, productCode: 'PROD-006', productName: '废铝料A型', productCategory: '废铝', materialLevel: 'INGOT', standardization: 'STANDARD', minOrderQty: 10000, isActive: true, creationDate: '2026-01-10 08:00:00' }, { productId: 7, productCode: 'PROD-007', productName: '废铝料B型', productCategory: '废铝', materialLevel: 'INGOT', standardization: 'NON_STANDARD', minOrderQty: 8000, isActive: true, creationDate: '2026-01-11 08:00:00' }, { productId: 8, productCode: 'PROD-008', productName: '5083铝板', productCategory: '铝加工材', materialLevel: 'FINISHED', standardization: 'STANDARD', minOrderQty: 4000, isActive: true, creationDate: '2026-01-12 08:00:00' }, { productId: 9, productCode: 'PROD-009', productName: '2024铝合金棒', productCategory: '铝加工材', materialLevel: 'COLD_ROLLED', standardization: 'NON_STANDARD', minOrderQty: 1000, isActive: true, creationDate: '2026-01-13 08:00:00' }, { productId: 10, productCode: 'PROD-010', productName: '铝合金散热器框架', productCategory: '铝加工制品', materialLevel: 'FINISHED', standardization: 'STANDARD', minOrderQty: 2500, isActive: true, creationDate: '2026-01-14 08:00:00' }, { productId: 11, productCode: 'PROD-011', productName: '3003铝卷', productCategory: '铝加工材', materialLevel: 'FINISHED', standardization: 'STANDARD', minOrderQty: 6000, isActive: true, creationDate: '2026-01-15 08:00:00' }, { productId: 12, productCode: 'PROD-012', productName: '铝合金幕墙型材', productCategory: '铝加工制品', materialLevel: 'COLD_ROLLED', standardization: 'STANDARD', minOrderQty: 3000, isActive: true, creationDate: '2026-01-16 08:00:00' }, { productId: 13, productCode: 'PROD-013', productName: '旧款铝合金窗框', productCategory: '铝加工制品', materialLevel: 'FINISHED', standardization: 'STANDARD', minOrderQty: 2000, isActive: false, creationDate: '2025-12-01 08:00:00' }, { productId: 14, productCode: 'PROD-014', productName: '铝板边角料', productCategory: '废铝', materialLevel: 'INGOT', standardization: 'NON_STANDARD', minOrderQty: 5000, isActive: false, creationDate: '2025-12-15 08:00:00' }, ] // 辅助:根据 productCode 查找产品 function findProduct(code: string) { return seedProducts.find(p => p.productCode === code)! } // 辅助:根据 customerCode 查找客户 function findCustomer(code: string) { return seedCustomers.find(c => c.customerCode === code)! } // ============================================================ // 预测单种子数据(20 条,覆盖 9 种状态) // ============================================================ const seedForecastOrders = [ // ---- DRAFT 草稿 (3条) ---- { forecastOrderId: 1, forecastOrderNo: null, forecastOrderType: 'MANUAL', foStatus: 'DRAFT', submitter: 1001, tradeType: 'DOMESTIC', submitTime: null, forecastReplyTime: null, reasonDesc: null, customerCode: 'CUST-001', customerName: '上海华峰铝业有限公司', groupCustomerCode: null, groupCustomerName: null, productCode: 'PROD-001', productName: '5052铝合金板', productCategory: '铝加工材', materialLevel: 'FINISHED', standardization: 'STANDARD', minOrderQty: 5000, forecastQty: 15000, unit: '公斤', shippingPoint: 'SHANGHAI', expectedDeliveryDate: '2026-08-15', customsManualNo: null, rawMaterialOrigin: '国产', lowCarbonRatio: 0.65, processingFlag: 1, designatedFactory: '上海工厂', planSuggestedQty: null, planReplyDate: null, planReplyComment: null, rejectReason: null, forceConvertDeadline: null, actualScheduleQty: 0, convertedQty: 0, releasedQty: 0, relatedSoNos: null, creationDate: '2026-06-20 09:00:00', createdBy: 1001, lastUpdateDate: '2026-06-20 09:00:00', lastUpdatedBy: 1001, deleteFlag: 0, versionNum: 1, }, { forecastOrderId: 2, forecastOrderNo: null, forecastOrderType: 'MANUAL', foStatus: 'DRAFT', submitter: 1002, tradeType: 'EXPORT', submitTime: null, forecastReplyTime: null, reasonDesc: null, customerCode: 'CUST-002', customerName: '深圳创新科技有限公司', groupCustomerCode: null, groupCustomerName: null, productCode: 'PROD-004', productName: '铝合金窗框-X2', productCategory: '铝加工制品', materialLevel: 'COLD_ROLLED', standardization: 'STANDARD', minOrderQty: 2000, forecastQty: 8000, unit: '公斤', shippingPoint: 'CHONGQING', expectedDeliveryDate: '2026-09-01', customsManualNo: 'CM-2026001', rawMaterialOrigin: '进口', lowCarbonRatio: 0.5, processingFlag: 0, designatedFactory: null, planSuggestedQty: null, planReplyDate: null, planReplyComment: null, rejectReason: null, forceConvertDeadline: null, actualScheduleQty: 0, convertedQty: 0, releasedQty: 0, relatedSoNos: null, creationDate: '2026-06-21 10:00:00', createdBy: 1002, lastUpdateDate: '2026-06-21 10:00:00', lastUpdatedBy: 1002, deleteFlag: 0, versionNum: 1, }, { forecastOrderId: 3, forecastOrderNo: null, forecastOrderType: 'MANUAL', foStatus: 'DRAFT', submitter: 1003, tradeType: 'DOMESTIC', submitTime: null, forecastReplyTime: null, reasonDesc: '客户紧急需求,优先处理', customerCode: 'CUST-003', customerName: '浙江新材料股份有限公司', groupCustomerCode: null, groupCustomerName: null, productCode: 'PROD-008', productName: '5083铝板', productCategory: '铝加工材', materialLevel: 'FINISHED', standardization: 'STANDARD', minOrderQty: 4000, forecastQty: 12000, unit: '公斤', shippingPoint: 'SHANGHAI', expectedDeliveryDate: '2026-08-20', customsManualNo: null, rawMaterialOrigin: '国产', lowCarbonRatio: 0.7, processingFlag: 1, designatedFactory: '上海工厂', planSuggestedQty: null, planReplyDate: null, planReplyComment: null, rejectReason: null, forceConvertDeadline: null, actualScheduleQty: 0, convertedQty: 0, releasedQty: 0, relatedSoNos: null, creationDate: '2026-06-22 08:00:00', createdBy: 1003, lastUpdateDate: '2026-06-22 08:00:00', lastUpdatedBy: 1003, deleteFlag: 0, versionNum: 1, }, // ---- SUBMITTED 已提交 (3条) ---- { forecastOrderId: 4, forecastOrderNo: 'FO-20260610-0004', forecastOrderType: 'MANUAL', foStatus: 'SUBMITTED', submitter: 1001, tradeType: 'DOMESTIC', submitTime: '2026-06-10 14:00:00', forecastReplyTime: null, reasonDesc: null, customerCode: 'CUST-004', customerName: '华南精密制造有限公司', groupCustomerCode: null, groupCustomerName: null, productCode: 'PROD-002', productName: '6061铝合金棒', productCategory: '铝加工材', materialLevel: 'FINISHED', standardization: 'STANDARD', minOrderQty: 3000, forecastQty: 10000, unit: '公斤', shippingPoint: 'SHANGHAI', expectedDeliveryDate: '2026-08-10', customsManualNo: null, rawMaterialOrigin: '国产', lowCarbonRatio: 0.6, processingFlag: 1, designatedFactory: '上海工厂', planSuggestedQty: null, planReplyDate: null, planReplyComment: null, rejectReason: null, forceConvertDeadline: null, actualScheduleQty: 0, convertedQty: 0, releasedQty: 0, relatedSoNos: null, creationDate: '2026-06-10 14:00:00', createdBy: 1001, lastUpdateDate: '2026-06-10 14:00:00', lastUpdatedBy: 1001, deleteFlag: 0, versionNum: 1, }, { forecastOrderId: 5, forecastOrderNo: 'FO-20260611-0005', forecastOrderType: 'MANUAL', foStatus: 'SUBMITTED', submitter: 1002, tradeType: 'EXPORT', submitTime: '2026-06-11 09:00:00', forecastReplyTime: null, reasonDesc: null, customerCode: 'CUST-005', customerName: '泰国铝业工业有限公司', groupCustomerCode: null, groupCustomerName: null, productCode: 'PROD-005', productName: '铝门框架-Y1', productCategory: '铝加工制品', materialLevel: 'FINISHED', standardization: 'STANDARD', minOrderQty: 1500, forecastQty: 5000, unit: '公斤', shippingPoint: 'CHONGQING', expectedDeliveryDate: '2026-08-25', customsManualNo: 'CM-2026005', rawMaterialOrigin: '进口', lowCarbonRatio: 0.45, processingFlag: 0, designatedFactory: null, planSuggestedQty: null, planReplyDate: null, planReplyComment: null, rejectReason: null, forceConvertDeadline: null, actualScheduleQty: 0, convertedQty: 0, releasedQty: 0, relatedSoNos: null, creationDate: '2026-06-11 09:00:00', createdBy: 1002, lastUpdateDate: '2026-06-11 09:00:00', lastUpdatedBy: 1002, deleteFlag: 0, versionNum: 1, }, { forecastOrderId: 6, forecastOrderNo: 'FO-20260612-0006', forecastOrderType: 'MANUAL', foStatus: 'SUBMITTED', submitter: 1003, tradeType: 'DOMESTIC', submitTime: '2026-06-12 16:00:00', forecastReplyTime: null, reasonDesc: '季度末补货需求', customerCode: 'CUST-006', customerName: '江苏新能源汽车部件有限公司', groupCustomerCode: null, groupCustomerName: null, productCode: 'PROD-010', productName: '铝合金散热器框架', productCategory: '铝加工制品', materialLevel: 'FINISHED', standardization: 'STANDARD', minOrderQty: 2500, forecastQty: 7500, unit: '公斤', shippingPoint: 'SHANGHAI', expectedDeliveryDate: '2026-09-05', customsManualNo: null, rawMaterialOrigin: '国产', lowCarbonRatio: 0.55, processingFlag: 1, designatedFactory: '上海工厂', planSuggestedQty: null, planReplyDate: null, planReplyComment: null, rejectReason: null, forceConvertDeadline: null, actualScheduleQty: 0, convertedQty: 0, releasedQty: 0, relatedSoNos: null, creationDate: '2026-06-12 16:00:00', createdBy: 1003, lastUpdateDate: '2026-06-12 16:00:00', lastUpdatedBy: 1003, deleteFlag: 0, versionNum: 1, }, // ---- REJECTED 已驳回 (2条) ---- { forecastOrderId: 7, forecastOrderNo: 'FO-20260605-0007', forecastOrderType: 'MANUAL', foStatus: 'REJECTED', submitter: 1001, tradeType: 'DOMESTIC', submitTime: '2026-06-05 10:00:00', forecastReplyTime: '2026-06-06 14:00:00', reasonDesc: null, customerCode: 'CUST-007', customerName: '马来西亚包装材料有限公司', groupCustomerCode: null, groupCustomerName: null, productCode: 'PROD-003', productName: '7075铝合金型材', productCategory: '铝加工材', materialLevel: 'INGOT', standardization: 'NON_STANDARD', minOrderQty: 500, forecastQty: 2000, unit: '公斤', shippingPoint: 'CHONGQING', expectedDeliveryDate: '2026-08-05', customsManualNo: 'CM-2026007', rawMaterialOrigin: '进口', lowCarbonRatio: 0.4, processingFlag: 0, designatedFactory: null, planSuggestedQty: null, planReplyDate: null, planReplyComment: null, rejectReason: '交付日期无法满足,建议延期至9月', forceConvertDeadline: null, actualScheduleQty: 0, convertedQty: 0, releasedQty: 0, relatedSoNos: null, creationDate: '2026-06-05 10:00:00', createdBy: 1001, lastUpdateDate: '2026-06-06 14:00:00', lastUpdatedBy: 2001, deleteFlag: 0, versionNum: 2, }, { forecastOrderId: 8, forecastOrderNo: 'FO-20260608-0008', forecastOrderType: 'MANUAL', foStatus: 'REJECTED', submitter: 1002, tradeType: 'EXPORT', submitTime: '2026-06-08 11:00:00', forecastReplyTime: '2026-06-09 09:00:00', reasonDesc: null, customerCode: 'CUST-002', customerName: '深圳创新科技有限公司', groupCustomerCode: null, groupCustomerName: null, productCode: 'PROD-009', productName: '2024铝合金棒', productCategory: '铝加工材', materialLevel: 'COLD_ROLLED', standardization: 'NON_STANDARD', minOrderQty: 1000, forecastQty: 3000, unit: '公斤', shippingPoint: 'SHANGHAI', expectedDeliveryDate: '2026-08-30', customsManualNo: 'CM-2026008', rawMaterialOrigin: '进口', lowCarbonRatio: 0.35, processingFlag: 0, designatedFactory: null, planSuggestedQty: null, planReplyDate: null, planReplyComment: null, rejectReason: '产品目前处于样品阶段,产能不足', forceConvertDeadline: null, actualScheduleQty: 0, convertedQty: 0, releasedQty: 0, relatedSoNos: null, creationDate: '2026-06-08 11:00:00', createdBy: 1002, lastUpdateDate: '2026-06-09 09:00:00', lastUpdatedBy: 2001, deleteFlag: 0, versionNum: 2, }, // ---- PLAN_RECEIVED 计划已接收 (2条) ---- { forecastOrderId: 9, forecastOrderNo: 'FO-20260601-0009', forecastOrderType: 'MANUAL', foStatus: 'PLAN_RECEIVED', submitter: 1001, tradeType: 'DOMESTIC', submitTime: '2026-06-01 08:00:00', forecastReplyTime: '2026-06-02 10:00:00', reasonDesc: null, customerCode: 'CUST-001', customerName: '上海华峰铝业有限公司', groupCustomerCode: null, groupCustomerName: null, productCode: 'PROD-011', productName: '3003铝卷', productCategory: '铝加工材', materialLevel: 'FINISHED', standardization: 'STANDARD', minOrderQty: 6000, forecastQty: 18000, unit: '公斤', shippingPoint: 'SHANGHAI', expectedDeliveryDate: '2026-07-20', customsManualNo: null, rawMaterialOrigin: '国产', lowCarbonRatio: 0.7, processingFlag: 1, designatedFactory: '上海工厂', planSuggestedQty: 18000, planReplyDate: '2026-07-20', planReplyComment: '按计划排产', rejectReason: null, forceConvertDeadline: '2026-08-20', actualScheduleQty: 18000, convertedQty: 0, releasedQty: 0, relatedSoNos: null, creationDate: '2026-06-01 08:00:00', createdBy: 1001, lastUpdateDate: '2026-06-02 10:00:00', lastUpdatedBy: 2001, deleteFlag: 0, versionNum: 2, }, { forecastOrderId: 10, forecastOrderNo: 'FO-20260603-0010', forecastOrderType: 'MANUAL', foStatus: 'PLAN_RECEIVED', submitter: 1002, tradeType: 'EXPORT', submitTime: '2026-06-03 13:00:00', forecastReplyTime: '2026-06-04 15:00:00', reasonDesc: null, customerCode: 'CUST-005', customerName: '泰国铝业工业有限公司', groupCustomerCode: null, groupCustomerName: null, productCode: 'PROD-006', productName: '废铝料A型', productCategory: '废铝', materialLevel: 'INGOT', standardization: 'STANDARD', minOrderQty: 10000, forecastQty: 30000, unit: '公斤', shippingPoint: 'CHONGQING', expectedDeliveryDate: '2026-08-01', customsManualNo: 'CM-2026010', rawMaterialOrigin: '进口', lowCarbonRatio: 0.3, processingFlag: 0, designatedFactory: null, planSuggestedQty: 30000, planReplyDate: '2026-08-01', planReplyComment: '产能充足,可按时交付', rejectReason: null, forceConvertDeadline: '2026-09-01', actualScheduleQty: 30000, convertedQty: 0, releasedQty: 0, relatedSoNos: null, creationDate: '2026-06-03 13:00:00', createdBy: 1002, lastUpdateDate: '2026-06-04 15:00:00', lastUpdatedBy: 2001, deleteFlag: 0, versionNum: 2, }, // ---- SCHEDULED 已排产 (3条) ---- { forecastOrderId: 11, forecastOrderNo: 'FO-20260520-0011', forecastOrderType: 'MANUAL', foStatus: 'SCHEDULED', submitter: 1001, tradeType: 'DOMESTIC', submitTime: '2026-05-20 08:00:00', forecastReplyTime: '2026-05-21 10:00:00', reasonDesc: null, customerCode: 'CUST-004', customerName: '华南精密制造有限公司', groupCustomerCode: null, groupCustomerName: null, productCode: 'PROD-001', productName: '5052铝合金板', productCategory: '铝加工材', materialLevel: 'FINISHED', standardization: 'STANDARD', minOrderQty: 5000, forecastQty: 20000, unit: '公斤', shippingPoint: 'SHANGHAI', expectedDeliveryDate: '2026-07-15', customsManualNo: null, rawMaterialOrigin: '国产', lowCarbonRatio: 0.65, processingFlag: 1, designatedFactory: '上海工厂', planSuggestedQty: 20000, planReplyDate: '2026-07-15', planReplyComment: '已排入7月生产计划', rejectReason: null, forceConvertDeadline: '2026-08-15', actualScheduleQty: 20000, convertedQty: 0, releasedQty: 0, relatedSoNos: null, creationDate: '2026-05-20 08:00:00', createdBy: 1001, lastUpdateDate: '2026-05-25 16:00:00', lastUpdatedBy: 2002, deleteFlag: 0, versionNum: 3, }, { forecastOrderId: 12, forecastOrderNo: 'FO-20260522-0012', forecastOrderType: 'MANUAL', foStatus: 'SCHEDULED', submitter: 1003, tradeType: 'DOMESTIC', submitTime: '2026-05-22 09:00:00', forecastReplyTime: '2026-05-23 11:00:00', reasonDesc: null, customerCode: 'CUST-008', customerName: '北京航天材料研究所', groupCustomerCode: null, groupCustomerName: null, productCode: 'PROD-012', productName: '铝合金幕墙型材', productCategory: '铝加工制品', materialLevel: 'COLD_ROLLED', standardization: 'STANDARD', minOrderQty: 3000, forecastQty: 9000, unit: '公斤', shippingPoint: 'SHANGHAI', expectedDeliveryDate: '2026-07-25', customsManualNo: null, rawMaterialOrigin: '国产', lowCarbonRatio: 0.6, processingFlag: 1, designatedFactory: '上海工厂', planSuggestedQty: 9000, planReplyDate: '2026-07-25', planReplyComment: '按计划进行', rejectReason: null, forceConvertDeadline: '2026-08-25', actualScheduleQty: 9000, convertedQty: 0, releasedQty: 0, relatedSoNos: null, creationDate: '2026-05-22 09:00:00', createdBy: 1003, lastUpdateDate: '2026-05-26 08:00:00', lastUpdatedBy: 2002, deleteFlag: 0, versionNum: 3, }, { forecastOrderId: 13, forecastOrderNo: 'FO-20260525-0013', forecastOrderType: 'MANUAL', foStatus: 'SCHEDULED', submitter: 1002, tradeType: 'EXPORT', submitTime: '2026-05-25 14:00:00', forecastReplyTime: '2026-05-26 09:00:00', reasonDesc: null, customerCode: 'CUST-007', customerName: '马来西亚包装材料有限公司', groupCustomerCode: null, groupCustomerName: null, productCode: 'PROD-007', productName: '废铝料B型', productCategory: '废铝', materialLevel: 'INGOT', standardization: 'NON_STANDARD', minOrderQty: 8000, forecastQty: 24000, unit: '公斤', shippingPoint: 'CHONGQING', expectedDeliveryDate: '2026-08-10', customsManualNo: 'CM-2026013', rawMaterialOrigin: '进口', lowCarbonRatio: 0.35, processingFlag: 0, designatedFactory: null, planSuggestedQty: 24000, planReplyDate: '2026-08-10', planReplyComment: '已确认排产', rejectReason: null, forceConvertDeadline: '2026-09-10', actualScheduleQty: 24000, convertedQty: 0, releasedQty: 0, relatedSoNos: null, creationDate: '2026-05-25 14:00:00', createdBy: 1002, lastUpdateDate: '2026-05-27 10:00:00', lastUpdatedBy: 2002, deleteFlag: 0, versionNum: 3, }, // ---- PARTIAL_CONVERTED 部分转单 (2条) ---- { forecastOrderId: 14, forecastOrderNo: 'FO-20260510-0014', forecastOrderType: 'MANUAL', foStatus: 'PARTIAL_CONVERTED', submitter: 1001, tradeType: 'DOMESTIC', submitTime: '2026-05-10 08:00:00', forecastReplyTime: '2026-05-11 14:00:00', reasonDesc: null, customerCode: 'CUST-003', customerName: '浙江新材料股份有限公司', groupCustomerCode: null, groupCustomerName: null, productCode: 'PROD-002', productName: '6061铝合金棒', productCategory: '铝加工材', materialLevel: 'FINISHED', standardization: 'STANDARD', minOrderQty: 3000, forecastQty: 15000, unit: '公斤', shippingPoint: 'SHANGHAI', expectedDeliveryDate: '2026-07-10', customsManualNo: null, rawMaterialOrigin: '国产', lowCarbonRatio: 0.6, processingFlag: 1, designatedFactory: '上海工厂', planSuggestedQty: 15000, planReplyDate: '2026-07-10', planReplyComment: '分期交付', rejectReason: null, forceConvertDeadline: '2026-08-10', actualScheduleQty: 15000, convertedQty: 8000, releasedQty: 0, relatedSoNos: 'SO-20260501,SO-20260502', creationDate: '2026-05-10 08:00:00', createdBy: 1001, lastUpdateDate: '2026-05-20 15:00:00', lastUpdatedBy: 1001, deleteFlag: 0, versionNum: 4, }, { forecastOrderId: 15, forecastOrderNo: 'FO-20260512-0015', forecastOrderType: 'MANUAL', foStatus: 'PARTIAL_CONVERTED', submitter: 1002, tradeType: 'EXPORT', submitTime: '2026-05-12 10:00:00', forecastReplyTime: '2026-05-13 09:00:00', reasonDesc: null, customerCode: 'CUST-002', customerName: '深圳创新科技有限公司', groupCustomerCode: null, groupCustomerName: null, productCode: 'PROD-005', productName: '铝门框架-Y1', productCategory: '铝加工制品', materialLevel: 'FINISHED', standardization: 'STANDARD', minOrderQty: 1500, forecastQty: 6000, unit: '公斤', shippingPoint: 'CHONGQING', expectedDeliveryDate: '2026-07-20', customsManualNo: 'CM-2026015', rawMaterialOrigin: '进口', lowCarbonRatio: 0.45, processingFlag: 0, designatedFactory: null, planSuggestedQty: 6000, planReplyDate: '2026-07-20', planReplyComment: '先发一半', rejectReason: null, forceConvertDeadline: '2026-08-20', actualScheduleQty: 6000, convertedQty: 3000, releasedQty: 0, relatedSoNos: 'SO-20260503', creationDate: '2026-05-12 10:00:00', createdBy: 1002, lastUpdateDate: '2026-05-18 11:00:00', lastUpdatedBy: 1002, deleteFlag: 0, versionNum: 4, }, // ---- FULL_CONVERTED 已完全转单 (2条) ---- { forecastOrderId: 16, forecastOrderNo: 'FO-20260501-0016', forecastOrderType: 'MANUAL', foStatus: 'FULL_CONVERTED', submitter: 1001, tradeType: 'DOMESTIC', submitTime: '2026-05-01 08:00:00', forecastReplyTime: '2026-05-02 10:00:00', reasonDesc: null, customerCode: 'CUST-001', customerName: '上海华峰铝业有限公司', groupCustomerCode: null, groupCustomerName: null, productCode: 'PROD-001', productName: '5052铝合金板', productCategory: '铝加工材', materialLevel: 'FINISHED', standardization: 'STANDARD', minOrderQty: 5000, forecastQty: 10000, unit: '公斤', shippingPoint: 'SHANGHAI', expectedDeliveryDate: '2026-06-20', customsManualNo: null, rawMaterialOrigin: '国产', lowCarbonRatio: 0.65, processingFlag: 1, designatedFactory: '上海工厂', planSuggestedQty: 10000, planReplyDate: '2026-06-20', planReplyComment: '已全部转单', rejectReason: null, forceConvertDeadline: '2026-07-20', actualScheduleQty: 10000, convertedQty: 10000, releasedQty: 0, relatedSoNos: 'SO-20260504,SO-20260505', creationDate: '2026-05-01 08:00:00', createdBy: 1001, lastUpdateDate: '2026-05-15 16:00:00', lastUpdatedBy: 1001, deleteFlag: 0, versionNum: 5, }, { forecastOrderId: 17, forecastOrderNo: 'FO-20260505-0017', forecastOrderType: 'MANUAL', foStatus: 'FULL_CONVERTED', submitter: 1003, tradeType: 'DOMESTIC', submitTime: '2026-05-05 13:00:00', forecastReplyTime: '2026-05-06 15:00:00', reasonDesc: null, customerCode: 'CUST-006', customerName: '江苏新能源汽车部件有限公司', groupCustomerCode: null, groupCustomerName: null, productCode: 'PROD-010', productName: '铝合金散热器框架', productCategory: '铝加工制品', materialLevel: 'FINISHED', standardization: 'STANDARD', minOrderQty: 2500, forecastQty: 5000, unit: '公斤', shippingPoint: 'SHANGHAI', expectedDeliveryDate: '2026-06-25', customsManualNo: null, rawMaterialOrigin: '国产', lowCarbonRatio: 0.55, processingFlag: 1, designatedFactory: '上海工厂', planSuggestedQty: 5000, planReplyDate: '2026-06-25', planReplyComment: '已全部转单完成', rejectReason: null, forceConvertDeadline: '2026-07-25', actualScheduleQty: 5000, convertedQty: 5000, releasedQty: 0, relatedSoNos: 'SO-20260506', creationDate: '2026-05-05 13:00:00', createdBy: 1003, lastUpdateDate: '2026-05-18 09:00:00', lastUpdatedBy: 1003, deleteFlag: 0, versionNum: 4, }, // ---- RELEASED 已释放 (2条) ---- { forecastOrderId: 18, forecastOrderNo: 'FO-20260420-0018', forecastOrderType: 'MANUAL', foStatus: 'RELEASED', submitter: 1002, tradeType: 'EXPORT', submitTime: '2026-04-20 09:00:00', forecastReplyTime: '2026-04-21 10:00:00', reasonDesc: null, customerCode: 'CUST-005', customerName: '泰国铝业工业有限公司', groupCustomerCode: null, groupCustomerName: null, productCode: 'PROD-006', productName: '废铝料A型', productCategory: '废铝', materialLevel: 'INGOT', standardization: 'STANDARD', minOrderQty: 10000, forecastQty: 20000, unit: '公斤', shippingPoint: 'CHONGQING', expectedDeliveryDate: '2026-06-15', customsManualNo: 'CM-2026018', rawMaterialOrigin: '进口', lowCarbonRatio: 0.3, processingFlag: 0, designatedFactory: null, planSuggestedQty: 20000, planReplyDate: '2026-06-15', planReplyComment: '已完成释放', rejectReason: null, forceConvertDeadline: null, actualScheduleQty: 20000, convertedQty: 20000, releasedQty: 5000, relatedSoNos: 'SO-20260401', creationDate: '2026-04-20 09:00:00', createdBy: 1002, lastUpdateDate: '2026-05-01 14:00:00', lastUpdatedBy: 2003, deleteFlag: 0, versionNum: 5, }, { forecastOrderId: 19, forecastOrderNo: 'FO-20260425-0019', forecastOrderType: 'MANUAL', foStatus: 'RELEASED', submitter: 1001, tradeType: 'DOMESTIC', submitTime: '2026-04-25 11:00:00', forecastReplyTime: '2026-04-26 12:00:00', reasonDesc: null, customerCode: 'CUST-008', customerName: '北京航天材料研究所', groupCustomerCode: null, groupCustomerName: null, productCode: 'PROD-008', productName: '5083铝板', productCategory: '铝加工材', materialLevel: 'FINISHED', standardization: 'STANDARD', minOrderQty: 4000, forecastQty: 8000, unit: '公斤', shippingPoint: 'SHANGHAI', expectedDeliveryDate: '2026-06-10', customsManualNo: null, rawMaterialOrigin: '国产', lowCarbonRatio: 0.7, processingFlag: 1, designatedFactory: '上海工厂', planSuggestedQty: 8000, planReplyDate: '2026-06-10', planReplyComment: '释放完成', rejectReason: null, forceConvertDeadline: null, actualScheduleQty: 8000, convertedQty: 8000, releasedQty: 2000, relatedSoNos: 'SO-20260410', creationDate: '2026-04-25 11:00:00', createdBy: 1001, lastUpdateDate: '2026-05-05 16:00:00', lastUpdatedBy: 2003, deleteFlag: 0, versionNum: 5, }, // ---- DISCARDED 已作废 (1条) ---- { forecastOrderId: 20, forecastOrderNo: 'FO-20260410-0020', forecastOrderType: 'MANUAL', foStatus: 'DISCARDED', submitter: 1001, tradeType: 'DOMESTIC', submitTime: '2026-04-10 08:00:00', forecastReplyTime: null, reasonDesc: '客户取消订单', customerCode: 'CUST-004', customerName: '华南精密制造有限公司', groupCustomerCode: null, groupCustomerName: null, productCode: 'PROD-003', productName: '7075铝合金型材', productCategory: '铝加工材', materialLevel: 'INGOT', standardization: 'NON_STANDARD', minOrderQty: 500, forecastQty: 1500, unit: '公斤', shippingPoint: 'SHANGHAI', expectedDeliveryDate: '2026-07-01', customsManualNo: null, rawMaterialOrigin: '国产', lowCarbonRatio: 0.4, processingFlag: 0, designatedFactory: null, planSuggestedQty: null, planReplyDate: null, planReplyComment: null, rejectReason: null, forceConvertDeadline: null, actualScheduleQty: 0, convertedQty: 0, releasedQty: 0, relatedSoNos: null, creationDate: '2026-04-10 08:00:00', createdBy: 1001, lastUpdateDate: '2026-04-12 10:00:00', lastUpdatedBy: 1001, deleteFlag: 0, versionNum: 2, }, ] // ============================================================ // 变更单种子数据(8 条,覆盖 5 种状态) // ============================================================ const seedChangeOrders = [ { changeOrderId: 1, changeOrderNo: 'CHG-20260615-0001', forecastOrderId: 14, forecastOrderNo: 'FO-20260510-0014', coStatus: 'DRAFT', originalCustomerCode: 'CUST-003', originalCustomerName: '浙江新材料股份有限公司', newCustomerCode: 'CUST-008', newCustomerName: '北京航天材料研究所', originalDeliveryDate: '2026-07-10', newDeliveryDate: '2026-07-30', originalCustomsManualNo: null, newCustomsManualNo: null, releaseQty: 2000, rejectReason: null, submitter: null, submitTime: null, approveTime: null, creationDate: '2026-06-15 10:00:00', createdBy: 1001, lastUpdateDate: '2026-06-15 10:00:00', deleteFlag: 0, versionNum: 1, }, { changeOrderId: 2, changeOrderNo: null, forecastOrderId: 15, forecastOrderNo: 'FO-20260512-0015', coStatus: 'DRAFT', originalCustomerCode: 'CUST-002', originalCustomerName: '深圳创新科技有限公司', newCustomerCode: null, newCustomerName: null, originalDeliveryDate: '2026-07-20', newDeliveryDate: '2026-08-05', originalCustomsManualNo: 'CM-2026015', newCustomsManualNo: null, releaseQty: 1000, rejectReason: null, submitter: null, submitTime: null, approveTime: null, creationDate: '2026-06-16 09:00:00', createdBy: 1002, lastUpdateDate: '2026-06-16 09:00:00', deleteFlag: 0, versionNum: 1, }, { changeOrderId: 3, changeOrderNo: 'CHG-20260610-0003', forecastOrderId: 11, forecastOrderNo: 'FO-20260520-0011', coStatus: 'SUBMITTED', originalCustomerCode: 'CUST-004', originalCustomerName: '华南精密制造有限公司', newCustomerCode: 'CUST-006', newCustomerName: '江苏新能源汽车部件有限公司', originalDeliveryDate: '2026-07-15', newDeliveryDate: null, originalCustomsManualNo: null, newCustomsManualNo: null, releaseQty: null, rejectReason: null, submitter: 1001, submitTime: '2026-06-10 08:00:00', approveTime: null, creationDate: '2026-06-10 08:00:00', createdBy: 1001, lastUpdateDate: '2026-06-10 08:00:00', deleteFlag: 0, versionNum: 2, }, { changeOrderId: 4, changeOrderNo: 'CHG-20260608-0004', forecastOrderId: 13, forecastOrderNo: 'FO-20260525-0013', coStatus: 'SUBMITTED', originalCustomerCode: 'CUST-007', originalCustomerName: '马来西亚包装材料有限公司', newCustomerCode: null, newCustomerName: null, originalDeliveryDate: '2026-08-10', newDeliveryDate: '2026-08-25', originalCustomsManualNo: 'CM-2026013', newCustomsManualNo: 'CM-2026013-MOD', releaseQty: 3000, rejectReason: null, submitter: 1002, submitTime: '2026-06-08 14:00:00', approveTime: null, creationDate: '2026-06-08 14:00:00', createdBy: 1002, lastUpdateDate: '2026-06-08 14:00:00', deleteFlag: 0, versionNum: 2, }, { changeOrderId: 5, changeOrderNo: 'CHG-20260605-0005', forecastOrderId: 16, forecastOrderNo: 'FO-20260501-0016', coStatus: 'CHANGED', originalCustomerCode: 'CUST-001', originalCustomerName: '上海华峰铝业有限公司', newCustomerCode: 'CUST-003', newCustomerName: '浙江新材料股份有限公司', originalDeliveryDate: '2026-06-20', newDeliveryDate: '2026-06-25', originalCustomsManualNo: null, newCustomsManualNo: null, releaseQty: 5000, rejectReason: null, submitter: 1001, submitTime: '2026-06-05 08:00:00', approveTime: '2026-06-06 10:00:00', creationDate: '2026-06-05 08:00:00', createdBy: 1001, lastUpdateDate: '2026-06-06 10:00:00', deleteFlag: 0, versionNum: 3, }, { changeOrderId: 6, changeOrderNo: 'CHG-20260603-0006', forecastOrderId: 17, forecastOrderNo: 'FO-20260505-0017', coStatus: 'CHANGED', originalCustomerCode: 'CUST-006', originalCustomerName: '江苏新能源汽车部件有限公司', newCustomerCode: null, newCustomerName: null, originalDeliveryDate: '2026-06-25', newDeliveryDate: '2026-07-05', originalCustomsManualNo: null, newCustomsManualNo: null, releaseQty: null, rejectReason: null, submitter: 1003, submitTime: '2026-06-03 13:00:00', approveTime: '2026-06-04 09:00:00', creationDate: '2026-06-03 13:00:00', createdBy: 1003, lastUpdateDate: '2026-06-04 09:00:00', deleteFlag: 0, versionNum: 3, }, { changeOrderId: 7, changeOrderNo: 'CHG-20260601-0007', forecastOrderId: 12, forecastOrderNo: 'FO-20260522-0012', coStatus: 'REJECTED', originalCustomerCode: 'CUST-008', originalCustomerName: '北京航天材料研究所', newCustomerCode: 'CUST-004', newCustomerName: '华南精密制造有限公司', originalDeliveryDate: '2026-07-25', newDeliveryDate: null, originalCustomsManualNo: null, newCustomsManualNo: null, releaseQty: 3000, rejectReason: '客户变更理由不充分,暂不同意', submitter: 1003, submitTime: '2026-06-01 10:00:00', approveTime: null, creationDate: '2026-06-01 10:00:00', createdBy: 1003, lastUpdateDate: '2026-06-02 14:00:00', deleteFlag: 0, versionNum: 2, }, { changeOrderId: 8, changeOrderNo: 'CHG-20260528-0008', forecastOrderId: 18, forecastOrderNo: 'FO-20260420-0018', coStatus: 'DISCARDED', originalCustomerCode: 'CUST-005', originalCustomerName: '泰国铝业工业有限公司', newCustomerCode: null, newCustomerName: null, originalDeliveryDate: '2026-06-15', newDeliveryDate: '2026-07-01', originalCustomsManualNo: 'CM-2026018', newCustomsManualNo: null, releaseQty: null, rejectReason: null, submitter: 1002, submitTime: '2026-05-28 15:00:00', approveTime: null, creationDate: '2026-05-28 15:00:00', createdBy: 1002, lastUpdateDate: '2026-05-30 09:00:00', deleteFlag: 0, versionNum: 2, }, ] // ============================================================ // 配置种子数据 // ============================================================ const seedConfigs = [ { configId: 1, configKey: 'ADVANCE_DAYS', configValue: '30', description: '提报提前期天数', lastUpdateDate: '2026-06-01 08:00:00', lastUpdatedBy: 2001, remark: null }, { configId: 2, configKey: 'FORCE_CONVERT_DAYS', configValue: '30', description: '强制转单天数', lastUpdateDate: '2026-06-01 08:00:00', lastUpdatedBy: 2001, remark: null }, { configId: 3, configKey: 'ADVANCE_DAYS', configValue: '25', description: '提报提前期天数', lastUpdateDate: '2026-06-05 10:00:00', lastUpdatedBy: 2001, remark: '调整为25天' }, { configId: 4, configKey: 'FORCE_CONVERT_DAYS', configValue: '25', description: '强制转单天数', lastUpdateDate: '2026-06-05 10:00:00', lastUpdatedBy: 2001, remark: '调整为25天' }, { configId: 5, configKey: 'ADVANCE_DAYS', configValue: '20', description: '提报提前期天数', lastUpdateDate: '2026-06-10 14:00:00', lastUpdatedBy: 2001, remark: '旺季调整为20天' }, { configId: 6, configKey: 'FORCE_CONVERT_DAYS', configValue: '20', description: '强制转单天数', lastUpdateDate: '2026-06-10 14:00:00', lastUpdatedBy: 2001, remark: '旺季调整为20天' }, ] // 当前生效的配置值 const activeConfigs = [ { configKey: 'ADVANCE_DAYS', configValue: '20' }, { configKey: 'FORCE_CONVERT_DAYS', configValue: '20' }, ] export function createSeedData() { return { // ID 序列 forecastOrderIdSeq: 21, changeOrderIdSeq: 9, configIdSeq: 7, // 客户 customers: JSON.parse(JSON.stringify(seedCustomers)), // 产品 products: JSON.parse(JSON.stringify(seedProducts)), // 预测单 forecastOrders: JSON.parse(JSON.stringify(seedForecastOrders)), // 变更单 changeOrders: JSON.parse(JSON.stringify(seedChangeOrders)), // 配置(历史记录) configRecords: JSON.parse(JSON.stringify(seedConfigs)), // 当前生效的配置 activeConfigs: JSON.parse(JSON.stringify(activeConfigs)), } }