智慧农业

多业态农业管理系统:种植、畜牧、水产能不能用同一套

很多园区在立项时会先问一个问题:我们既种大田又养牛还带着塘口,是不是得买三套系统?

这个问题的答案取决于一件事,就是你希望这三块业务各自为政,还是算在同一本账上。下面把判断依据、数据隔离的做法、选型要看的硬指标,以及我们实际踩过的坑分开讲。

一套系统管四种业态,省下的到底是什么

先说结论:如果同一个经营主体确实跨业态,用一套系统的价值不在功能多少,在账能合上。

拆成多套系统的代价很具体。一个合作社既有一百多亩大田,又租了几个棚,还养着一批牛,海边的大户种着果树的同时还带着塘口。分成四套系统之后,客户面对的是四套账号、四份权限、四本账。他在塘口里看到的一笔电费,和在总账上看到的对不上,月底得自己拿计算器合。

还有一层代价更隐蔽:地块、设备、人员、供货商这些基础对象会在多套系统里各存一份。同一块地在一套系统里叫「东洼地」,在另一套里叫「东洼」,时间一长没人说得清是不是同一块。后面想按地块算投入产出,数据对不起来。

数据怎么隔离:三种做法与各自的代价

确定要一套之后,第二个问题就来了,隔离做在哪一层。能想到的做法有三种,各有明确的代价。

物理分库,每个租户一个库。最干净,但运维成本和跨租户统计基本别想了。客户想看一眼集团层面的汇总,得先把几个库的数据抽出来对齐。

按租户分表,查询时动态拼表名。很多老系统的做法,代价是迁移和索引维护都很痛苦,加一个字段要在几十张表上执行一遍。

同表隔离,所有数据放在同一批表里,靠租户标识和业态标识过滤。我们选的是这种。原因不是它更好,是它在增量场景里最省事:新来一个客户什么都不用建,新加一个业态也不用改表结构。对一个还在往前走的产品,这个弹性比理论上的隔离强度更值钱。

代价也必须说清楚:同表隔离的风险集中在一处——一旦某个查询漏了租户或业态条件,就是数据串。它不是崩给你看的那种故障,而是安静地把 A 农场的数字混进 B 农场的报表里,可能几个月都没人发现。

所以选这条路,得用工程手段把强度补回来,不能靠人自觉。我们实际起作用的是两道机械约束:持久层的公共查询入口统一收口,不让业务代码随意拼条件;以及把「隔离条件是否存在」做成可以自动检查的东西,而不是靠代码评审时眼睛扫。第二道比第一道难做,但只有它能在人懈怠之后继续工作。

选型时要看的四个硬指标

功能清单长不代表能用。下面这几项比功能列表更值得问。

① 业态特有能力是原生还是硬塞。 水产的投喂和生猪的饲喂表面都是「喂食记录」,实际字段差得远:水产要记水温、溶氧、投饵量、摄食情况,生猪要记栏舍、头均采食量、料肉比。问对方「这两个模块是各写一套,还是共用一张表」——共用一张表的,字段会膨胀成一堆几乎永远为空的列,报自定义字段的,通常能用但查询慢。

② 跨业态的统计口径怎么对齐。 这是最容易被跳过、也最容易在后期爆掉的一项。一个跨业态的汇总指标,前提是先把两边语义对齐才能相加,而语义对齐这件事代码帮不上忙,只能靠人去定义。如果对方说能自动跨业态算账,基本是没做过这件事。

③ 设备接入能不能换设备不改规则。 地里设备牌子杂,如果采集和业务规则是照着某个厂家的报文地址表写死的,换一批设备就要重配一遍,而且很难有人记得清上一版为什么那么写。做法应该是协议驱动可插拔,业务规则绑在统一的物模型字段上,不绑在原始报文的第几个字节上。

④ 告警是真告警还是刷屏。 判断一个监测系统有没有活着,不用看后台有多少点位在线,去看现场那台电脑的音量。报警音还开着说明有人在乎;常年静音,这系统在实际业务里已经死了。要问的是:同一条规则会不会因为多人配置而重复存在,规则匹配不上精确对象时会不会直接不响。

我们踩过的坑:指标编码的业态冲突

这一条值得单独讲,因为它导致的故障看起来完全正常。

园艺和种植的大棚里要测土壤 pH,水产塘口也要测水质 pH。为了统一,我们早期给所有业态的监测指标建了一套共用字典,两种 pH 在字典里共用同一个编码。

但它们的业务含义、合理区间、采样频率没有一项是一样的。土壤 pH 一个月测一次很正常,塘口的 pH 两个小时不测就可能出事。当规则去重用的是「设备 + 指标编码 + 方向」这个组合时,两个业态的规则就会互相认为对方是重复项,后来的把前面的顶掉。界面上的提示是「已保存」,谁也不会想到是被别的业态干掉的。

修法本身不复杂,就是在判定维度里把业态加进去。但这件事说明的是:多业态系统里最贵的缺陷,几乎都出在默认行为上,而不是出在逻辑上。 逻辑写错了会报错,默认值选错了会安静地跑很久。

什么样的园区适合一套,什么样的适合分开

说边界,不然就成了自夸。

一套底座这套思路,在业态数量少、业态之间共享业务多于差异业务的时候是划算的。共享的部分(设备接入、告警、工单、库存、财务科目)占比越大,收益越明显。

如果业态继续加,比如再加上园艺、菌菇、蜜蜂这类,而每种业态的特有逻辑又都长到几十张表,那么共用底座的那层抽象就会从「省事」变成「每次改一处都要考虑另外五种业态会不会被影响」。到那个点,分拆反而更划算。

没法给出确切的分拆阈值,因为这事取决于每个业态的特有比例,而不是业态个数。但有一个可以先观察的信号:当你发现为了兼容某个业态,不得不给公共层的接口加参数,而且这个参数在大多数调用点都是空的时候,说明抽象已经开始漏水了。

反过来,如果各个板块本来就是独立法人、独立核算、彼此不共享设备和人员,那就没必要硬凑成一套——强行统一只会让每一边都用得别扭。


需要看具体每个业态在系统里是怎么各自闭环的,可以看这里的功能说明:多业态数字化管理、农业设备接入管理、农业环境监测。

Smart Agriculture

把智慧农业落到你的现场

围绕种植、设施农业与水产养殖场景,构建环境监测、智能控制与生产数据一体的数字农业体系,把经验种植变成可量化、可复制的数据化生产。