已知:7个产品编码字段:【"cpxlh01__c", "cpxlh02__c", "cpxlh03__c", "cpxlh04__c", "cpxlh05__c", "cpxlh06__c", "cpxlh07__c"】
Groovy代码:
1、2024.4.1日之前创建的工作流函数支持context.details
def deliveryNoteProductObj = context.details['DeliveryNoteProductObj']
// 定义一个函数来合并非空字段
def mergeFields = { obj ->
def mergedValues = obj.findAll { it != null && it != '' }.join(';')
return mergedValues ?: null
}
// 遍历每个对象,合并指定字段的值
deliveryNoteProductObj.each { product ->
product['cpxlhhz'] = mergeFields([
product['cpxlh01__c'],
product['cpxlh02__c'],
product['cpxlh03__c'],
product['cpxlh04__c'],
product['cpxlh05__c'],
product['cpxlh06__c'],
product['cpxlh07__c']
])
}
List receiverIds = context.data['owner'];
//receiverIds.add("1187");
String fahuodan = context.data['name'];
context.details['DeliveryNoteProductObj'].each { product ->
String[] X = product['field_QFDcq__c'].toString().split(",")
String[] Y = product['product_id'].toString().split(",")
String[] Z = product['field_nWxfS__c'].toString().split(",")
String[] M = product['delivery_num'].toString().split(",")
Z.eachWithIndex { item, int i9 ->
String[] L = M[i9].split(".")
if (product['cpxlhhz'] != null) {
String[] cpxlhhzArray = product['cpxlhhz'].toString().split(";")
cpxlhhzArray.each { cpxlhhz ->
String accountId = ((String) cpxlhhz).trim()
String zhibaoriqi = Date.of(Date.now().toTimestamp() + 32140800000)
Map<String, Object> masterData = [
"device_code" : accountId,
"device_name" : X[i9].trim(),
"device_product_id" : Y[i9].trim(),
"owner" : context.data['field_oPl83__c'],
"device_customer_id": context.data['account_id'],
"contact_id" : context.data['consignee'],
"field_j5Ldg__c" : accountId,
"field_7c6nY__c" : context.data['field_xZep7__c'],
"field_tkHAh__c" : context.data['_id'],
"field_qs9YC__c" : context.data['_id'],
"field_N4W79__c" : context.data['express_order_id'],
"field_4j3IG__c" : context.data['express_org'],
"buy_time" : context.data['field_8Oab0__c'],
"field_rp4mt__c" : context.data['field_jf41y__c'],
"field_zMlVT__c" : context.data['field_7O427__c'],
"field_52hfs__c" : context.data['field_ksJ9H__c'],
"field_2ct79__c" : context.data['field_65oxo__c'],
"field_w6h83__c" : zhibaoriqi
]
// 属于这几个分类ID的产品 并且 具备打印条件
if (Z[i9].matches(".*(79|80|81|82|83|95).*") && (context.data['field_v98mg__c'] == 'yes')) {
//查询设备对象
def ret = Fx.object.findOne("DeviceObj", FQLAttribute.builder().columns(["_id"]).queryTemplate(QueryTemplate.AND(["device_code": QueryOperator.EQ(accountId)])).build(), SelectAttribute.builder().build()).result() as Map;
if (ret == null) {
def (Boolean addPaymentErr, addPayment, String addPaymentMsg) = Fx.object.create('DeviceObj', masterData, null, true)
if (addPaymentErr) {
log.info("新建设备失败:" + addPaymentMsg)
Notice notice = Notice.defaultNotice()
def (Boolean error, String data, String errorMessage) = Fx.message.sendNotice(fahuodan, "新建设备失败:" + addPaymentMsg, receiverIds, notice)
if (error) {
log.info(errorMessage)
} else {
log.info(data)
}
} else {
log.info("新建设备成功")
}
log.info(masterData)
} else {
log.info("设备已存在:" + accountId)
}
} else {
log.info("不创建设备")
}
}
} else {
log.info("至少有一个设备序列号")
}
}
}
2、2024.4.1日后创建的工作流函数不再支持context.details
QueryResult queryRes = Fx.object.find("DeliveryNoteProductObj",
FQLAttribute.builder()
.columns([
"_id",
"cpxlh01__c",
"cpxlh02__c",
"cpxlh03__c",
"cpxlh04__c",
"cpxlh05__c",
"cpxlh06__c",
"cpxlh07__c",
"field_QFDcq__c",
"product_id",
"field_nWxfS__c",
"delivery_num"
])
.queryTemplate(QueryTemplate.AND(["delivery_note_id": QueryOperator.EQ(context.dataList['_id'][0])]))
.build(),
SelectAttribute.builder().build()).result() as QueryResult
def deliveryNoteProductObj = queryRes.dataList
// 定义一个函数来合并非空字段
def mergeFields = { obj ->
def mergedValues = obj.findAll { it != null && it != '' }.join(';')
return mergedValues ?: null
}
// 遍历每个对象,合并指定字段的值
deliveryNoteProductObj.each { product ->
product['cpxlhhz'] = mergeFields([
product['cpxlh01__c'],
product['cpxlh02__c'],
product['cpxlh03__c'],
product['cpxlh04__c'],
product['cpxlh05__c'],
product['cpxlh06__c'],
product['cpxlh07__c']
])
}
List receiverIds = context.data['owner'];
//receiverIds.add("1187");
String fahuodan = context.data['name'];
deliveryNoteProductObj.each { product ->
String[] X = product['field_QFDcq__c'].toString().split(",")
String[] Y = product['product_id'].toString().split(",")
String[] Z = product['field_nWxfS__c'].toString().split(",")
String[] M = product['delivery_num'].toString().split(",")
Z.eachWithIndex { item, int i9 ->
String[] L = M[i9].split(".")
if (product['cpxlhhz'] != null) {
String[] cpxlhhzArray = product['cpxlhhz'].toString().split(";")
cpxlhhzArray.each { cpxlhhz ->
String accountId = ((String) cpxlhhz).trim()
String zhibaoriqi = Date.of(Date.now().toTimestamp() + 32140800000)
Map<String, Object> masterData = [
"device_code" : accountId,
"device_name" : X[i9].trim(),
"device_product_id" : Y[i9].trim(),
"owner" : context.data['field_oPl83__c'],
"device_customer_id": context.data['account_id'],
"contact_id" : context.data['consignee'],
"field_j5Ldg__c" : accountId,
"field_7c6nY__c" : context.data['field_xZep7__c'],
"field_tkHAh__c" : context.data['_id'],
"field_qs9YC__c" : context.data['_id'],
"field_N4W79__c" : context.data['express_order_id'],
"field_4j3IG__c" : context.data['express_org'],
"buy_time" : context.data['field_8Oab0__c'],
"field_rp4mt__c" : context.data['field_jf41y__c'],
"field_zMlVT__c" : context.data['field_7O427__c'],
"field_52hfs__c" : context.data['field_ksJ9H__c'],
"field_2ct79__c" : context.data['field_65oxo__c'],
"field_w6h83__c" : zhibaoriqi
]
// 属于这几个分类ID的产品 并且 具备打印条件
if (Z[i9].matches(".*(79|80|81|82|83|95).*") && (context.data['field_v98mg__c'] == 'yes')) {
//查询设备对象
def ret = Fx.object.findOne("DeviceObj", FQLAttribute.builder().columns(["_id"]).queryTemplate(QueryTemplate.AND(["device_code": QueryOperator.EQ(accountId)])).build(), SelectAttribute.builder().build()).result() as Map;
if (ret == null) {
def (Boolean addPaymentErr, addPayment, String addPaymentMsg) = object.create('DeviceObj', masterData, null, true)
if (addPaymentErr) {
log.info("新建设备失败:" + addPaymentMsg)
Notice notice = Notice.defaultNotice()
def (Boolean error, String data, String errorMessage) = Fx.message.sendNotice(fahuodan, "新建设备失败:" + addPaymentMsg, receiverIds, notice)
if (error) {
log.info(errorMessage)
} else {
log.info(data)
}
} else {
log.info("新建设备成功")
}
log.info(masterData)
} else {
log.info("设备已存在:" + accountId)
}
} else {
log.info("不创建设备")
}
}
} else {
log.info("至少有一个设备序列号")
}
}
}
参考:
1、Fx.object.findOne
Fx.object | 纷享销客 | 帮助中心
2、Fx.object.create
Fx.object | 纷享销客 | 帮助中心
3、Fx.message.sendNotice
Fx.message | 纷享销客 | 帮助中心