(一键去重)工作流插件分享

分享  收藏
2 / 319

昨晚分享的工作流插件,借此帖抛转引玉一下~
欢迎大家分享自己写的有意思的插件,特别有意思的不建议分享了,未来可以上插件市场 👀️

该插件功能:对指定表单,指定字段识别重复记录,一键去重。
解决场景:记录去重人工繁琐,子流程处理工作流消耗大

核心思路:
一键去重.png

主要步骤及部分原码如下:

1.调获取应用信息,处理返回结果,取出 worksheetid

const heroes = JSON.parse(input.arrayObject || '[]');
const sheetName = input.sheetName;
const hero = heroes.find(hero => hero.name === targetName);
let result;
if (hero) {
  result = hero.id;
} else {
  result = null;
}
output = {result:result}

2.调用列表接口,处理返回,取出字段值相同的 rowid

// 输入的数据数组
const data = JSON.parse(input.arrayObject || '[]')

// 函数:检查数组中是否有重复的字段值,并返回所有重复的id
function findDuplicateIds(data, field) {
  const fieldMap = {};
  const duplicateIds = new Set();

  data.forEach(item => {
    const value = item[field];
    if (fieldMap[value]) {
      duplicateIds.add(item.rowid);
      duplicateIds.add(fieldMap[value]);
    } else {
      fieldMap[value] = item.rowid;
    }
  });

  return Array.from(duplicateIds);
}

// 要检查的字段
const fieldToCheck = input.target;

// 找出所有重复的id
const duplicateIds = findDuplicateIds(data, fieldToCheck);

// 输出结果
output = {duplicateIds}

3.批量更新重复记录,做标记

1.png
2.1.png
2.2.png

3.png