• 流程编号:ITGDSQ【2024-12-10】015 ➕ 2024-12-18 🛫 2024-12-18 📅 2024-12-21 ✅ 2025-01-09 需求内容: 深瑞 逻辑调整 数据操作 字段调整 24年费用账户结转为25年费用账户: 24年12月31日凌晨,24年有效的及非汇总类型的费用账户,创建并结转到25年费用账户; 取24年12月31日凌晨费用账户的金额,24年的本级账户余额=25年的账户期初结转金额,期初结转金额可以后期人工修改。 (CRM建议,先创建25年费用账户,24年的本级账户余额=25年的账户期初结转金额,24年12月31日凌晨再刷新一版数据) 需求附件: 24年费用账户结转.jpg IT执行: 复制逻辑
  1. 新建计划任务,编写函数,依次复制【组织】、【大区汇总】、【省区汇总】、【大区公共】、【个人】、【省区公共】的费用账户,
  2. 复制时修改“24”“25” ;将【账户期初结转金额】取值【本级账户余额】的值,【本级账户余额】置空 解决方案:
  • 复制所有费用账户 🆔 68aft1 ✅ 2024-12-19
  1. 新建【中转标识】字段,该字段存储源数据的id
  2. 编写业务类型为【组织】的费用账户的逻辑代码(^97f149) 原来数据为23
  3. 编写【汇总】、【公共】账户逻辑代码(^7c36f5),并执行完毕。 原数据量73
  4. 【个人】账户复制。原数据量287
  • 与需求人确认费用账户数据 🆔 y0x91i ⛔ 68aft1 🛫 2024-12-19 ✅ 2024-12-19 问题:
  • 哪些组织的哪些账户需要新建25年费用账户 【深瑞】的有效账户需要复制新建
  • 根据24年费用账户新建25年费用账户的逻辑,具体需要保留哪些字段
  • 新建后费用账户是否需要同步到财务共享

沟通逻辑:

  • 费用-省区、费用-大区复制新建25年数据。
  • 账户负责人需要先设置为财务【林燕君】。
  • 新建24年账户场景和25年账户场景

IT执行: 复制逻辑

  • 复制新建25年费用-大区、25年费用-省区。2025年费用-大区.pdf 2025费用-省区.pdf
  • 逻辑代码(^37b3e5
  • 12-31 24年账户本级账户余额结转到25年账户的期初结转余额中
  • 新建刷新数据逻辑计划任务 ➕ 2024-12-27 ✅ 2024-12-30
  • 修改有关费用账户的对象名称和字段名称
    • 24年合同费用额度更名为合同费用额度
    • 历史合同费用额度更名为23年及以前合同费用额度
    • 自定义菜单项 历史合同费用发放更改为23年及以前合同费用发放
  • 修改账户名称,前加2025 推送顺序:
  • 大区:2025华东大区汇总
  • 省区:2025上海汇总
  • 个人:2025上海李红梅 24转25费用账户.png 2024-12-31-23 : 55 本级账户余额刷新到期初账户余额中 2025-01-01-00 : 30 刷新个人账户上级汇总余额

问题汇总

  • 订阅的报表推送的数据和现在系统的数据不一致:推送报表数据为离线数据,是截止到昨天的数据 解决:可尝试修改为推送实时数据
  • 汇总账户期初没有数据:期初余额为对应24年账户【本级账户余额】
  • 24年的费用发放更新到了25年账户:【费用明细账户确认】的时候选到了25年的费用账户

操作: 删除测试费用账户 2024测试大区汇总、2024测试省区汇总、2024测试省区公共、2024测试省区欧阳

/**  
 * @author 王亚新  
 * @objectName  object_gdJez__c
 * @codeName 【合同费用发放及调整】更新费用账户 
 * @description 创建时间是25年,费用账户是24年。将24年费用账户更改为对应的25年费用账户  
 * @createTime 2025-02-08  
 * @函数需求编号  
 */  
String data_id = context.data._id as String; //数据id  
String fee_account_id = context.data.field_8kMct__c as String; //费用账户的id  
if (fee_account_id) {  
    //根据费用账户的id查询费用账户  获取其对应的25年费用账户id(字段【中转寄存】中的值)  
    def ret = Fx.object.findById(  
            "object_tlU1k__c", //查询费用账户对象  
            fee_account_id,  
            FQLAttribute.builder()  
                    .columns(["_id", "name", "transfer_storage__c"])  
                    .build(),  
            SelectAttribute.builder()  
                    .build()  
    ).result() as Map;  
    String fee_account_id_25 = ret["transfer_storage__c"] as String; //25年费用账户id  
    log.info("25年费用账户id:" + fee_account_id_25)  
    if (fee_account_id_25) {  
        //更新合同费用发放及调整的费用账户字段为25年费用账户id  
        def (Boolean error, Map data, String errorMessage) = Fx.object.update("object_gdJez__c", data_id, ["field_8kMct__c": fee_account_id_25], UpdateAttribute.builder().triggerWorkflow(true).build())  
        if (error) {  
            log.info("更新合同费用发放及调整的费用账户字段为25年费用账户id失败:" + errorMessage)  
        } else {  
            log.info("更新数据成功!")  
        }  
    } else {  
        log.info("费用账户对应的25年费用账户不存在: " + ret["name"])  
    }  
} else {  
    log.info("费用账户为空: " + context.data.name)  
}
 
/**
 * @author 王亚新
 * @objectName object_JNX5s__c
 * @codeName 【23年及以前合同费用额度】刷新费用账户  费用账户 包含 24 ; 统计日期 晚于等于 2020-01-01 ; 未发放费用额度 不等于 0.0
 * @description 25年新建数据取的是24年费用账户,需要刷到25年费用账户   计划任务函数
 * @createTime 2025-01-03
 * @函数需求编号
 */
//符合条件的数据id
List ids = context.objectIds as List
def (boolean error, List dataList, String errorMessage) = Fx.object.findByIds("object_JNX5s__c", ids, FQLAttribute.builder().columns(["_id", "name", "field_2sbZX__c"]).build())
dataList.each { item ->
    Map map = item as Map
    String data_id = map["_id"] as String  //数据id
    String moneyAccount = map["field_2sbZX__c"] as String //费用账户id
    //处理业务逻辑
    def (Boolean error_find, Map data, String errorMessage_find) = Fx.object.findById("object_tlU1k__c", //费用账户api
            moneyAccount, //数据id
            FQLAttribute.builder()
                    .columns(["_id", "name", "transfer_storage__c"]) //需要返回的字段
                    .build(),
            SelectAttribute.builder()
                    .build())
    String newMoneyAccount = data["transfer_storage__c"] as String//中转寄存
    log.info("25年费用账户:" + newMoneyAccount)
    //更新当前数据的费用账户
    def (Boolean error_updata, Map data_updata, String errorMessage_updata) = Fx.object.update("object_JNX5s__c", data_id,
            ["field_2sbZX__c": newMoneyAccount], UpdateAttribute.builder().triggerWorkflow(false).build())
    if (error_updata) {
    log.error("获取对象异常" + errorMessage)
    }
}
 
/**  
 * @author 王亚新  
 * @objectName object_tlU1k__c
 * @codeName 金额字段置空  
 * @description 本级账户余额刷新到25年账户期初结转余额中
 * @createTime 2024-12-19  
 * @函数需求编号  
 */  
//符合条件的数据id  
List ids = context.objectIds as List  
def (boolean error, List dataList, String errorMessage) = Fx.object.findByIds("object_tlU1k__c", ids, 
																			  FQLAttribute.builder().columns(["_id", "name", "transfer_storage__c", "field_7172F__c"]).build())  
dataList.each { item ->  
    Map map = item as Map  
    //处理业务逻辑  
    String target_id = map["transfer_storage__c"] as String //中转寄存即目标数据ID  
    BigDecimal now_amount = map["field_7172F__c"] == null ? 0.000000 : map["field_7172F__c"] as BigDecimal //本级账户余额  
    BigDecimal target_amount = now_amount as BigDecimal //账户期初结转金额  
    log.info((map["name"] as String) + "本级账户余额:" + target_amount)  
    if (target_id) {  
        Map updateData = ["field_m8K7O__c": target_amount]  
        def (Boolean error_result, Map data_result, String errorMessage_result) = Fx.object.update("object_tlU1k__c", target_id,  
             updateData, UpdateAttribute.builder().triggerWorkflow(true).build())  
        if (error_result) {  
            log.error("获取对象异常" + errorMessage_result)  
        } else {  
            // dosomething,将示例逻辑细化至业务数据层  
            def map_result = data_result as Map  
            def id_result = map_result['_id']  
            def name_result = map_result['name'] as String  
            def amount_result = map_result['field_m8K7O__c']  
            log.info(name_result + "账户期初结转金额:" + amount_result)  
        }  
    } else {  
        log.info("中转寄存数据为空:" + map["name"])  
    }  
  
}
 
/**  
 * @author 王亚新  
 * @objectName object_tlU1k__c  
 * @codeName 复制费用账户数据  
 * @description 根据24年费用账户生成125年费用账户  
 * @createTime 2024-12-18  
 * @函数需求编号  
 */  
  
Map map = context.data as Map  
//处理业务逻辑  
String id = map["_id"] as String  //数据id  
String name = map["name"] as String  //账户编码  
String before_name = name as String  //账户编码  
name = name.replace("24", "25")     //账户编码:24转25  
String accountName = map["field_A8a5g__c"] as String  //账户名称  
if (accountName) {  
    accountName = accountName.replace("24", "25")//账户名称中24替换为25  
}  
List sale_owner = map["field_yrCyI__c"] as List  //销售代表  
String organzation = "1" //组织:长园深瑞  
String region_id = map["macro_region_text__c"] as String //大区文本  
region_id = region_id.replace("24", "25")  
//获取大区  
def (Boolean error_1, Map data_1, String errorMessage_1) = Fx.object.findOne("object_G1rnx__c", //对象apiName  
        FQLAttribute.builder()  
                .columns(["_id", "name"]) //需要返回的字段  
                .queryTemplate(QueryTemplate.AND(["field_w2aCs__c": region_id])) //查询条件  
                .build(),  
        SelectAttribute.builder()  
                .needQuote(true) //是否实时处理引用字段,默认true  
                .build())  
def map_1 = data_1 as Map  
String region = map_1["_id"] as String //大区  
String shengQu_id = map["province_area_text__c"] as String //省区  
String shengQu = "" //省区  
if (shengQu_id) {  
    shengQu_id = shengQu_id.replace("24", "25")//省区文本中24替换为25  
    def (Boolean error_2, Map data_2, String errorMessage_2) = Fx.object.findOne("object_M8s68__c", //对象apiName  
            FQLAttribute.builder()  
                    .columns(["_id", "name"]) //需要返回的字段  
                    .queryTemplate(QueryTemplate.AND(["name": shengQu_id])) //查询条件  
                    .build(),  
            SelectAttribute.builder()  
                    .needQuote(true) //是否实时处理引用字段,默认true  
                    .build())  
    def map_2 = data_2 as Map  
    shengQu = map_2["_id"] as String //省区  
}  
List region_list = map["field_LR1l6__c"] as List //区域负责人  
String is_total = map["field_Q2t6y__c"] as String //是否汇总账户  
String is_public = map["field_0KgPb__c"] as String //是否公共费池  
Date begin_date = "2025-01-01"//生效日期  
Date end_date = "2025-12-31"//失效日期  
String is_sync = "0"  //是否同步默认为否  
String parent_id = "" //上级账户id  
String parentAccount = map["field_aBs7b__c"] as String //当前数据上级账户id  
if (parentAccount) {  
    def (Boolean error_find, Map data_find, String errorMessage_find) = Fx.object.findById("object_tlU1k__c", //对象apiName  
            parentAccount, //数据id  
            FQLAttribute.builder()  
                    .columns(["_id", "name", "transfer_storage__c"]) //需要返回的字段  
                    .build(),  
            SelectAttribute.builder()  
                    .build())  
    log.info("上级账户:" + data_find)  
    parent_id = data_find["transfer_storage__c"] as String  
    // map.put("field_aBs7b__c", data_find["transfer_storage__c"]) //上级账户id  
} else {  
    // map.put("field_aBs7b__c", null) //上级账户id  
    log.info("没有上级账户!")  
}  
List data_owner = map["owner"] as List //负责人  
String owner_department = map["owner_department"] as String //负责人主属部门  
String ywlx = map["record_type"] as String //业务类型  
//创建主表数据  
Map masterData = [  
        "name"                : name, //账户编码  
        "field_A8a5g__c"      : accountName, //账户名称  
        "field_LR1l6__c"      : region_list, //区域负责人  
        "field_0opVt__c"      : region, //大区  
        "field_l1b1v__c"      : organzation,  
        "field_Q2t6y__c"      : is_total, //是否汇总账户  
        "field_0KgPb__c"      : is_public, //是否公共费池  
        "field_28Wa2__c"      : begin_date, //生效日期  
        "field_242ks__c"      : end_date, //失效日期  
        "field_sync_or_not__c": is_sync, //是否同步  
        "owner"               : data_owner, //负责人  
        "owner_department"    : owner_department, //负责人主属部门  
        "record_type"         : ywlx, //业务类型  
        "field_aBs7b__c"      : parent_id,//上级账户  
        "transfer_storage__c" : before_name, //中转寄存  
        "field_cZ4Qe__c"      : shengQu, //省区  
        "field_yrCyI__c"      : sale_owner //销售代表  
]  
//创建费用账户  
def (Boolean error_create, Map data_create, String errorMessage_create) = Fx.object.create("object_tlU1k__c", masterData, null, CreateAttribute.builder().build())  
if (error_create) {  
    log.error("获取对象异常" + errorMessage_create)  
} else {  
    Map item_1 = data_create["data"] as Map  
    String dataId = item_1["_id"] as String  
    log.info("创建成功:" + dataId)  
    def (Boolean error_update, Map data_update, String errorMessage_update) = Fx.object.update("object_tlU1k__c", id, ["transfer_storage__c": dataId], UpdateAttribute.builder().triggerWorkflow(false).build())  
}
 
/**
 * @author 王亚新
 * @codeName 账户结转金额后修改汇总金额  业务类型 == 个人 组织 == 长园深瑞  账户编码 包含 2025
 * @description 账户结转金额后修改汇总金额
 * @createTime 2024-12-31
 * @函数需求编号
 */
//符合条件的数据id
List ids = context.objectIds as List
List needFields = ["_id", //主键
                   "name", //账户编码
                   "record_type", //业务类型
                   "field_7705T__c", //本年累计出项(借款/费用)
                   "field_aBs7b__c", //上级账户
                   "field_Y4Ii1__c", //本年累计进项(费用额度)
                   "field_n0t4k__c", //下级账户本年累计进项
                   "field_hv321__c", //下级账户本年累计出项
                   "field_m8K7O__c", //账户期初结转金额
                   ]
def (boolean error, List dataList, String errorMessage) = Fx.object.findByIds("object_tlU1k__c", ids, FQLAttribute.builder().columns(needFields).build())
dataList.each { item ->
    Map map_data = item as Map
    //处理业务逻辑
    String leiXing = map_data["record_type"] as String //业务类型
    if (!"record_type".equals(leiXing)) {
        //获取上级账户的id
        String sj_id = map_data["field_aBs7b__c"] as String
        //本年累计进项
        BigDecimal bnlj_into = map_data["field_Y4Ii1__c"] as BigDecimal
        if (!bnlj_into) {
            bnlj_into = 0.00
        }
        log.info("本年累计进项: " + bnlj_into)
        //本年累计出项
        BigDecimal bnlj_outto = map_data["field_7705T__c"] as BigDecimal
        if (!bnlj_outto) {
            bnlj_outto = 0.00
        }
        log.info("本年累计出项: " + bnlj_outto)
 
//下级账户累计出项
        BigDecimal xjzh_into = map_data["field_n0t4k__c"] as BigDecimal
        log.info("下级账户累计出项: " + xjzh_into)
 
//下级账户累计出项
        BigDecimal xjzh_outto = map_data["field_hv321__c"] as BigDecimal
        log.info("下级账户累计出项: " + xjzh_outto)
 
//账户期初结转
        BigDecimal zhqcjz = map_data["field_m8K7O__c"] as BigDecimal
        log.info("账户期初结转: " + zhqcjz)
        if (!zhqcjz) {
            zhqcjz = 0.00
        }
 
        BigDecimal sjzh_xjzh_into__sum = 0
        BigDecimal sjzh_xjzh_outto__sum = 0
        BigDecimal sjzh_qcjz__sum = 0
        Date date = Date.now()
 
//查询费用账户
        def ret = Fx.object.find("object_tlU1k__c", //查询上级费用账户对象下属 所有账户
                FQLAttribute.builder()
                        .columns(["field_n0t4k__c", "field_hv321__c", "field_u0192__c", "field_Y4Ii1__c", "field_7705T__c", "field_m8K7O__c"]) //返回的下级累计进项、下级累计出项、下级账户期初结转
                        .queryTemplate(QueryTemplate.AND(["field_aBs7b__c": QueryOperator.EQ(sj_id)]))//,["field_242ks__c":Operator.GTE(date)]
                        .limit(100)
                        .build(),
                SelectAttribute.builder().build()).result() as QueryResult
        log.info(ret)
 
        List fy_list = ret["dataList"] as List
        log.info("fy_list: " + fy_list)
//取出费用账户的下级账户累计进项、累计出项
 
        fy_list.each { fy_item ->   //下级所有进项金额,出项金额累加
            Map map = (Map) fy_item
            if (true) {
                map.get("field_n0t4k__c") ? 1 : map.put("field_n0t4k__c", 0.00)
                if (!map["field_Y4Ii1__c"]) {
                    map.put("field_Y4Ii1__c", 0.00)
                }
                sjzh_xjzh_into__sum = sjzh_xjzh_into__sum + (BigDecimal) map["field_n0t4k__c"] + (BigDecimal) map["field_Y4Ii1__c"]
                //进项
            }
            if (true) {
                map.get("field_7705T__c") ? 1 : map.put("field_7705T__c", 0.00)
                if (!map["field_hv321__c"]) {
                    map.put("field_hv321__c", 0.00)
                }
                sjzh_xjzh_outto__sum = sjzh_xjzh_outto__sum + (BigDecimal) map["field_hv321__c"] + (BigDecimal) map["field_7705T__c"]
                //出项
            }
            if (true) {
                map.get("field_m8K7O__c") ? 1 : map.put("field_m8K7O__c", 0.00)
                if (!map["field_u0192__c"]) {
                    map.put("field_u0192__c", 0.00)
                }
                sjzh_qcjz__sum = sjzh_qcjz__sum + (BigDecimal) map["field_u0192__c"] + (BigDecimal) map["field_m8K7O__c"]
//下级账户期初结转
            }
        }
//更新下级累计进项和出项
        def fy_Map = ["field_n0t4k__c": sjzh_xjzh_into__sum,
                      "field_hv321__c": sjzh_xjzh_outto__sum,
                      "field_u0192__c": sjzh_qcjz__sum]
        log.info(fy_Map)
        log.info("商机账户id:" + sj_id)
        if (sj_id) {
            def result = Fx.object.update("object_tlU1k__c", sj_id, fy_Map, null, ActionAttribute.create()).result() as Map
            log.info(result["objectData"])
        }
 
    }
}
 

Map map = context.data as Map  
//处理业务逻辑  
String id = map["_id"] as String  //数据id  
String name = map["name"] as String  //账户编码  
String before_name = name as String  //账户编码  
name = name.replace("24", "25")     //账户编码:24转25  
String accountName = map["field_A8a5g__c"] as String  //账户名称  
if (accountName) {  
    accountName = accountName.replace("24", "25")//账户名称中24替换为25  
}  
List sale_owner = map["field_yrCyI__c"] as List  //销售代表  
String organzation = "1" //组织:长园深瑞  
String region_id = map["macro_region_text__c"] as String //大区文本  
region_id = region_id.replace("24", "25")  
//获取大区  
def (Boolean error_1, Map data_1, String errorMessage_1) = Fx.object.findOne("object_G1rnx__c", //对象apiName  
        FQLAttribute.builder()  
                .columns(["_id", "name"]) //需要返回的字段  
                .queryTemplate(QueryTemplate.AND(["field_w2aCs__c": region_id])) //查询条件  
                .build(),  
        SelectAttribute.builder()  
                .needQuote(true) //是否实时处理引用字段,默认true  
                .build())  
def map_1 = data_1 as Map  
String region = map_1["_id"] as String //大区  
String shengQu_id = map["province_area_text__c"] as String //省区  
String shengQu = "" //省区  
if (shengQu_id) {  
    shengQu_id = shengQu_id.replace("24", "25")//省区文本中24替换为25  
    def (Boolean error_2, Map data_2, String errorMessage_2) = Fx.object.findOne("object_M8s68__c", //对象apiName  
            FQLAttribute.builder()  
                    .columns(["_id", "name"]) //需要返回的字段  
                    .queryTemplate(QueryTemplate.AND(["name": shengQu_id])) //查询条件  
                    .build(),  
            SelectAttribute.builder()  
                    .needQuote(true) //是否实时处理引用字段,默认true  
                    .build())  
    def map_2 = data_2 as Map  
    shengQu = map_2["_id"] as String //省区  
}  
List region_list = map["field_LR1l6__c"] as List //区域负责人  
String is_total = map["field_Q2t6y__c"] as String //是否汇总账户  
String is_public = map["field_0KgPb__c"] as String //是否公共费池  
Date begin_date = "2025-01-01"//生效日期  
Date end_date = "2025-12-31"//失效日期  
String is_sync = "0"  //是否同步默认为否  
String parent_id = "" //上级账户id  
String parentAccount = map["field_aBs7b__c"] as String //当前数据上级账户id  
if (parentAccount) {  
    def (Boolean error_find, Map data_find, String errorMessage_find) = Fx.object.findById("object_tlU1k__c", //对象apiName  
            parentAccount, //数据id  
            FQLAttribute.builder()  
                    .columns(["_id", "name", "transfer_storage__c"]) //需要返回的字段  
                    .build(),  
            SelectAttribute.builder()  
                    .build())  
    log.info("上级账户:" + data_find)  
    parent_id = data_find["transfer_storage__c"] as String  
    // map.put("field_aBs7b__c", data_find["transfer_storage__c"]) //上级账户id  
} else {  
    // map.put("field_aBs7b__c", null) //上级账户id  
    log.info("没有上级账户!")  
}  
List data_owner = map["owner"] as List //负责人  
String owner_department = map["owner_department"] as String //负责人主属部门  
String ywlx = map["record_type"] as String //业务类型  
//创建主表数据  
Map masterData = ["name"                : name, //账户编码  
                  "field_A8a5g__c"      : accountName, //账户名称  
                  "field_LR1l6__c"      : region_list, //区域负责人  
                  "field_0opVt__c"      : region, //大区  
                  "field_l1b1v__c"      : organzation,  
                  "field_Q2t6y__c"      : is_total, //是否汇总账户  
                  "field_0KgPb__c"      : is_public, //是否公共费池  
                  "field_28Wa2__c"      : begin_date, //生效日期  
                  "field_242ks__c"      : end_date, //失效日期  
                  "field_sync_or_not__c": is_sync, //是否同步  
                  "owner"               : data_owner, //负责人  
                  "owner_department"    : owner_department, //负责人主属部门  
                  "record_type"         : ywlx, //业务类型  
                  "field_aBs7b__c"      : parent_id,//上级账户  
                  "transfer_storage__c" : before_name, //中转寄存  
                  "field_cZ4Qe__c"      : shengQu, //省区  
                  "field_yrCyI__c"      : sale_owner //销售代表  
]  
//创建费用账户  
def (Boolean error_create, Map data_create, String errorMessage_create) = Fx.object.create("object_tlU1k__c", masterData, null, CreateAttribute.builder().build())  
if (error_create) {  
    log.error("获取对象异常" + errorMessage_create)  
} else {  
    Map item_1 = data_create["data"] as Map  
    String dataId = item_1["_id"] as String  
    log.info("创建成功:" + dataId)  
    def (Boolean error_update, Map data_update, String errorMessage_update) = Fx.object.update("object_tlU1k__c", id, ["transfer_storage__c": dataId], UpdateAttribute.builder().triggerWorkflow(false).build())  
}

    Map _data = context.data as Map  //获取数据
    Map map = _data as Map
    String id = map["_id"] as String
    map.put("transfer_storage__c", id) //中转寄存:源数据id
    map.put("_id", null) //id置为空
    String name = map["name"] as String  //账户编码
    name = name.replace("24", "25") //账户编码中24替换为25
    map.put("name", name)
    String accountName = map["field_A8a5g__c"] as String  //账户名称
    accountName = accountName.replace("24", "25")//账户名称中24替换为25
    map.put("field_A8a5g__c", accountName) //账户名称
    BigDecimal localBalance = map["field_7172F__c"] as BigDecimal  //本级账户余额
    map.put("field_m8K7O__c", localBalance) //账户期初结转金额
    map.put("field_sync_or_not__c", "0") //是否同步:否
    def (Boolean error, Map data, String errorMessage) = Fx.object.create("object_tlU1k__c", map, null,
    CreateAttribute.builder().build())
    if (error) {
      log.error("获取对象异常" + errorMessage)
    }

    Map _data = context.data as Map
    Map map = _data as Map
    String id = map["_id"] as String
    map.put("_id", null) //id置为空
    String name = map["name"] as String  //账户编码
    map.put("transfer_storage__c", name) //中转寄存:源数据name
    name = name.replace("24", "25")
    map.put("name", name)//账户编码中24替换为25
    String accountName = map["field_A8a5g__c"] as String  //账户名称
    if(accountName){
      accountName = accountName.replace("24", "25")//账户名称中24替换为25
      map.put("field_A8a5g__c", accountName) //账户名称
    }
    BigDecimal localBalance = map["field_7172F__c"] as BigDecimal  //本级账户余额
    map.put("field_m8K7O__c", localBalance) //账户期初结转金额
    map.put("field_sync_or_not__c", "0") //是否同步:否
    //链接上级费用账户
    String parentAccount = map["field_aBs7b__c"] as String //当前数据上级账户id
    if(parentAccount){
      def (Boolean error_find,Map data_find,String errorMessage_find) = Fx.object.findById("object_tlU1k__c", //对象apiName
             parentAccount, //数据id
             FQLAttribute.builder()
                .columns(["_id","name","transfer_storage__c"]) //需要返回的字段
                .build(),
             SelectAttribute.builder()
                .build())
      log.info("上级账户:" + data_find)
      map.put("field_aBs7b__c", data_find["transfer_storage__c"]) //上级账户id
    }else{
      map.put("field_aBs7b__c", null) //上级账户id
    }
    //创建费用账户
    def (Boolean error, Map data, String errorMessage) = Fx.object.create("object_tlU1k__c", map, null, 
                                                         CreateAttribute.builder().build())
    if (error) {
      log.error("获取对象异常" + errorMessage)
    }else{
      Map item = data["data"] as Map   //创建成功返回的数据
      String dataId = item["_id"] as String   //获取创建后数据的id
      log.info("创建成功:" + dataId)
      //创建后的数据id赋值给源数据中的【中转寄存】字段中
      def (Boolean error_update, Map data_update, String errorMessage_update) = Fx.object.update("object_tlU1k__c", id, 
        ["transfer_storage__c": dataId], UpdateAttribute.builder().triggerWorkflow(false).build())
    }