导入公司及联系人

Si
• 发表于:2023年04月07日 17:44 • 更新于:2023年04月21日 17:56
695

场景描述

导入功能在每一个系统中都很常见,在白码平台中,导入excel中的数据可以用白码平台自带的导入功能来完成,然后使用编译功能来去重,最后将excel中的数据放入数据表之中

场景示例

对同公司名的信息进行去重,或同公司内的同名联系人进行去重,并将公司和联系人关联起来

前期准备

1.创建三张表,一张公司表,一张客户表,一张导入模板表,建立一个导入模板,并放入导入模板表中,并提供一个导入案例

https://pan.bnocode.com/project/642283bde81aad5e5587ce87/attachment/20230407/1680838669271_50.png

https://pan.bnocode.com/project/642283bde81aad5e5587ce87/attachment/20230407/1680838679044_51.png

https://pan.bnocode.com/project/642283bde81aad5e5587ce87/attachment/20230407/1680838689906_52.png

https://pan.bnocode.com/project/642283bde81aad5e5587ce87/attachment/20230407/1680838700230_53.png

https://pan.bnocode.com/project/642283bde81aad5e5587ce87/attachment/20230407/1680838715207_54.png

https://pan.bnocode.com/project/642283bde81aad5e5587ce87/attachment/20230407/1680838725470_55.png

功能实现

1、在功能流程中新增导入功能

https://pan.bnocode.com/project/642283bde81aad5e5587ce87/attachment/20230407/1680838754364_56.png

2、交互中属性的别名,要和Excel表中的属性一一对应

https://pan.bnocode.com/project/642283bde81aad5e5587ce87/attachment/20230407/1680838772063_57.png

https://pan.bnocode.com/project/642283bde81aad5e5587ce87/attachment/20230407/1680838807468_58.png

3、获取导入模板的文件名要与模板的文件名一致

https://pan.bnocode.com/project/642283bde81aad5e5587ce87/attachment/20230407/1680838827810_59.png

https://pan.bnocode.com/project/642283bde81aad5e5587ce87/attachment/20230407/1680838839457_60.png

4.在编程中写出以下代码,将导入的数据去重,以及将联系人和公司关联起来

代码如下:         复制代码

async function runProcess($model = model, $plugin = plugin, $params = params) {
    let dataList = $model.getValue("63d899f57483b9394fe334d3")//获取导入信息

    let companyList = dataList.map(item => item["field_1675139589761"]) // 提取导入信息中的公司信息
    let contactsList = dataList.map(item => item["field_1675139591760"]) // 提取导入信息中的联系人信息

    companyList = Array.from(new Set((companyList))) //对公司信息去重

    let insetCompanyList = []//导入的公司信息数组
    let insetContactsList = [] //导入的联系人信息数组



    /* -------------------------------------处理公司信息 ---------------------------------------------------*/
    let companyData = await $plugin.data.queryData("63d79a057c95951e53fc206d", {
        "63d79aaf7c95951e53fc2287": companyList
    }, { all: true })//查询重复的对象

    let companyMap = {} //储存公司信息重复的对象

    companyData.forEach(item => {
        companyMap[item["63d79aaf7c95951e53fc2287"]] = item
    })//对公司信息进行储存

    companyList.forEach(item => {
        let tempCompanyData = companyMap[item] || undefined // 获取重复的公司数据

        //如果数据库中没有存储此公司信息,则将公司信息储存进数据库中
        if (!tempCompanyData) {
            insetCompanyList.push({
                "63d79aaf7c95951e53fc2287": item //公司名称 string
            })
        }
    })

    //将公司信息储存进数据库中
    await $plugin.data.bulk("63d79a057c95951e53fc206d", {
        insert: insetCompanyList
    })

    /* -------------------------------------处理联系人信息 ---------------------------------------------------*/
    companyData = await $plugin.data.queryData("63d79a057c95951e53fc206d", {
        "63d79aaf7c95951e53fc2287": companyList
    }, { all: true })//重新查询数据库中公司信息

    let contactsyData = await $plugin.data.queryData("63d79a0ce453bf1e54179064", {
        "63d79ac0e453bf1e541792fa": contactsList
    }, { all: true })//查找数据库中的联系人信息

    let contactsyMap = {} //储存联系人信息重复的对象

    contactsyData.forEach(item => {
        contactsyMap[item["63d79ac0e453bf1e541792fa"] + item["63d79ad0e453bf1e54179315"]] = item//将联系人和公司结合充当KEY进行储存
    })

    dataList.forEach(item => {
        let companyTempData = companyData.find(o => {
            return o["63d79aaf7c95951e53fc2287"] == item["field_1675139589761"]//查找联系人所关联的公司
        });

        let contactsyTempData = contactsyMap[item["field_1675139591760"] + companyTempData._id] || undefined// 获取重复的联系人数据


        //如果数据库中没有存储此联系人信息,则将该联系人信息储存进数据库中
        if (!contactsyTempData) {
            insetContactsList.push({
                "63d79ac0e453bf1e541792fa": item["field_1675139591760"],//联系人  string
                "63d79ad0e453bf1e54179315": companyTempData._id,//公司  relate
                "63d88f1f1f4bfe394e16819f": item["field_1675139592026"],//联系方式  string
            })
        }
    })

    //将联系人信息存储到数据库中
    await $plugin.data.bulk("63d79a0ce453bf1e54179064", {
        insert: insetContactsList
    })
}

5、效果展示

https://pan.bnocode.com/project/62dfc125b702df15e7988dba/attachment/20230421/1682070964030_GIF%202023-04-21%2017-54-50.gif

本文是否对您有帮助?
有帮助
没帮助
您是否遇到了以下问题?
内容过期或不准确
缺少场景、事例
链接有误
太简单,步骤待完善
其他
提交反馈
如需获取即时帮助,请联系
小助理
微信扫码添加小助理
让你的想法快速变成软件吧~
导入公司及联系人
联系我们
售前咨询电话
020-88520693
意见箱 · 建议反馈
您的宝贵建议,使白码更完美!
微信扫码添加白码小助理
返回顶部