提示
原始需求:接收到的第一版需求 需求增补:后续对原始需求的变更 执行方案概述:初次给出的方案 时间队列:方案执行进度,快捷键 Alt + 2,插入时间行
任务列表
- task 【深瑞】EIP关联情况反馈业务转移至CRM 🔼 📅 2026-01-31 ✅ 2026-01-30
需求描述
原始需求
鉴于目前国网EIP要求日渐严格,对厂内关联要求及时性也增加,收集营销反馈,在CRM中优化EIP关联业务,具体规则需求请参考附件
Transclude of 营销商务EIP优化方案V2.0(1).docx
需求增补(需求确认)
IT执行
执行方案概述
字段调整: 1. 关联状态 2. 关联销售订单号 3. 未关联类别 >> 未下单/项目取消/协议库存 4. 未关联原因 5. 省份 6. 采购订单号(只读) 7. 项目名称(只读) 8. 工程名称(只读) 9. 需求单位(只读) 10. 确定交货日期(并显示提示:请注意交期临近订单,需及时下单或与客户沟通修改) >> ECP采购订单 <交货日期最早的订单> 采购订单号 ~~是否关联销售订单(关联状态) >> 在OA维护 ~~
- 金蝶和CRM对应字段 @朱雅清
- 旧OA中EIP模块后续业务不再使用
- CRM需要传 未关联类别、未关联原因 到老OA @刘强
流程
flowchart LR A[新建数据] B[省份匹配] C[发起流程] D[反写OA] A --> B B --> C C --> D
流程描述
- 新建数据 数据从ERP获取
- 省份匹配 >> 按以下流程依次执行
- 系统自动匹配
- 内置逻辑:按照 采购方公司名称 匹配对应的销售省份
- 规则表:按照 ECP省份匹配规则表 匹配对应销售省份
- 用户确认
- 上述无法匹配时,
系统发起流程给用户确认数据。流程名称不做操作,用户自行维护规则表- 规则表维护后再反写国网采购订单
Btn_yB8nR__c、Proc_id5bG__c
- 规则表维护后再反写国网采购订单
- 上述无法匹配时,
- 系统自动匹配
- 关联状态处理 >> 未关联数量、明细数量 分别为:COUNT(关联标识为否)、COUNT(allDetails)
- 工作流 >> 未关联数量、明细数量 变更时触发
- 作用:更新主表关联状态 && 同时遍历明细,判定明细是否被关联
- 发起流程
开发概述
- 国网采购订单 新增字段 >>
- 销售省份 : 查找关联
- 关联销售订单号 :文本 只能填SZ或SZ-1或者SZXX、SZXX或暂无
- 关联状态 : 单选 ERP获取
- 未关联类别 :单选 需要传回OA
- 未关联原因 :文本 需要传回OA
- 新增逻辑
- Btn_imQAH__c :【深瑞】匹配省份 >>> 新建后函数
- Order__c.matchProvinceByName : 根据输入客户名称,匹配销售省份数据
- Order__cdetermineProcessByData : 根据传入数据判定需要执行什么业务流程
- 新增流程
6972d0a989c1ed000788251b采购订单省份确认流程—深瑞697832677cf5760006b15bcf【深瑞】EIP关联确认流程
- 限制描述
- 关联销售订单号 只能填SZ或SZ-1或者SZXX、SZXX或暂无
- 关联销售订单号 为
暂无时,未关联原因、未关联类别 必填
存量数据处理
国网采购订单 >>> 刷新销售省份、相关团队 ^185f6e
时间队列
- 2026-01-30 16:57
- 上线,进入试运行阶段
- 2026-01-23 16:29
- 更新存量数据,补充销售省份
/**
* @author 王亚新
* @codeName 【深瑞】执行采购订单确认
* @description init
* @createTime 2026-01-23
* @bindingObjectLabel
* @bindingObjectApiName
* @函数需求编号
*/
//符合条件的数据id
List ids = context.objectIds as List
def (boolean error, List dataList, String errorMessage) = Fx.object.findByIds("object_vg6k0__c", ids, FQLAttribute.builder().columns(["_id", "name","field_Y6m56__c","field_5mu11__c","sales_province__c"]).build())
dataList.each { item ->
Map map = item as Map
//处理业务逻辑
Fx.log.info(map.name)
String dataId = map["_id"] as String
String saleProvince = map["sales_province__c"] as String ?: "none" // 销售省份
String customerName = map["field_Y6m56__c"] as String ?: "none" // 客户名称
String purOrderNo = map["field_5mu11__c"] as String ?: "none" // 采购订单编号
String result = saleProvince
if(saleProvince == "none"){
result = Order.matchProvince(customerName,purOrderNo) as String
if (result != "none"){
log.info("匹配到数据,更新当前数据。")
Fx.object.update("object_vg6k0__c", dataId, ["sales_province__c":result], UpdateAttribute.builder().triggerWorkflow(true).build())
}else{
log.info("未匹配到数据,不做操作。")
}
}
//判定是否需要发起流程
def processResult = Order.determineProcessByData([
"saleProvince":result,
"purOrderNo":purOrderNo,
"dataId":dataId
]) as String
if(processResult != "none"){
log.info("满足发起流程条件,发起流程。")
Fx.bpm.startInstance( processResult, dataId, "object_vg6k0__c")
}else{
log.info("不满足发起流程条件,不发起流程。")
}
}