纷享逍客发货单根据产品编码批量自动创建设备

已知: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 | 纷享销客 | 帮助中心

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值