简介这份PPT是Oracle顾问团队为珠江啤酒ERP项目制定的实施方案讲解材料核心围绕大型制造企业Oracle ERP落地过程中的组织保障、方法论与计划分解展开。内容展示了从实施队伍组建、全球与本地顾问资源池配置到AIM应用实施方法、PJM项目管理方法的完整框架并给出按财务、库存、生产模块划分的两阶段上线计划适合企业CIO、ERP项目经理及咨询顾问参考也可用于同类快消制造企业实施前期调研与方案汇报。资源为单个pptx文件大小1.46MB目前已有55人学习。虽然体积不大但信息密度较高重点涵盖成功要素、Oracle中国区顾问组织、实施策略与技术转移安排可直接作为啤酒或流程制造业ERP项目准备阶段的演示素材帮助读者快速理解大型ERP实施的关键控制点。1. 拿到一份Oracle珠江啤酒ERP实施方案先别急着看功能清单很多实施顾问拿到“Oracle珠江啤酒ERP系统实施方案详解.pptx”这类文件第一反应是翻到模块功能页看库存、生产、财务都有什么。其实一份方案文档能不能落地判断点在前面几页它有没有说清楚啤酒行业“快消、短保质期、多包装、多工厂调拨”这几个特征对ERP的约束。啤酒企业的痛点集中在批次追溯、包装规格拆分、促销返利和成本分摊上Oracle ERP实施方案如果没有正面回答这些问题后面所有蓝图评审都会变成各说各话。这类方案通常对应一瓶啤酒从原料采购、发酵灌装到成品分销的全链条管理适合啤酒企业信息部、Oracle实施顾问和项目经理用来做蓝图评审。看懂它得先建立两个视角一是行业视角二是Oracle EBS标准的配置视角。我按做过快消ERP实施的经验把方案拆成可复现的六个环节从行业模型一路讲到上线验证中间穿插可抄作业的SQL和排查路径。2. 啤酒行业的供应-生产-销售模型Oracle ERP方案的地基2.1 发酵、灌装、分销三种场景下的主数据差异啤酒行业最怕把所有产线当成一条流水线设计。发酵罐是流程型按批次投料产出半成品酒液灌装线是离散与流程混合讲究换型时间和包装规格成品分销则是典型的批次追溯加渠道管理。Oracle ERP实施方案如果只给你一张总账科目表而没有区分这三类场景的主数据属性后面跑MRP和成本必然翻车。先说物料主数据。发酵阶段的物料是麦芽、大米、酒花、水属性必须打开批次控制Lot Control同时要维护“有效期”和“复检期”因为啤酒酿造有明确的工艺窗口。半成品酒液在Oracle EBS里一般挂在OPMProcess Manufacturing的配方下用物料清单字段表达麦汁浓度、酒精度等质量指标。灌装阶段则要按包装规格拆SKU瓶装、罐装、桶装同一个酒液编码对应多个成品编码。分销侧更麻烦啤酒是短保快消品要同时管“生产日期”和“失效日期”还要按区域配置不同的调拨价、运费和促销政策。方案里如果只建一个“啤酒成品”物料不按包装、容量、渠道展开SKU后续用Oracle Smart View for Office做销售分析时维度根本对不上。这一点我在蓝图评审会上见得最多业务方说“我们只有十几个品牌”可一落ERP就变成几千个SKU。下表是我做这类项目时固定要过的字段清单主数据类别典型字段必配属性常见遗漏原料麦芽/酒花/水批次号、保质期、供应商批次批次控制、有效期、复检期水分含量等质量指标未进入主数据半成品酒液罐号、配方版本、投料日期OPM配方关联、质量状态中间罐批次不参与追溯成品瓶/罐/桶容量、包装类型、渠道编码UOM换算、短保到期策略促销专用包装未拆SKU非计划物料辅料/备件消耗性标志、请购审批不参与MRP、默认库位被误设为批次控制导致卡收料这套字段里最容易出问题的是“UOM换算”。啤酒行业旧系统按箱管Oracle标准按瓶Each管一箱可能是12瓶或24瓶换算率不统一采购下单和销售发货就会对不上。实施方案里必须有量纲换算表并且和主数据同步维护否则后面所有报表的“查询总金额”都会差一个倍数。2.2 从业务流程图到Oracle EBS模块地图好的实施方案会在前面放一张“业务-模块”矩阵。常见做法是采购到付款AP/PO对应原料采购生产执行对应WIP和OPM库存和批次追溯对应INV销售分销对应OM和AR成本核算对应CST和PAC。你得拿着这张图跟业务部门核对哪个环节没有系统承接哪个环节存在“灰色地带”。我一般会把每个业务流程域标成三类“标准功能满足、配置后满足、需要二次开发”。比如“酿造车间投料单”在Oracle EBS OPM里可以通过配方的“工序物料消耗”标准实现但“灌装线按换型时间排产”标准APS往往不支持需要排产逻辑补丁或MES接口。如果方案文档对这些判断一笔带过那它只能算功能清单不算实施方案。模块矩阵至少要覆盖以下范围业务域Oracle EBS模块配置重点二次开发风险点原料采购PO / AP供应商-物料对口、检验流程按检验批次自动扣款酿造生产OPM / WIP配方、工艺路线、批次继承发酵罐状态与MES交互灌装包装WIP / INV非标工单、完工倒冲包装线实时产量采集成品分销OM / AR调拨价、信用管理、装运促销返利计算成本核算CST / PAC成本对象、资源分摊规则联副产品回收计价模块选型还有一个容易漏的非标工单。啤酒工厂常有实验批次、返工灌装、促销赠品等特殊订单这些没法走标准工单。Oracle EBS WIP里提供非标工单Non-Standard Job来处理后面我会专门展开。很多方案只画了标准的生产流程没给非标工单的路径等上线后活儿全堆到杂项发料里库存就不准了。2.3 实施策略分阶段还是大爆炸方案里必须写清楚实施路线。对珠江啤酒这种多工厂、多基地的企业我经历过的最稳妥做法是“先试点再推广”先在总部工厂跑总账-库存-采购-销售-生产-成本的全流程稳定两个季度后再推广到其他工厂。这样每次切换范围可控问题能定位到具体工厂老系统退出的时间表也能更从容。另一种是“大爆炸”式一次性切换所有工厂和所有模块适合系统简单、业务标准度高的企业。啤酒行业分销网络复杂大爆炸上线第一周订单录入都会堵。如果方案里没给出明确的阶段划分和每阶段的并行周期建议打回让顾问补上。并行期的数据核对是一项被低估的工作量必须有专人做新旧系统差异分析。实施阶段设置上我习惯把时间分成四个窗口蓝图确认、模拟上线、试运行、正式切换。每个窗口都要有退出条件比如“试运行期间周盘点差异率小于0.5%”才能进入下一步。这部分是项目实施合同里最容易起纠纷的地方方案文档里如果只写了阶段名称没写验收口径执行时就会变成无休止的扯皮。同样的逻辑也适用于“上线后的Oracle数据库巡检”安排这些运维动作要在方案里提前设计而不是等系统卡死再补救。3. 读懂制造与成本模块从WIP非标工单到PAC成本法3.1 WIP非标工单啤酒行业的订单化生产怎么挂工单在Oracle EBS里标准离散工单Discrete Job通常带着物料清单和工艺路线完工后自动报告入库。但啤酒行业的灌装线经常遇到这类情况某条产线临时灌装一批“品鉴装”、把过期成品回炉重造、或者把散装酒液灌成小瓶样品。这些订单没有稳定BOM走标准工单会产生大量差异。这种场景用WIP非标工单最合适。非标工单不强制挂BOM和工艺路线你可以手动维护发料项和完工项完工时走“组装完工”或“生成装配件”入库存。我一般会在实施方案里为它单独建一个工单类型WIP Job Type比如“返工”和“实验批次”并配置独立的工单号前缀方便月末成本归集。配置时要注意一个边界非标工单的完工量必须跟实际入库量一致否则WIP余额挂在账上消不掉。还要给非标工单单独设置会计科目避免和正常工单的成本混在一起。运维阶段最常见的问题就是账务人员把所有异常都塞进同一个非标工单导致这个工单的成本差异率高得离谱。我在方案里会规定非标工单只能用于“无BOM的临时订单”但凡能预定义BOM的定制产品走标准工单加配置项。这个边界不划清上线三个月后WIP报表就会被“非标”两个字淹没。3.2 PAC成本法与OPM模块分步结转怎么配置啤酒制造是典型的分步式连续生产糖化、发酵、过滤、灌装。Oracle EBS里有两套成本思路CST标准成本法和PACPeriod Actual Cost期间实际成本法。方案标题里出现“Oracle ERP”和“实施方案”成本部分往往绕不开PAC。PAC适合流程制造它在期间内累计实际成本再按产出分摊而不是每一笔领料都按标准价算差异。实施PAC要注意“成本对象”的划分。我一般按工厂生产方式阶段来分成本对象比如“发酵车间-糖化批次”“灌装线-包装订单”。PAC会通过Formula和Routing把料、工、费归集到成本对象再按产量和销售数量分摊到产成品。啤酒的联产品和副产品很多比如酵母泥、酒糟方案里要定义回收成本的处理方式否则分摊基数会被污染。有一个常见误用是把所有间接费用都塞进一个分摊规则这会造成各工厂之间成本不可比。Oracle EBS的OPM模块为PAC提供了配方、工艺和批次记录的支撑很多人搜索“Oracle EBS OPM标准功能培训资料-OPM成本”核心其实就三件事定义成本对象、定义资源、定义分摊规则。实施方案里只要有这三张配置表PAC就能转起来。资源定义要注意“资源单位”和“资源费率”的对应啤酒行业的公用工程蒸汽、压缩空气通常按吨消耗要将它们建模成资源否则月末费用分摊没有依据。-- 查询某个成本对象在PAC期间的实际费用归集 SELECT cco.cost_object_desc, cr.resource_code, sum(cd.actual_cost) AS actual_cost FROM cost_objects cco, cost_resource cr, cost_details cd WHERE cd.cost_object_id cco.cost_object_id AND cd.resource_id cr.resource_id AND cco.period_id 202411 AND cco.organization_id 101 GROUP BY cco.cost_object_desc, cr.resource_code ORDER BY cco.cost_object_desc, cr.resource_code;这段SQL用于核对成本对象在指定期间的费用归集是否准确。参数period_id对应Oracle总账期间ID实际项目中要先用SELECT query from gl_periods确认若结果里出现“资源代码为空”的金额说明PAC的资源分摊规则没有配全需要回到成本配置里补资源关联。这也是Oracle EBS成本实施顾问面试时经常被追问的检查点。3.3 查询WIP核心表和工单状态SQL脚本与存储过程不管方案写得再好上线后你都得面对一个现实业务问“这张工单现在到哪了”这时候直接查WIP核心表最可靠。Oracle EBS里与工单相关的核心表有WIP_DISCRETE_JOBS离散工单头、WIP_OPERATIONS工序、WIP_MATERIAL_TRANSACTIONS发料事务、WIP_SCHEDULE_DATES排程日期。网上很多“Oracle EBS WIP核心表”的资料指的就是这几张。-- 查询指定非标工单的状态、数量与完工信息 SELECT wdj.wip_entity_name, wdj.status_type AS 工单状态值, wdj.job_type AS 工单类型, wdj.quantity_completed AS 已完工数量, wdj.quantity_scrapped AS 报废数量, wdj.date_completed AS 实际完工日期 FROM wip_discrete_jobs wdj WHERE wdj.wip_entity_name R-20241001-001 AND wdj.organization_id 101;这段SQL里wip_entity_name是工单编号一般由规则生成status_type对应Oracle标准的值比如1是未发放、3是已发放、6是已完成organization_id是库存组织ID多工厂环境必须显式带上否则容易串工厂。查询结果可以用来核对实施方案里非标工单的完工流程是否被正确执行。进一步追成本差异时可以用下面的存储过程思路遍历一段时间内的非标工单统计完工量与发料事务金额的差额。Oracle存储过程实现时要注意事务类型过滤WIP_MATERIAL_TRANSACTIONS里包含发料、退货、报废等多种类型只统计类型为1发料和2完工入库的记录才准确。-- 统计指定日期范围内非标工单的发料与完工差异 CREATE OR REPLACE PROCEDURE check_wip_scrap ( p_org_id IN NUMBER, p_from_date IN DATE, p_to_date IN DATE ) IS CURSOR c_jobs IS SELECT wdj.wip_entity_id, wdj.wip_entity_name FROM wip_discrete_jobs wdj WHERE wdj.organization_id p_org_id AND wdj.job_type NON-STANDARD AND wdj.creation_date BETWEEN p_from_date AND p_to_date; v_issue_qty NUMBER : 0; v_complete_qty NUMBER : 0; BEGIN FOR r_job IN c_jobs LOOP SELECT NVL(SUM(primary_quantity),0) INTO v_issue_qty FROM wip_material_transactions WHERE wip_entity_id r_job.wip_entity_id AND transaction_type_id 1; -- 发料 SELECT NVL(SUM(primary_quantity),0) INTO v_complete_qty FROM wip_material_transactions WHERE wip_entity_id r_job.wip_entity_id AND transaction_type_id 2; -- 完工入库 IF v_issue_qty - v_complete_qty 0.001 THEN DBMS_OUTPUT.PUT_LINE(差异工单: || r_job.wip_entity_name); END IF; END LOOP; END check_wip_scrap;过程体里p_org_id、p_from_date、p_to_date三个参数缺一不可。事务类型ID在不同版本可能不同我在实施中遇到过11g与19c默认值不一致所以正式跑批前要先查询transaction_type表确认。如果差异工单量大建议把结果写入一张日志表方便月底和财务对账而不是只靠OUTPUT输出。这也是Oracle存储过程在日常检查中最常见的用法。4. 数据迁移与接口设计Oracle存储过程与批量脚本的落地4.1 静态数据迁移物料、BOM、工艺路线的清洗模板数据迁移是实施方案中最容易低估的部分。啤酒企业的物料主数据通常分散在多个Excel、老ERP或MES里一个“500ml罐装”在老系统可能叫“500罐”在新系统要跟品牌、包装、渠道属性对齐。我建议先做一张物料主数据清洗表字段包括物料编码、物料名称、规格型号、品牌、包装类型、容量、批次控制标志、有效期天数清洗规则按“一物一码”执行。当中最麻烦的是“同名异物”和“一物多名”。清洗规则要明确由业务数据治理组确认归属而不是按字符串相似度硬合并。我见过一个工厂的包装线代码改成大写后所有历史BOM都匹配不上恢复花了整整一个周末。所以方案里必须约定任何主数据字段的修改都要保留修改日志并建立新旧编码映射表。BOM和工艺路线迁移前要抽查准确性。可以先按物料编码汇总BOM行数比较新旧系统差异。常见问题是老系统BOM里有大量“虚拟件”或“倒冲件”导入Oracle EBS前要决定是否改成非价值零件或直接挂到父项。工艺路线迁移要特别注意工序单位啤酒行业灌装线用“千瓶/小时”发酵用“吨”单位不一致会导致产能计算错得离谱。4.2 动态数据迁移库存余额与未结工单的切点控制动态数据迁移必须在系统停机窗口内完成。库存余额迁移我常用的做法是“冻结盘点账面调整”旧系统库存和质量系统同时冻结按截止时间导出现有量再在Oracle里用库存初始导入INV Initial Mass Load建初始余额。注意量纲换算比如旧系统按箱、Oracle按瓶得在方案里定义默认换算率。未结工单的处理更讲究。项目上线前最好把旧系统的工单全部完工或强制关闭只把“已经投料但未完工的在制品”按批次转入WIP初始工单。如果硬搬旧工单新系统的工序、资源、成本全对不上。这个步骤需要财务签字确认因为涉及在制品金额的期初建账。接口设计也是这个阶段要定的事。啤酒厂的MES、称重系统、经销商门户都要跟Oracle EBS交互接口方案要明确是数据库直连、文件接口还是中间表。我一般建议用中间表加存储过程的方式接口表多一个status字段0待处理、1成功、2错误。这样出错时能通过SQL快速定位“卡在哪一步”不用联网看日志。4.3 用Oracle存储过程实现分页巡检与总金额核对数据迁移完之后要做总量核对。手工写SQL时用惯了Oracle分页查出一部分但核对全量还是要靠存储过程批处理。我一般会在Package里放两个过程一个是分页巡检一个是总金额核对。分页巡检的目的是避免一次性取出几十万条量明细造成临时表空间膨胀这是Oracle数据库运维中很基础的一课。-- 用游标分页方式巡检物料库存余额超过阈值则记录 CREATE OR REPLACE PROCEDURE check_inventory_balance ( p_page_size IN NUMBER DEFAULT 1000, p_org_id IN NUMBER ) IS CURSOR c_stock IS SELECT msi.segment1, msi.description, SUM(mtl.on_hand) total_qty FROM mtl_on_hand_quantities mtl, mtl_system_items_kfv msi WHERE mtl.inventory_item_id msi.inventory_item_id AND mtl.organization_id p_org_id GROUP BY msi.segment1, msi.description ORDER BY msi.segment1; v_rownum NUMBER : 0; BEGIN FOR r_stock IN c_stock LOOP v_rownum : v_rownum 1; IF MOD(v_rownum, p_page_size) 0 THEN DBMS_OUTPUT.PUT_LINE(已巡检 || v_rownum || 条物料); END IF; -- 这里可加阈值判断例如 total_qty 超过某上限时记入日志表 NULL; END LOOP; END check_inventory_balance;参数p_page_size控制每批打印条数p_org_id是组织ID。实际使用时建议把巡检结果写入日志表而不是依赖DBMS_OUTPUT因为DBMS_OUTPUT在批处理脚本里可能被缓冲看不到完整输出。如果你在Oracle 19c上跑要留意CLOB输出长度限制避免巡检信息被截断。金额核对用一条汇总SQL即可把物料成本累计后与总账科目余额比较。SELECT -- 按物料汇总库存金额与总账存货科目余额核对 msi.segment1 AS 物料编码, SUM(mtl.on_hand * cacl.item_cost) AS 库存金额 FROM mtl_on_hand_quantities mtl, mtl_system_items_kfv msi, cst_std_costs cacl WHERE mtl.inventory_item_id msi.inventory_item_id AND mtl.inventory_item_id cacl.inventory_item_id AND mtl.organization_id cacl.organization_id AND cacl.cost_type_id 1 -- 标准成本类型 GROUP BY msi.segment1;这条SQL体现了“Oracle查询总金额”这个高频需求的典型写法连接物料表、现有量表和成本表按物料编码汇总。注意cost_type_id在不同环境可能不同实施时要先查cst_cost_types表确认。差异超过0.5%就要回到事务表查原因而不是简单调总账。迁移阶段最怕用“总账调平”掩盖数据错误这会留下长期后患。5. 实施方案中最容易翻车的5类问题与排查路径5.1 物料编码在迁移后才改导致历史单无法匹配现象上线后查不到旧系统导入的历史采购单或者金额对不上。原因实施团队为了“符合新编码规范”在数据迁移时改了物料编码但没有同步修改历史单据上的旧编码。解决迁移前冻结一个“新旧编码映射表”历史单据按映射表写入新编码如果已经改了也没留映射只能写批处理用描述字段反查耗时且容易漏。这个坑几乎每个快消ERP实施都会踩。方案里一定要有一节“编码映射与冻结流程”写明编码变更必须经过数据治理组审批而不是实施顾问自己决定。排查时可以查Oracle EBS的审计表对物料主数据启用审计追踪看谁在什么时间改了segment1。如果没启用审计就只能翻数据迁移日志时间成本极高。5.2 批次追溯时串批日期和包装线维度丢失现象质量部门想追溯某批灌装啤酒用了哪批酒液结果Oracle里显示多个批次混在一起。原因啤酒行业存在“先灌到缓冲罐再灌装”的中间环节实施方案只定义了成品批次没有定义中间罐批次的转移记录。解决在OPM配方中启用“批次继承”属性让半成品批次自动传递到成品批灌装线做返工或余料回冲时单独建非标工单不能直接在原工单上增减完工量。排查时先看MTL_TRANSACTION_LOT_NUMBERS表查成品批号关联的批次行。如果发现一个成品批对应多个酒液批说明中间罐转移没有建模。还有一种情况是包装线上多批酒液同时供罐导致成品混合这需要调整生产计划在方案里明确“一罐一成品批”的约束否则批次追溯只能追溯到车间级别达不到单品级别。5.3 MRP跑出一堆垃圾建议安全库存参数没校准现象Oracle MRP计划跑完系统建议大量紧急采购但库存明明够。原因方案缺少对提前期、安全库存、批量规则主数据的校验尤其是促销季节品提前期设成常规值。解决在MRP运行前先做一次参数体检用近3个月的历史消耗数据拟合安全库存并更新物料主数据里的计划参数。不要一上来就全量跑MRP先单工厂单物料试探。排查MRP建议时先查MRP_MATERIAL_PLANS表看计划订单的净需求计算逻辑。如果发现“现有量预期入库”小于毛需求说明需求有残留如果是提前期太长导致订单过期要回看PO_MATCHING规则。这个问题的根因通常在物料主数据的计划参数而不是MRP流程本身别急着改代码。5.4 PAC成本法下月末差异异常费用分摊规则冲突现象PAC期末结账时差异金额比平时大好几倍。原因实施时定义了多条费用分摊规则按产量、按工时、按销售数量同一笔资源被重复分摊到不同成本对象。解决检查分配规则集Overhead Distribution Rules为每类费用指定唯一的分配基准并设置“不重复分摊”标志。核对WIP平账报表差异应落在少量指定科目里才正常。排查时可以用我前面给的cost_details查询看同一资源是否出现在多条分配记录里。很多账务人员会把“水电费”既按产量分又按工时发造成差异翻倍。实施顾问在方案里要明确资源类型与分摊基准的匹配关系比如公用工程按产量、车间人工按工时、质检费按批次这样PAC的结果才有业务解释力。5.5 Smart View报表权限混乱职责与数据权限没分开现象用Oracle Smart View for Office做预算分析时有的工厂能看别人工厂的数据。原因实施方案只给角色分配了“菜单权限”没做“数据访问权限集”Data Access Set。解决在总账模块配置数据访问权限集按公司段、成本中心段隔离再给不同职责挂上对应访问集。这个坑在实施后期才暴露改起来涉及权限重刷最好上线前就按组织架构梳理出权限矩阵。排查时先查GL_ACCESS_SETS和GL_ACCESS_ASSIGNMENTS确认每个职责对应哪个访问集再对比用户所属职责看有没有“继承默认访问集”导致越权。如果用的是Oracle Fusion或EBS R12还要检查“数据级安全”策略是否被并行生效。我在一个项目里见过因为实施顾问把“查看所有”这个权限赋给了所有角色导致Smart View报表全公司可见最后只能逐用户回滚教训很深。6. 上线前的验证技巧用Oracle标准报表和模拟演练把风险压到最低6.1 用三条SQL核对上线前数据质量上线前一周不要只依赖顾问演示自己在SQL里跑三个脚本查物料总数与BOM覆盖数对比查未完成WIP工单的数量查库存金额与总账科目余额差异率。每条记录都要能追溯到责任人。我习惯把结果打印出来贴到作战室墙上每半天更新一次。第一条SQL用mtl_system_items和bom_bill_of_materials做外连接找“有物料无BOM”的异常第二条用wip_discrete_jobs按status_group_name统计第三条就是前面那种金额汇总对比。6.2 三次模拟演练从沙盘到割接的递进演练我一般安排三轮。第一轮用测试脚本走通核心业务只验证系统功能是否达到方案要求第二轮用真实数据模拟一个工厂的一天验证数据迁移、工单发放、完工入库和成本结账第三轮按正式割接时间表执行期间停掉新系统的录入测试回滚预案。演练记录是上线决策的唯一依据不要看顾问口头保证。每一轮演练都要有明确的通过标准。第一轮看流程是否走通第二轮看数据是否一致第三轮看恢复时间是否在可接受范围内。回滚预案里要写清楚“老系统重新启用的条件”比如新系统工单发放错误率超过10%就回退。啤酒行业销售旺季不能停线所以回滚窗口通常设在凌晨2点到6点这个细节方案里必须写。6.3 验收盯住四个指标最后验收让四个指标说话库存准确率盘点差异小于0.3%、生产工单按时关闭率大于95%、成本月结在3个工作日内完成、分销订单录入效率单笔小于3分钟。达不到就要把对应模块打回整改。我吃过一次亏二期推广时以为一期功能照搬就行结果工厂的包装线配置不同工单全卡在发放环节连续加班两周才救回来。现在我会要求每个新工厂上线前必须跑到那四个指标才签字。这个方向值不值得投入我的判断是Oracle ERP方案对啤酒行业依然是最稳的重器但前提是方案里有人把行业场景拆到工单和成本科目而不是停留在PPT标注的“支持”两个字。别被封面页的架构图唬住按这个思路一层层验就能少走两个月的弯路。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?