任务列表

  • 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维护 ~~

  1. 金蝶和CRM对应字段 @朱雅清
  2. 旧OA中EIP模块后续业务不再使用
  3. CRM需要传 未关联类别未关联原因 到老OA @刘强

流程

EIP流程.excalidraw

flowchart LR
A[新建数据]
B[省份匹配]
C[发起流程]
D[反写OA]

A --> B
B --> C
C --> D

流程描述

  1. 新建数据 数据从ERP获取
  2. 省份匹配 >> 按以下流程依次执行
    1. 系统自动匹配
      1. 内置逻辑:按照 采购方公司名称 匹配对应的销售省份
      2. 规则表:按照 ECP省份匹配规则表 匹配对应销售省份
    2. 用户确认
      1. 上述无法匹配时,系统发起流程给用户确认数据。流程名称 不做操作,用户自行维护规则表
        1. 规则表维护后再反写国网采购订单 Btn_yB8nR__cProc_id5bG__c
  3. 关联状态处理 >> 未关联数量明细数量 分别为:COUNT(关联标识为否)、COUNT(allDetails)
    1. 工作流 >> 未关联数量明细数量 变更时触发
    2. 作用:更新主表关联状态 && 同时遍历明细,判定明细是否被关联
  4. 发起流程
    1. 销售省份非空 && 关联状态为未关联 >> 流程代办 流程名称
    2. 销售省份为空 >> 省份确认流程 流程名称 取消 >> 未匹配到不做操作,由用户自己维护规则表

开发概述

  1. 国网采购订单 新增字段 >>
    1. 销售省份 : 查找关联
    2. 关联销售订单号 :文本 只能填SZ或SZ-1或者SZXX、SZXX或暂无
    3. 关联状态 : 单选 ERP获取
    4. 未关联类别 :单选 需要传回OA
    5. 未关联原因 :文本 需要传回OA
  2. 新增逻辑
    1. Btn_imQAH__c :【深瑞】匹配省份 >>> 新建后函数
    2. Order__c.matchProvinceByName : 根据输入客户名称,匹配销售省份数据
    3. Order__cdetermineProcessByData : 根据传入数据判定需要执行什么业务流程
  3. 新增流程
    1. 6972d0a989c1ed000788251b 采购订单省份确认流程—深瑞
    2. 697832677cf5760006b15bcf 【深瑞】EIP关联确认流程
  4. 限制描述
    1. 关联销售订单号 只能填SZ或SZ-1或者SZXX、SZXX或暂无
    2. 关联销售订单号 为暂无时,未关联原因未关联类别 必填

存量数据处理

国网采购订单 >>> 刷新销售省份、相关团队 ^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("不满足发起流程条件,不发起流程。")
    }
}