制造业的软件系统历来是"多而散"——CRM 管客户、ERP 管物料、MES 管车间、OA 管审批,每个系统各自一套账号、一套流程,数据打通靠人工导表。Skyeye 云智能制造平台 v3.19.6 的思路是:用零代码 + 统一技术栈,把超过 100 种业务流程装进同一个运行实例,让工厂从"买一堆系统"变成"配一套模块"。
技术栈选型的逻辑
Skyeye 的三层组合并不随意:
- SpringBoot(后端):Java 生态在制造业 IT 中渗透率极高,运维团队熟悉,中间件兼容性好。SpringBoot 的自动配置和 starter 机制也适合模块化打包——每个业务域(ERP、MES、OA)可以独立 starter,按需引入。
- UNI-APP(移动端):一套代码编译到微信小程序、H5、App,对车间巡检、扫码报工这类移动场景来说,省去了多端重复开发。
- Ant Design Vue(PC 端管理界面):表单密集、数据表格密集的管理后台,Ant Design Vue 的组件库直接覆盖了 80% 的 UI 需求,剩下的靠零代码表单设计器拖拽补齐。
这套组合的核心收益不是"技术先进",而是人员可替换——懂 SpringBoot 的 Java 开发者市场上充足,Vue 前端也容易招,UNI-APP 有一定跨端经验即可上手。对制造企业来说,技术栈的可持续性比炫酷更重要。
100+ 流程背后的零代码机制
"100 多种电子流程"听起来像功能堆砌,但关键在于这些流程是否真的能零代码配置出来,而不是硬编码。Skyeye 的工作流引擎 + 表单设计器组合,本质上是把"流程定义"和"数据模型"都变成了配置项:
- 流程定义:用可视化节点编排审批链路(提交→部门审核→财务确认→归档),节点上挂表单权限(哪些字段只读、哪些可编辑)。
- 数据模型:拖拽字段生成表结构,平台自动建表、生成 CRUD 接口和页面。
- 权限控制:角色→菜单→数据范围三层配置,不同车间看到不同工单数据。
这意味着新增一条"设备报修→维修派工→验收关闭"的流程,不需要写代码——在流程设计器里画节点、在表单设计器里配字段、在权限里设可见范围,发布即生效。
实操:用 SpringBoot 起一个 Skyeye 风格的业务模块
下面演示如何在一个类似 Skyeye 架构的 SpringBoot 项目中,用最精简的方式新增一个"设备报修"模块——包含实体、接口、前端页面配置思路。这段代码可以直接复制到 SpringBoot 2.7+ 项目中运行。
1. 实体与数据层
// EquipmentRepair.java — 设备报修实体
package com.skyeye.mes.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.time.LocalDateTime;
@Data
@TableName("mes_equipment_repair")
public class EquipmentRepair {
private Long id;
private String equipmentCode; // 设备编号
private String faultDesc; // 故障描述
private String reporter; // 报修人
private String status; // 状态: PENDING/DISPATCHED/DONE
private LocalDateTime createTime;
private LocalDateTime updateTime;
}
// EquipmentRepairMapper.java
package com.skyeye.mes.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.skyeye.mes.entity.EquipmentRepair;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface EquipmentRepairMapper extends BaseMapper<EquipmentRepair> {
}
2. 服务与接口层
// EquipmentRepairService.java
package com.skyeye.mes.service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.skyeye.mes.entity.EquipmentRepair;
import com.skyeye.mes.mapper.EquipmentRepairMapper;
import org.springframework.stereotype.Service;
@Service
public class EquipmentRepairService
extends ServiceImpl<EquipmentRepairMapper, EquipmentRepair> {
/** 派工:将状态从 PENDING 改为 DISPATCHED,记录维修人 */
public boolean dispatch(Long repairId, String repairWorker) {
EquipmentRepair repair = getById(repairId);
if (repair == null || !"PENDING".equals(repair.getStatus())) {
return false;
}
repair.setStatus("DISPATCHED");
repair.setUpdateTime(LocalDateTime.now());
return updateById(repair);
}
}
// EquipmentRepairController.java
package com.skyeye.mes.controller;
import com.skyeye.mes.entity.EquipmentRepair;
import com.skyeye.mes.service.EquipmentRepairService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/mes/equipment-repair")
public class EquipmentRepairController {
@Autowired
private EquipmentRepairService service;
@GetMapping("/list")
public List<EquipmentRepair> list() {
return service.list();
}
@PostMapping("/submit")
public boolean submit(@RequestBody EquipmentRepair repair) {
repair.setStatus("PENDING");
repair.setCreateTime(LocalDateTime.now());
return service.save(repair);
}
@PostMapping("/dispatch/{id}")
public boolean dispatch(@PathVariable Long id,
@RequestParam String worker) {
return service.dispatch(id, worker);
}
}
3. 建表 SQL(MySQL)
CREATE TABLE mes_equipment_repair (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
equipment_code VARCHAR(64) NOT NULL COMMENT '设备编号',
fault_desc VARCHAR(512) NOT NULL COMMENT '故障描述',
reporter VARCHAR(64) NOT NULL COMMENT '报修人',
status VARCHAR(16) NOT NULL DEFAULT 'PENDING' COMMENT 'PENDING/DISPATCHED/DONE',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_status (status),
INDEX idx_equipment (equipment_code)
) COMMENT='设备报修工单';
4. 前端页面配置思路(Ant Design Vue)
在零代码平台中,上面的接口会被表单设计器自动绑定。手动对接时,核心页面只需一个表格 + 一个弹窗表单:
<!-- EquipmentRepairList.vue — 简化示意 -->
<template>
<a-table :columns="columns" :data-source="repairs" row-key="id">
<template #action="{ record }">
<a-button v-if="record.status === 'PENDING'"
@click="dispatch(record.id)">派工</a-button>
</template>
</a-table>
</template>
<script setup>
import { ref, onMounted } from 'vue'
import axios from 'axios'
const repairs = ref([])
const columns = [
{ title: '设备编号', dataIndex: 'equipmentCode' },
{ title: '故障描述', dataIndex: 'faultDesc' },
{ title: '报修人', dataIndex: 'reporter' },
{ title: '状态', dataIndex: 'status' },
{ title: '操作', slots: { customRender: 'action' } }
]
onMounted(async () => {
repairs.value = (await axios.get('/api/mes/equipment-repair/list')).data
})
async function dispatch(id) {
await axios.post(`/api/mes/equipment-repair/dispatch/${id}`, null,
{ params: { worker: '张师傅' } })
onMounted() // 刷新列表
}
</script>
运行前提:SpringBoot 2.7+、MyBatis-Plus 3.5+、MySQL 5.7+、Vue 3 + Ant Design Vue 3.x。把上面的 Java 类和 SQL 放进项目,启动后访问
/api/mes/equipment-repair/list即可验证接口。
这段示例展示了 Skyeye 架构中"一个业务模块"的最小骨架——在真正的零代码平台上,实体、接口、页面都不需要手写,而是通过配置生成。但理解这个骨架,有助于你在平台上做二次扩展时知道底层在干什么。
选型之前:零代码制造平台的边界与取舍
Skyeye 覆盖的功能域很广(CRM → ERP → MES → OA → EHR → 财务 → 考勤 → 薪资 → 商城 → AI),但"广"本身不等于"适合你"。落地前需要想清楚几件事:
| 维度 | 零代码平台优势 | 需要警惕的点 |
|---|---|---|
| 上线速度 | 流程和表单配置即发布,1-2 周可跑通一个业务域 | 复杂计算逻辑(如排程算法、成本分摊)仍需写代码或外挂服务 |
| 定制深度 | 字段、流程、权限都可配置 | 深度定制 UI 交互(如车间大屏实时看板)受限于设计器能力 |
| 数据打通 | 同一数据库、同一用户体系,跨模块查询天然可行 | 大量模块共用一库,数据量大后需分库或读写分离策略 |
| 运维成本 | 一套系统统一升级,不用协调多厂商版本 | 单点故障影响面大,高可用架构必须提前规划 |
| 人员要求 | 业务人员可配流程,降低开发依赖 | 平台本身的运维和二次开发仍需懂 SpringBoot + Vue 的人 |
适用场景:中小制造企业(50-500 人),业务流程标准化程度较高,IT 团队 2-5 人,需要快速把散落的 Excel 和纸质流程数字化。
不太适合:大型集团需要多工厂独立部署 + 数据汇总;有复杂排程、质量统计模型等深度算法需求的车间;对 UI 交互有严格品牌定制要求的场景。
上手检查清单
- 确认核心域:先列出你必须跑通的 3 个业务域(比如 MES 工单 + OA 审批 + CRM 客户),不要一开始就开全部模块。
- 验证流程设计器:用你最复杂的审批链路(比如涉及多部门会签的采购审批)在演示环境里完整配置一遍,看节点类型和权限控制是否够用。
- 检查数据量边界:问清楚单表千万级数据下的查询性能方案——是分库、冷热分离,还是只靠索引。
- 评估二次开发通道:确认平台是否允许你写自定义 SpringBoot Service 并注入到流程节点中,这是零代码平台"不零"时的逃生通道。
- 部署模式:SaaS 多租户还是私有化单实例?制造数据敏感度通常偏高,私有化部署更常见,确认授权和升级机制。
零代码不是"不用懂技术",而是"把重复的 CRUD 和流程编排交给平台,把精力留给真正需要定制的业务逻辑"。Skyeye v3.19.6 的价值在于它用一套成熟技术栈把制造行业最常见的 100+ 流程做成了可配置资产——你的工作是从这堆资产里挑出真正需要的部分,而不是全盘照搬。