案例 :下图为表单结构,想要实现对现有数据,同一个“客户”,先按照“工厂交期”从早到晚排序,工厂交期相同的数据,按照“设计号”升序排序。 [图片] 实现说明: 对现有数据进行排序重组,考虑通过自定义动作触发工作流的方式实现。(自定义动作目前已支持批量数据源) 按钮批量数据源可以作为数组传入代码块进行处理。(以下代码块通过 Chat-GPT 实现) var arr1s = JSON.parse(input.arr1); var arr2s = JSON.parse(input.arr2); var arr3s = JSON.parse(input.arr3); var arr4s = JSON.parse(input.arr4); // 合并数组 var combinedArray = arr1s.map(function (_, i) { return { 工厂交期: arr1s[i], 设计号: arr2s[i], 客户: arr3s[i], // 这里原本是 "客户: arr4s[i]," 修正为 "客户: arr3s[i]," 记录id: arr4s[i] // 添加一个新的属性,以示区分 }; }); // 按照“客户”进行分类 var groupedByCustomer = combinedArray.reduce(function (acc, obj) { var key = obj.客户; acc[key] = acc[key] || []; acc[key].push(obj); return acc; }, {}); // 对每个分类进行排序 for (var customer in groupedByCustomer) { if (groupedByCustomer.hasOwnProperty(customer)) { groupedByCustomer[customer] = groupedByCustomer[customer] .sort(function (a, b) { // 先按照工厂交期降序排序 var dateA = new Date(a.工厂交期); var dateB = new Date(b.工厂交期); if (dateA > dateB) return -1; if (dateA < dateB) return 1; // 如果工厂交期相同,按照设计号升序排序 return a.设计号.localeCompare(b.设计号); }) .map(function (obj, index) { // 添加序号 obj.序号 = index + 1; return obj; }); } } output = groupedByCustomer; 使用: input 对象: [图片] 测试数据: [图片] 输出: [图片] 按照排序顺序,输出内容会自动添加流水号,通过子流程逐条,按照记录 ID 查询记录,逐条将流水号更新到记录即可。




看不懂,不妨碍我给你点赞