今天我们来讲MES系统的【系统配置】功能。
一 为什么需要系统配置功能
- 业务规则解耦:业务逻辑的分支开关无需代码修改即可生效,例如来料功能,配置开关是否需要进行来料检验,开关关闭状态标识不需要来料检验,来料接收后直接生成入库单进行入库。
- 符合开闭原则 :通过修改配置扩展功能而非修改代码
二 功能设计
2.1 数据库设计
| 字段名 | 类型 | 是否为空 | 默认值 | 备注 |
|---|---|---|---|---|
| id | BIGINT | 否 | - | 参数主键 |
| config_name | VARCHAR(100) | 是 | - | 参数名称 |
| config_key | VARCHAR(100) | 是 | - | 参数键名 |
| config_value | VARCHAR(500) | 是 | - | 参数键值 |
| config_type | VARCHAR(64) | 否 | 'sys' | 参数类型 |
| create_by | BIGINT | 是 | - | 创建者 |
| create_time | DATETIME | 是 | - | 创建时间 |
| update_by | BIGINT | 是 | - | 更新者 |
| update_time | DATETIME | 是 | - | 更新时间 |
| remark | VARCHAR(500) | 是 | - | 备注 |
2.2 后端主要代码
系统启动加载数据到缓存
/**
* 项目启动时,初始化字典到缓存
*/
@PostConstruct
public void init()
{
log.info("加载系统配置数据!");
loadingConfigCache();
}
...
/**
* 加载参数缓存数据
*/
@Override
public void loadingConfigCache()
{
List<SysConfig> configsList = list();
for (SysConfig config : configsList)
{
redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
}
}
根据系统配置KEY获取配置信息
sysConfigService.getByKey("sys.account.registerUser")
三 功能展示
界面分左右两部分,左边的把系统配置项分为:系统配置、基础数据、仓库管理、生产管理、质量管理、设备管理几大分类,右边为对应类型的系统配置项的增删查改功能。
开源项目地址:
欢迎在评论区分享你的技术选型经验,或对本文方案的改进建议!