Fx.crm

Fx.crm:和CRM操作相关的API

1. getProduct 产品

Fx.crm.getProduct()

返回值类型

ProductAPI

(1).参考ProductAPI


2. getLeads 线索

Fx.crm.getLeads()

返回值类型

LeadsAPI

(1).参考LeadsAPI


3. getAccount 客户

Fx.crm.getAccount()

返回值类型

AccountAPI

(1).参考AccountAPI


4. getBom Bom

Fx.crm.getBom()

返回值类型

BomAPI

(1).参考BomAPI


5. getEnterpriseByName 通过公司名称模糊查询工商信息

Fx.crm.getEnterpriseByName(<String companyName>)

参数说明

参数 类型 说明
companyName String 公司名称

返回值类型

APIResult

返回值说明

返回的数据类型: List

Java举例

APIResult ret = Fx.crm.getEnterpriseByName("百度");
if (ret.isError()) {
    log.info(ret.message());
} else {
    log.info(ret.getData());
}

Groovy举例

def(Boolean error, List data, String errorMessage) = Fx.crm.getEnterpriseByName("百度")

6. getEnterpriseDetailById 通过companyId查询工商信息

Fx.crm.getEnterpriseDetailById(<String companyId>)

参数说明

参数 类型 说明
companyId String

返回值类型

APIResult

返回值说明

返回的数据类型: Map

Java举例

APIResult ret = Fx.crm.getEnterpriseDetailById("1644990310");
if (ret.isError()) {
    log.info(ret.message());
} else {
    log.info(ret.getData());
}

Groovy举例

def(Boolean error, Map data, String errorMessage) = Fx.crm.getEnterpriseDetailById("1644990310")

参考类 com.fxiaoke.functions.api.ProductAPI

1. 产品上架下架

shelf(<String productId>, <Integer status>)

参数说明

参数 类型 说明
productId String 产品id
status Integer status = 1上架,status = 2 下架

返回值类型

APIResult

返回值说明

返回的数据类型: Map

Java举例

APIResult ret = Fx.crm.getProduct().shelf("e1e145095f8142c891802fa36fcbd4c6", 1); //上架产品
APIResult ret1 = Fx.crm.getProduct().shelf("e1e145095f8142c891802fa36fcbd4c6", 2); //下架产品

Groovy举例:

def (Boolean err,Map data,String errorMessage) = Fx.crm.product.shelf("e1e145095f8142c891802fa36fcbd4c6", 1) //上架产品
def (Boolean err,Map data,String errorMessage) = Fx.crm.product.shelf("e1e145095f8142c891802fa36fcbd4c6",2) //下架产品

2. 创建产品分类

createProductCategory(<String name>, <String categoryCode>, <String pid>)

参数说明

参数 类型 说明
name String 产品分类名称
categoryCode String 产品分类编码
pid String 父类产品Id

返回值类型

APIResult

返回值说明

返回的数据类型: Map

Java举例

APIResult ret = Fx.crm.getProduct().createProductCategory("产品分类名","产品分类编码",null);
APIResult ret1 = Fx.crm.getProduct().createProductCategory("产品分类名","产品分类编码","123");

Groovy举例:

def (Boolean err,Map data,String errorMessage) = Fx.crm.product.createProductCategory("产品分类名","产品分类编码",null)
def (Boolean err,Map data,String errorMessage) = Fx.crm.product.createProductCategory("产品分类名","产品分类编码","123")

3. 删除产品分类

deleteProductCategory(<String id>)

参数说明

参数 类型 说明
id String 产品分类id

返回值类型

APIResult

返回值说明

返回的数据类型: Map

Java举例

APIResult ret = Fx.crm.getProduct().deleteProductCategory("d23r23fc234143jhsuad");
if (ret.isError()) {
    log.info(ret.message());
} else {
    log.info(ret.getData());
}

Groovy举例:

def res = (((Fx.object.find("ProductCategoryObj",[["category_code":"111"]],  10,  0)[1]) as QueryResult).dataList[0] as Map)
def id = (res._id) as String
def (Boolean error,Map data,String errorMessage) = Fx.crm.product.deleteProductCategory(id)
log.info(data)

4. 修改产品分类

updateProductCategory(<String id>, <Map arg>)

参数说明

参数 类型 说明
id String 产品分类id
arg Map 更新产品分类内容

返回值类型

APIResult

返回值说明

返回的数据类型: Map

Java举例

Map<String, Object>map = Maps.newHashMap();
map.put("name", "111");
map.put("categoryCode", "222");
APIResult ret = Fx.crm.getProduct().updateProductCategory("d23r23fc234143", map);
if (ret.isError()) {
    log.info(ret.message());
} else {
    log.info(ret.getData());
}

Groovy举例:

def res = (((Fx.object.find("ProductCategoryObj",[["category_code":"111"]], 10, 0)[1]) as QueryResult).dataList[0] as Map)
def id = (res._id) as String
Map map = ["name":"111","categoryCode":"222"]
//修该产品分类
def (boolean err,Map dataList,String errorMessage) = Fx.crm.product.updateProductCategory(id,map)

5. 根据字段值查询分类数据

searchCategory(<String fieldApiName>, <List values>)

参数说明

参数 类型 说明
fieldApiName String 分类上的字段ApiName,用于根据该字段搜索分类数据,参数:"category_code"
values List 字段值 List,最多20个

返回值类型

APIResult

返回值说明

返回的数据类型: List

Java举例

// 字段apiName,支持:“cayegory_code”
String fieldApiName = "category_code";
// 搜索的字段值,最大20个
List<String>values = Lists.newArrayList("pNxTqSPS");
APIResult ret = Fx.crm.getProduct().searchCategory(fieldApiName, values);
if (ret.isError()) {
    log.info(ret.message());
} else {
    log.info(ret.getData());
}

Groovy举例:

// 字段apiName,支持:“cayegory_code”
def fieldApiName = "category_code"
// 搜索的字段值,最大20个
def values = ["pNxTqSPS"]
def(boolean error, List data, String message) = Fx.crm.product.searchCategory(fieldApiName, values)
if (error) {
  log.info("error: " + message)
} else {
  log.info(data)
}

6. 产品属性关联

associateAttribute(<List product_ids>, <List attribute_ids>)

参数说明

参数 类型 说明
product_ids List 产品id数组
attribute_ids List 属性id数组

返回值类型

APIResult

返回值说明

返回的数据类型: List

Java举例

// 产品id列表:"product_ids"
List product_ids = Lists.newArrayList("xxxxx");
// 属性id列表
List attribute_ids = Lists.newArrayList("xxxxx");
APIResult ret = Fx.crm.product.associateAttribute(product_ids, attribute_ids);
if (ret.isError()) {
    log.info(ret.message());
} else {
    log.info(ret.getData());
}

Groovy举例:

// 产品id列表:"product_ids"
def product_ids = ["xxxxx"]
// 属性id列表
def attribute_ids= ["xxxxx"]
def(boolean error, List data, String message) = Fx.crm.product.associateAttribute(product_ids, attribute_ids)
if (error) {
  log.info("error: " + message)
} else {
  log.info(data)
}

7. 产品属性解除关联

disAssociateAttribute(<List product_ids>, <List attribute_ids>)

参数说明

参数 类型 说明
product_ids List 产品id数组
attribute_ids List 属性id数组

返回值类型

APIResult

返回值说明

返回的数据类型: List

Java举例

// 产品id列表:"product_ids"
List product_ids = Lists.newArrayList("xxxxx");
// 属性id列表
List attribute_ids = Lists.newArrayList("xxxxx");
APIResult ret = Fx.crm.product.disAssociateAttribute(product_ids, attribute_ids);
if (ret.isError()) {
    log.info(ret.message());
} else {
    log.info(ret.getData());
}

Groovy举例:

// 产品id列表:"product_ids"
def product_ids = ["xxxxx"]
// 属性id列表
def attribute_ids= ["xxxxx"]
def(boolean error, List data, String message) = Fx.crm.product.disAssociateAttribute(product_ids, attribute_ids)
if (error) {
  log.info("error: " + message)
} else {
  log.info(data)
}

参考类 com.fxiaoke.functions.api.LeadsAPI

1. 线索转移

move(<String leadsId>, <String leadsPoolId>)

参数说明

参数 类型 说明
leadsId String 线索Id
leadsPoolId String 线索池Id

返回值类型

APIResult

返回值说明

返回的数据类型: String

Java举例

APIResult ret =  Fx.crm.getLeads().move("05f3f656feb9496abaa4cf50f1fa22ce", "85f454b044894f83a57e1bacfd2f1beb");
if (ret.isError()) {
    log.info(ret.message());
} else {
    log.info(ret.getData());
}

Groovy举例:

def (Boolean err,String data,String errorMessage) = Fx.crm.leads.move("05f3f656feb9496abaa4cf50f1fa22ce", "85f454b044894f83a57e1bacfd2f1beb")

2. 线索退回

giveBack(<String leadsId>, <String leadsPoolId>, <String backReason>, <String otherReason>)

参数说明

参数 类型 说明
leadsId String 线索Id
leadsPoolId String 线索池Id
backReason String 退回原因,对应对象上退回原因选项值,传选项值的value,默认为"return by function",非必填
otherReason String backReason 如果是other的话,可以在 otherReason 中传其它的详细内容,非必填

返回值类型

APIResult

返回值说明

返回的数据类型: String

Java举例

APIResult ret = Fx.crm.getLeads().giveBack("05f3f656feb9496abaa4cf50f1fa22ce", "85f454b044894f83a57e1bacfd2f1beb");
if (ret.isError()) {
    log.info(ret.message());
} else {
    log.info(ret.getData());
}

Groovy举例:

Fx.crm.leads.giveBack("05f3f656feb9496abaa4cf50f1fa22ce", "85f454b044894f83a57e1bacfd2f1beb")

3. 线索分配

allocate(<List accountIds>, <String leadsPoolId>, <String ownerId>)

参数说明

参数 类型 说明
accountIds List 线索Id列表
leadsPoolId String 线索池Id
ownerId String 用户id

返回值类型

APIResult

返回值说明

返回的数据类型: String

Java举例

APIResult ret = Fx.crm.getLeads().allocate(Lists.newArrayList("3ed01dcafbe4402d99d7a521aaa4e9c3"), "85f454b044894f83a57e1bacfd2f1beb", "1025");
if (ret.isError()) {
    log.info(ret.message());
} else {
    log.info(ret.getData());
}

Groovy举例:

Fx.crm.leads.allocate(["3ed01dcafbe4402d99d7a521aaa4e9c3"], "85f454b044894f83a57e1bacfd2f1beb", "1025")

4. 线索收回

takeBack(<List accountIds>, <String leadsPoolId>)

参数说明

参数 类型 说明
accountIds List 线索Id列表
leadsPoolId String 线索池Id

返回值类型

APIResult

返回值说明

返回的数据类型: String

Java举例

APIResult ret = Fx.crm.getLeads().takeBack(Lists.newArrayList("3ed01dcafbe4402d99d7a521aaa4e9c3"), "85f454b044894f83a57e1bacfd2f1beb");
if (ret.isError()) {
    log.info(ret.message());
} else {
    log.info(ret.getData());
}

Groovy举例:

Fx.crm.leads.takeBack(["3ed01dcafbe4402d99d7a521aaa4e9c3"], "85f454b044894f83a57e1bacfd2f1beb")

5. 线索一转三

transfer(<Boolean combineCRMFeed>, <Boolean putTeamMembersIntoCustomer>, <String leadsId>, <Map account>, <Map contact>, <Map newOpportunity>, <Map opportunity>)

参数说明

参数 类型 说明
combineCRMFeed Boolean 销售线索的销售记录自动带入客户
putTeamMembersIntoCustomer Boolean 销售线索的相关团队自动带入客户
leadsId String 销售线索的id
account Map 客户的Map , 如果存在_id 则关联旧客户,如果不存在id 则创建新客户
contact Map 转换成联系人的Map
newOpportunity Map 转换成商机2。0的数据
opportunity Map 转换成商机的数据

返回值类型

APIResult

Java举例

String leadsId = "05f3f656feb9496abaa4cf50f1fa22ce";
Map<String, Object>account = Maps.newHashMap();
account.put("object_describe_api_name", "AccountObj");
account.put("record_type", "default__c");
account.put("created_by", Lists.newArrayList("1109"));
account.put("name", "hello");

Map<String, Object>contact = Maps.newHashMap();
Map<String, Object>newOpportunity = Maps.newHashMap();
Map<String, Object>opportunity = Maps.newHashMap();

APIResult ret = Fx.crm.getLeads().transfer(true, true, leadsId, account, contact, newOpportunity, opportunity);
if (ret.isError()) {
    log.info(ret.message());
} else {
    log.info(ret.getData());
}

Groovy举例:

String leadsId = "05f3f656feb9496abaa4cf50f1fa22ce"
Map account = [
  "object_describe_api_name": "AccountObj",
  "record_type": "default__c",
  "created_by": [
    "1109"
  ],
  "name": "hello"
]
Map contact = [:]
Map newOpportunity = [:]
Map opportunity = [:]
def(boolean error, Object data, String msg) = Fx.crm.leads.transfer(true, true, leadsId, account, contact, newOpportunity, opportunity)
if (error) {
  log.info(data)
} else {
  log.info(msg)
}

参考类 com.fxiaoke.functions.api.AccountAPI

1. 客户转移公海

move(<String accountId>, <String highSeaId>)

参数说明

参数 类型 说明
accountId String 客户Id
highSeaId String 公海Id

返回值类型

APIResult

返回值说明

返回的数据类型: String

Java举例

Fx.crm.getAccount().move("ad14bbbcede240a48dc2f65787a8763d","6c1a6a54617245fe90aae5a162eb191d").result();

Groovy举例:

Fx.crm.account.move("ad14bbbcede240a48dc2f65787a8763d","6c1a6a54617245fe90aae5a162eb191d").result()

2. 客户移除公海

remove(<String accountId>, <String highSeaId>, <String owner>)

参数说明

参数 类型 说明
accountId String 客户Id
highSeaId String 公海Id
owner String 负责人id

返回值类型

APIResult

返回值说明

返回的数据类型: String

Java举例

Fx.crm.getAccount().remove("ad14bbbcede240a48dc2f65787a8763d","6c1a6a54617245fe90aae5a162eb191d","1000").result();

Groovy举例:

Fx.crm.account.remove("ad14bbbcede240a48dc2f65787a8763d","6c1a6a54617245fe90aae5a162eb191d","1000").result()

3. 客户退回公海

giveBack(<String accountId>, <String highSeaId>, <String backReason>, <String otherReason>)

参数说明

参数 类型 说明
accountId String 客户Id
highSeaId String 公海Id
backReason String 退回原因,对应对象上退回原因选项值,传选项值的value,默认为"return by function",非必填
otherReason String backReason 如果是other的话,可以在 otherReason 中传其它的详细内容,非必填

返回值类型

APIResult

返回值说明

返回的数据类型: String

Java举例

Fx.crm.getAccount().giveBack("ad14bbbcede240a48dc2f65787a8763d","6c1a6a54617245fe90aae5a162eb191d", "other", "不符合").result();

Groovy举例:

Fx.crm.account.giveBack("ad14bbbcede240a48dc2f65787a8763d","6c1a6a54617245fe90aae5a162eb191d", "other", "不符合").result()

4. 客户领取

takeOut(<List accountIds>)

参数说明

参数 类型 说明
accountIds List 客户Id列表

返回值类型

APIResult

返回值说明

返回的数据类型: String

Java举例

Fx.crm.getAccount().takeOut(Lists.newArrayList("ad14bbbcede240a48dc2f65787a8763d", "6c1a6a54617245fe90aae5a162eb191d")).result();

Groovy举例:

Fx.crm.account.takeOut(["ad14bbbcede240a48dc2f65787a8763d", "6c1a6a54617245fe90aae5a162eb191d"]).result()

5. 客户分配

allocate(<List accountIds>, <String highSeaId>, <String ownerId>)

参数说明

参数 类型 说明
accountIds List 客户Id列表
highSeaId String 公海Id
ownerId String 用户Id

返回值类型

APIResult

返回值说明

返回的数据类型: String

Java举例

Fx.crm.getAccount().allocate(Lists.newArrayList("cd097b120f584533b627c40239ece7d0"),"0ebc054e55254b8b89f09d7ac7602972","1025").result();

Groovy举例:

Fx.crm.account.allocate(["cd097b120f584533b627c40239ece7d0"],"0ebc054e55254b8b89f09d7ac7602972","1025").result()

6. 客户收回

takeBack(<List accountIds>, <String highSeaId>)

参数说明

参数 类型 说明
accountIds List 客户Id列表
highSeaId String 公海Id

返回值类型

APIResult

返回值说明

返回的数据类型: String

Java举例

Fx.crm.getAccount().takeBack(Lists.newArrayList("cd097b120f584533b627c40239ece7d0"),"0ebc054e55254b8b89f09d7ac7602972").result();

Groovy举例:

Fx.crm.account.takeBack(["cd097b120f584533b627c40239ece7d0"],"0ebc054e55254b8b89f09d7ac7602972").result()

参考类 com.fxiaoke.functions.api.BomAPI

1. 保存产品选配明细

bomDeploy(<String rootProductId>, <List nodeList>, <List deletedBomAndGroupList>)

参数说明

参数 类型 说明
rootProductId String 根节点产品id
nodeList List 新增修改数据数组
deletedBomAndGroupList List 删除数据数组

返回值类型

APIResult

返回值说明

返回的数据类型: Map

Java举例

// 需要删除的节点数据
List deletedBomAndGroupList= Lists.newArrayList();
// 需要新增和修改的节点数据
List nodeList = Lists.newArrayList();
String rootProductId = "6406f80060c1980001a23560";
APIResult ret = Fx.crm.getBom.bomDeploy(rootProductId, nodeList, deletedBomAndGroupList);
log.info(ret);
if (ret.isError()) {
  log.info(ret.message());
} else{
  log.info(ret.getData());
}

Groovy举例:

// 需要删除的节点数据
def deletedBomAndGroupList=[]
// 需要新增和修改的节点数据
def nodeList = [
  [
    "object_describe_api_name": "ProductGroupObj",
    "name": "分组一",
    "group_options_control": false,
    "min_prod_count": null,
    "max_prod_count": null,
    "children": [
      [
        "record_type": "default__c",
        "object_describe_api_name": "BOMObj",
        "price_editable": true,
        "price_mode": "1",
        "amount": "3",
        "min_amount": "2",
        "selected_by_default": true,
        "increment": "1",
        "is_required": false,
        "life_status": "normal",
        "enabled_status": true,
        "amount_editable": true,
        "max_amount": "5",
        "product_id": "640716930f8b230001378dea",
        "action_type": "create",
        "adjust_price": "3.00"
      ]
    ],
    "action_type": "create",
    "record_type": "default__c"
  ]
]
// 根节点产品id
def rootProductId="6406f80060c1980001a23560"
def(boolean error, Map data, String message) = Fx.crm.bom.bomDeploy(rootProductId, nodeList, deletedBomAndGroupList)
if (error) {
  log.info("error: " + message)
} else {
  log.info(data)
}

2. 产品组合新建

add(<Map objectData>, <Map details>)

参数说明

参数 类型 说明
objectData Map 主对象
details Map 从对象Map

返回值类型

APIResult

返回值说明

Map

Groovy举例:

Map masterData = [
        "product_id"              : "6600e02fab2ffd00073faad2",//父项产品,必填,产品ID
        "category"                : "configure",//BOM类型(configure-配置BOM,standard-标准BOM)
        "purpose"                 : "sale", //BOM用途,sale-销售BOM (固定,不要改)
        "object_describe_api_name": "BomCoreObj", //(固定,不要改)
        "owner"                   : ["-10000"],
        "record_type"             : "default__c"
];

List details = [];
Map product1 = [
        "record_type"             : "default__c",
        "object_describe_api_name": "BOMObj", //表示子件
        "product_id"              : "65fd50dd9f9a2d000128c294", //必填
        "amount"                  : "1",//数量
        "price_mode"              : "1",//定价模式 1-配置价格 2-价目表价格
        "adjust_price"            : 200, //定价模式为 价目表价格 时,可以不设置此字段
        "is_required"             : true,//是否必须
        "selected_by_default"     : true,//是否默认选中
        "price_editable"          : false,//价格是否可编辑
        "amount_editable"         : false,//数量是否可编辑
        "increment"               : 1,//增加数量幅度
        "enabled_status"          : true,//启用状态
        "order_field"             : "1",//显示顺序
        "action_type"             : "create",
        "children"                : [] //子件下允许挂子件,如果没有子件,可以不设置
];
details.add(product1);


List children = [
        [
                "action_type"             : "create",
                "record_type"             : "default__c",
                "object_describe_api_name": "BOMObj",//必填
                "product_id"              : "65fd50dd9f9a2d000128c294", //必填
                "amount"                  : "1",
                "price_mode"              : "1",
                "adjust_price"            : 300,
                "is_required"             : true,
                "selected_by_default"     : true,
                "price_editable"          : false,
                "amount_editable"         : false,
                "increment"               : 1,
                "enabled_status"          : true,
                "order_field"             : "1"
        ],
        [
                "action_type"             : "create",
                "record_type"             : "default__c",
                "object_describe_api_name": "BOMObj", //必填
                "product_id"              : "6603c02d491f7e00079431ca", //必填
                "amount"                  : "1",
                "price_mode"              : "1",
                "adjust_price"            : 300,
                "is_required"             : true,
                "selected_by_default"     : true,
                "price_editable"          : false,
                "amount_editable"         : false,
                "increment"               : 1,
                "enabled_status"          : true,
                "order_field"             : "1"
        ]
];


Map group = [
        "record_type"             : "default__c",
        "object_describe_api_name": "ProductGroupObj",////表示分组
        "name"                    : "测试分组信息",
        "order_field"             : "1",//设置显示顺序
        "group_options_control"   : true,
        "action_type"             : "create",
        "children"                : children //分组下所挂的子件
];
details.add(group);


def (boolean error, Map data, String message) = Fx.crm.bom.add(masterData, ["BOMObj": details]);
if (error) {
    log.info("错误信息:" + message);
} else {
    log.info("返回结果:" + data);
}

3. 产品组合编辑

edit(<Map objectData>, <Map details>)

参数说明

参数 类型 说明
objectData Map 主对象
details Map 从对象Map

返回值类型

APIResult

返回值说明

Map

Groovy举例:

Map masterData = [
        "product_id"              : "6600e02fab2ffd00073faad2",//父项产品,必填,产品ID
        "category"                : "configure",//BOM类型(configure-配置BOM,standard-标准BOM)
        "purpose"                 : "sale", //BOM用途,sale-销售BOM (固定,不要改)
        "object_describe_api_name": "BomCoreObj", //(固定,不要改)
        "owner"                   : ["-10000"],
        "record_type"             : "default__c"
];

List details = [];
Map product1 = [
        "record_type"             : "default__c",
        "object_describe_api_name": "BOMObj", //表示子件
        "product_id"              : "65fd50dd9f9a2d000128c294", //必填
        "amount"                  : "1",//数量
        "price_mode"              : "1",//定价模式 1-配置价格 2-价目表价格
        "adjust_price"            : 200, //定价模式为 价目表价格 时,可以不设置此字段
        "is_required"             : true,//是否必须
        "selected_by_default"     : true,//是否默认选中
        "price_editable"          : false,//价格是否可编辑
        "amount_editable"         : false,//数量是否可编辑
        "increment"               : 1,//增加数量幅度
        "enabled_status"          : true,//启用状态
        "order_field"             : "1",//显示顺序
        "action_type"             : "create",
        "children"                : [] //子件下允许挂子件,如果没有子件,可以不设置
];
details.add(product1);


List children = [
        [
                "action_type"             : "create",
                "record_type"             : "default__c",
                "object_describe_api_name": "BOMObj",//必填
                "product_id"              : "65fd50dd9f9a2d000128c294", //必填
                "amount"                  : "1",
                "price_mode"              : "1",
                "adjust_price"            : 300,
                "is_required"             : true,
                "selected_by_default"     : true,
                "price_editable"          : false,
                "amount_editable"         : false,
                "increment"               : 1,
                "enabled_status"          : true,
                "order_field"             : "1"
        ],
        [
                "action_type"             : "create",
                "record_type"             : "default__c",
                "object_describe_api_name": "BOMObj", //必填
                "product_id"              : "6603c02d491f7e00079431ca", //必填
                "amount"                  : "1",
                "price_mode"              : "1",
                "adjust_price"            : 300,
                "is_required"             : true,
                "selected_by_default"     : true,
                "price_editable"          : false,
                "amount_editable"         : false,
                "increment"               : 1,
                "enabled_status"          : true,
                "order_field"             : "1"
        ]
];


Map group = [
        "record_type"             : "default__c",
        "object_describe_api_name": "ProductGroupObj",////表示分组
        "name"                    : "测试分组信息",
        "order_field"             : "1",//设置显示顺序
        "group_options_control"   : true,
        "action_type"             : "create",
        "children"                : children //分组下所挂的子件
];
details.add(group);


def (boolean error, Map data, String message) = Fx.crm.bom.edit(masterData, ["BOMObj": details]);
if (error) {
    log.info("错误信息:" + message);
} else {
    log.info("返回结果:" + data);
}
2024-05-16
52 6