n8n第二节 实现小卖部商品财务报表自动化生成

思路与效果

输入小卖部各商品的基础销售信息,通过数据计算、提取、转换等步骤,最终输出包含商品类别、销售额、利润额的结构化报表。整体思路围绕 "数据输入 - 数据处理 - 结果输出" 三大环节展开,具体分为 5 个关键步骤,形成闭环工作流:

  1. 输入销售情况
  2. 统计销售额
  3. 提取商品种类和销售额
  4. 得到各种类商品的利润 根据商品种类区分不同的利润,
  5. 输出各种类商品的利润一览表

实现

代码-销售情况

简易版省了前摇直接输入了,作为参考。

set-销售额

销售额是财务报表的核心指标,其计算逻辑为 "销售数量 × 单价"。

aggregate-提取需要的项

经过销售额计算后,数据仍以分散的字典形式存在,无法直接用于按类别分配不同利润率的运算。因此需要通过 "Aggregate"(聚合)节点对数据进行整合:该节点的核心作用是将分散的文本类型数据合并转为列表形式,具体提取 "product_category"(商品类别)和 "sum"(销售额)两个关键字段,分别生成对应的列表数组。

代码-算利润

利润核算是财务报表的核心环节,不同品类商品的利润率存在天然差异(如文具类商品利润率较低,特色零食类利润率较高),因此需按商品类别区分设置不同利润率。这一步骤通过 "代码" 节点实现,核心依赖 JavaScript 中的map数组方法完成数据遍历与转换。

map 是 **数组的核心遍历转换方法,**逻辑:遍历数组 → 按索引关联其他数据 → 生成新数组。

json.product_category.map(...),可以拆解成 3 个关键步骤:

  1. 遍历源数组json.product_category 是源数组(比如 ["文具类", "图书类", "数码类"]),map 会逐个 "扫过" 这个数组的每一项;
  2. 给每一项做处理
    • 回调函数 (p, s) => {...} 是 "处理规则":
      • p:当前遍历到的数组项(比如第一次取 product_category[0] = "文具类",第二次取product_category[1] = "图书类");
      • s:当前项的索引 (从 0 开始,第一次是 0,第二次是 1,第三次是 2),用来对应 json.sumprofits 数组的同位置数据(比如 json.sum[s] 就是当前分类对应的销售额);
    • 处理结果是一个新对象 { json: { product_category: p, sales_sum: ... } }(即 n8n 要求的格式);
  1. 收集结果返回 :把每一项的处理结果(新对象)汇总起来,形成一个全新的数组,最后通过 return 输出。

一句话总结工作流代码中 map 的作用:

json.product_category 数组的每一个 "商品类别",和 json.sum 对应的 "销售额"、profits 对应的 "利润率" 绑定,生成一个包含 product_categorysales_sumprofit_sum 的 n8n 标准格式数组。

简化例子来理解map:

比如源数组是 ["A类", "B类", "C类"],用 map 处理:

javascript

运行

复制代码
const arr = ["A类", "B类", "C类"];
const newArr = arr.map((item, index) => {
  return { 类别: item, 索引: index, 计算值: index + 10 };
});
// newArr 最终是:
// [
//   { 类别: "A类", 索引: 0, 计算值: 10 },
//   { 类别: "B类", 索引: 1, 计算值: 11 },
//   { 类别: "C类", 索引: 2, 计算值: 12 }
// ]

set-报表一览

将上个节点输出的3个列表项根据名称顺序拖到输入框里,写上文字说明,会自动分成三条输出。

小记

总的来说,这个工作流就是按"输入数据→算销售额→整合信息→算利润→出报表"的步骤来的,直接让小卖部的简易财务报表自动生成啦。

相关推荐
砚底藏山河6 小时前
容错重试与指数退避:网络抖动手抖不再丢数据(魔码量化实战 #04)
java·数据库·python·金融
2501_930472446 小时前
云安全自查清单:用腾讯云助手 30 分钟完成一次权限与密钥体检
java·腾讯云
letisgo56 小时前
JAVA 高级进阶05篇《Spring容器机制:Bean生命周期与三级缓存全解》
java·spring·面试·ioc·源码分析
岁月如歌77866 小时前
分布式锁完全指南:从数据库到 Redisson 的演进
java·后端·架构
AI深栈7 小时前
第 8 章 · Tool Calling 与 Tool Search
java·人工智能
写后端的胖头鱼7 小时前
【高频面试题】spring事物失效场景(带原理 + 代码示例)
java·后端·spring·事务·事物失效
小孩玩什么7 小时前
深入理解字符串匹配算法:BF算法,KMP算法
java·c语言·开发语言·数据结构·c++·算法
长谷深风1117 小时前
Agent执行系统中的身份与版本设计
java·大数据·人工智能·ai·大模型·task·aiagent
Wang's Blog7 小时前
Java框架快速入门: Spring Security+OAuth2之UserDetails与JDBC认证实践
java·网络·spring
爱从未走散7 小时前
面试八股题
java·面试·职场和发展