提示
原始需求:接收到的第一版需求 需求增补:后续对原始需求的变更 执行方案概述:初次给出的方案 时间队列:方案执行进度,快捷键 Alt + 2,插入时间行
任务列表
- task 【深瑞】新建订货记录&招标公告&国网单一来源 🔼 ⏳ 2025-09-13 📅 2025-09-20 ✅ 2025-09-16
需求描述
原始需求
需求目的:打通订单与国网总部单一来源投标环节,通过系统自动抓取关键数据,实现此类合同费用发放自动化,减轻人员工作任务。
一、新增字段说明:
在【招标公告】板块中新增字段:【国网总部单一来源】,字段类型为枚举值(选项:是 / 否),用于标识该投标项目是否属于国家电网有限公司的单一来源采购项目。
二、字段逻辑规则:
1. 【是否为国网单一来源】字段赋值规则
判定条件: 当满足以下全部条件时,【国网总部单一来源】自动赋值为 “是”;否则为 “否”:
(1)【招标公告】中【标签】字段包含 “单一来源”;
(2)【招标公告】的【项目名称】同时包含以下三个关键词:“国家电网有限公司”&“输变电”&“单一来源采购”。
2.订货记录自动赋值规则
触发场景: 新建订货记录时,选择投标编号,系统自动带出投标编号关联的招标公告的【国网总部单一来源】字段及其字段值。
自动赋值逻辑: 当【国网总部单一来源】字段=是,自动对进行字段赋值:订货记录的【行业分类】=W.国网单一来源、【行业子分类】=W1.国网单一来源、【渠道分类】=Q.国网单一来源。
需求增补(需求确认)
订货记录:选择投标项目后,根据该投标项目对应的招标公告,判定订单是否为国网单一来源,并赋值到渠道分类、行业分类、行业子分类中
IT执行
执行方案概述
招标公告数据源赋值
- 历史数据 计划任务批量更新,执行代码^9b5c8a
- 新增数据 更改业务流,在公告确认投标流程(深瑞) 中分配商务人员节点完成后执行函数
时间队列
执行代码
/** * @author 王亚新 * @codeName 【深瑞&招标公告】国网单一来源判断 * @description 规则: (1)【招标公告】中【标签】字段包含 “单一来源”; (2)【招标公告】的【项目名称】同时包含以下三个关键词:“国家电网有限公司”&“输变电”&“单一来源采购”。 * @createTime 2025-09-12 * @bindingObjectLabel 招标公告 * @bindingObjectApiName object_vjLRl__c * @函数需求编号 */ String dataId = context.data._id as String String projectName = context.data.field_Lh1y3__c as String ?: "" // 项目名称 //判断项目名称是否包含关键词 Boolean nameFlag = false if (projectName&& projectName.contains("国家电网有限公司") && projectName.contains("输变电") && projectName.contains("单一来源采购")) { nameFlag = true } //判断标签是否包含“单一来源” def ret = Fx.tag.findTagById( "object_vjLRl__c", dataId).result() as List Boolean hasTag = false ret.each { tag -> if (tag["tagId"] == "664b120f81b3ce00015e2538") { // 单一来源 hasTag = true } } //打印日志 log.info("项目名称:" + projectName) log.info("nameFlag:" + nameFlag) log.info("数据标签列表:" + ret) log.info("hasTag:" + hasTag) //符合规则,更新单选框为是;不符合规则,更新单选框为否 if (nameFlag && hasTag) { //符合规则,更新单选框为是 log.info("符合规则,更新单选框为是") Map updateData = [ "single_choice__c": "1" ] def (Boolean error, Map data, String errorMessage) = Fx.object.update("object_vjLRl__c", dataId, updateData, UpdateAttribute.builder().triggerWorkflow(false).build()) if (error) { log.info("error:" + errorMessage) }else{ log.info("success") } }else{ //不符合规则,更新单选框为否 log.info("不符合规则") Map updateData = [ "single_choice__c": "0" ] def (Boolean error, Map data, String errorMessage) = Fx.object.update("object_vjLRl__c", dataId, updateData, UpdateAttribute.builder().triggerWorkflow(false).build()) if (error) { log.info("error:" + errorMessage) }else{ log.info("success") } }