在企业资产管理领域,传统的手工记录和分散的Excel表格管理方式已难以满足现代制造业对效率和准确性的要求。面对设备信息不透明、物料库存盘点困难、维护记录缺失等管理痛点,企业迫切需要一套数字化的解决方案来实现资源的全生命周期管理。正是基于这样的背景,我们开发了这款企业级资产管控平台。
系统架构与技术栈
该平台采用经典的SSM(Spring + Spring MVC + MyBatis)框架组合,构建了清晰的三层架构体系。表现层使用Spring MVC框架处理前端请求,通过注解驱动的控制器实现灵活的请求映射。业务逻辑层基于Spring IoC容器管理Bean生命周期,利用声明式事务确保数据一致性。数据持久层选用MyBatis框架,通过XML映射文件编写灵活SQL,支持复杂的关联查询操作。
技术栈配置如下:
- 后端框架:Spring 4.3 + Spring MVC + MyBatis 3.5
- 前端技术:JSP 2.3 + jQuery 3.5 + Bootstrap 4.6
- 数据库:MySQL 8.0 with InnoDB存储引擎
- 构建工具:Maven 3.6
- 服务器:Tomcat 9.0
<!-- 核心依赖配置示例 -->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.18.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
</dependencies>
数据库设计亮点
加工流程表设计
t_jiagong表作为系统的核心业务表,设计体现了高度的规范化理念:
CREATE TABLE `t_jiagong` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`t_gx` varchar(255) DEFAULT NULL COMMENT '工序',
`t_ks` varchar(255) DEFAULT NULL COMMENT '开始时间',
`t_js` varchar(255) DEFAULT NULL COMMENT '结束时间',
`t_bz` varchar(255) DEFAULT NULL COMMENT '备注',
`wuliao_id` int(11) DEFAULT NULL COMMENT '物料ID',
`shebei_id` int(11) DEFAULT NULL COMMENT '设备ID',
`xh` int(11) DEFAULT NULL COMMENT '序号',
PRIMARY KEY (`id`),
KEY `FKBED355B8E45CB4F` (`wuliao_id`),
KEY `FKBED355B8F12F042F` (`shebei_id`),
CONSTRAINT `FKBED355B8E45CB4F` FOREIGN KEY (`wuliao_id`) REFERENCES `t_wuliao` (`id`),
CONSTRAINT `FKBED355B8F12F042F` FOREIGN KEY (`shebei_id`) REFERENCES `t_shebei` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='加工表'
设计亮点分析:
- 外键约束优化:通过
FOREIGN KEY约束确保数据完整性,防止无效的物料和设备ID被录入 - 复合索引策略:为
wuliao_id和shebei_id分别建立索引,优化多表关联查询性能 - 字符集选择:采用
utf8mb4_unicode_ci字符集,全面支持emoji等特殊字符 - 自增主键:使用AUTO_INCREMENT确保主键唯一性和插入性能
物料库存表设计
t_wuliao表的设计体现了库存管理的精细化需求:
CREATE TABLE `t_wuliao` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`t_name` varchar(255) DEFAULT NULL COMMENT '物料名称',
`t_ms` varchar(255) DEFAULT NULL COMMENT '物料描述',
`t_kc` varchar(255) DEFAULT NULL COMMENT '库存',
`t_gy` varchar(255) DEFAULT NULL COMMENT '工艺',
`t_bz` varchar(255) DEFAULT NULL COMMENT '备注',
`wuliaoType_id` int(11) DEFAULT NULL COMMENT '物料类型ID',
`dw` int(11) DEFAULT NULL COMMENT '单位',
PRIMARY KEY (`id`),
KEY `FK4E915C947F26AAF` (`wuliaoType_id`),
CONSTRAINT `FK4E915C947F26AAF` FOREIGN KEY (`wuliaoType_id`) REFERENCES `t_wuliaotype` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物料表'
字段设计特色:
t_kc字段采用varchar类型而非数值类型,支持多种计量单位组合- 通过
wuliaoType_id外键实现与物料分类的关联,便于分类统计 dw字段存储单位信息,确保库存数据的准确性

核心功能实现
加工流程管理模块
加工流程管理是平台的核心功能,实现了从物料准备到设备加工的全流程跟踪。控制器层通过JiagongController处理相关业务逻辑:
@Controller
@RequestMapping(value = "Jiagong")
public class JiagongController {
@Autowired
private JiagongMapper jiagongMapper;
@Autowired
private WuliaoMapper wuliaoMapper;
@Autowired
private ShebeiMapper shebeiMapper;
@RequestMapping(value = "/initUtil.do")
public String initUtil(HttpServletRequest request, Model model) {
List<Wuliao> listWuliao = wuliaoMapper.getObjectList(null, null);
model.addAttribute("listWuliao", listWuliao);
List<Shebei> listShebei = shebeiMapper.getObjectList(null, null);
model.addAttribute("listShebei", listShebei);
return "Jiagong/saveOrUpdate";
}
}
时间有效性验证工具方法:
public static boolean isEffectiveDate(Date nowTime, Date startTime, Date endTime) {
if (nowTime.getTime() == startTime.getTime() || nowTime.getTime() == endTime.getTime()) {
return true;
}
Calendar date = Calendar.getInstance();
date.setTime(nowTime);
Calendar begin = Calendar.getInstance();
begin.setTime(startTime);
Calendar end = Calendar.getInstance();
end.setTime(endTime);
if(date.getTimeInMillis() > begin.getTimeInMillis()
&& date.getTimeInMillis() < end.getTimeInMillis()) {
return true;
} else {
return false;
}
}
该方法精确判断当前时间是否在加工时间范围内,确保加工计划的合理性。
数据统计与报表生成
平台提供了强大的数据统计功能,支持按时间维度生成各类报表:
public static List<String> getSevenDate() {
List<String> dateList = new ArrayList<String>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
for (int i = 0; i < 7; i++) {
Date date = DateUtils.addDays(new Date(), -i * 30);
String formatDate = sdf.format(date);
dateList.add(formatDate);
}
return dateList;
}
该方法生成最近7个月的时间序列,用于月度统计报表的生成。

设备类型管理
设备分类管理通过t_shebeitype表实现,支持灵活的设备分类体系:
CREATE TABLE `t_shebeitype` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`t_name` varchar(255) DEFAULT NULL COMMENT '类型名称',
`t_bz` varchar(255) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备类型表'
对应的MyBatis映射文件配置:
<mapper namespace="graduation.design.mapper.ShebeitypeMapper">
<select id="getObjectList" parameterType="map" resultType="graduation.design.model.Shebeitype">
SELECT * FROM t_shebeitype
WHERE 1=1
<if test="t_name != null and t_name != ''">
AND t_name LIKE CONCAT('%', #{t_name}, '%')
</if>
ORDER BY id DESC
<if test="pageModel != null">
LIMIT #{pageModel.start}, #{pageModel.pageSize}
</if>
</select>
</mapper>

用户权限管理
用户表t_user设计了完善的字段体系,支持多维度用户信息管理:
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`u_username` varchar(255) DEFAULT NULL COMMENT '用户名',
`u_password` varchar(255) DEFAULT NULL COMMENT '密码',
`u_name` varchar(255) DEFAULT NULL COMMENT '姓名',
`u_birthday` varchar(255) DEFAULT NULL COMMENT '生日',
`u_sex` varchar(255) DEFAULT NULL COMMENT '性别',
`u_tel` varchar(255) DEFAULT NULL COMMENT '电话',
`u_lxr` varchar(255) DEFAULT NULL COMMENT '联系人',
`u_phone` varchar(255) DEFAULT NULL COMMENT '手机',
`u_jg` varchar(255) DEFAULT NULL COMMENT '籍贯',
`u_address` varchar(255) DEFAULT NULL COMMENT '地址',
`u_bm` varchar(255) DEFAULT NULL COMMENT '部门',
`u_type` varchar(255) DEFAULT NULL COMMENT '用户类型',
`u_by_1` varchar(255) DEFAULT NULL COMMENT '备用字段1',
`u_by_2` varchar(255) DEFAULT NULL COMMENT '备用字段2',
`u_by_3` varchar(255) DEFAULT NULL COMMENT '备用字段3',
`u_bz` varchar(255) DEFAULT NULL COMMENT '备注',
`dw` int(11) DEFAULT NULL COMMENT '单位',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表'
用户登录验证的核心代码:
@Controller
@RequestMapping(value = "User")
public class UserController {
@RequestMapping(value = "/login.do")
public String login(HttpServletRequest request, User user, Model model) {
User loginUser = userMapper.login(user);
if (loginUser != null) {
request.getSession().setAttribute("user", loginUser);
return "redirect:/index.do";
} else {
model.addAttribute("error", "用户名或密码错误");
return "User/login";
}
}
}

实体模型设计
系统采用标准的JavaBean实体类设计,与数据库表结构严格对应:
public class Jiagong {
private Integer id;
private String t_gx; // 工序
private String t_ks; // 开始时间
private String t_js; // 结束时间
private String t_bz; // 备注
private Integer wuliao_id; // 物料ID
private Integer shebei_id; // 设备ID
private Integer xh; // 序号
// 关联对象
private Wuliao wuliao;
private Shebei shebei;
// getter和setter方法
public Integer getId() { return id; }
public void setId(Integer id) { this.id = id; }
public String getT_gx() { return t_gx; }
public void setT_gx(String t_gx) { this.t_gx = t_gx; }
// 其他getter/setter方法...
}
这种设计模式确保了数据层与业务层之间的数据传递效率,同时通过关联对象实现了数据的完整性和一致性。
功能展望与优化
1. 引入Redis缓存提升性能
当前系统在频繁查询的设备信息和物料库存数据方面存在优化空间。建议引入Redis作为二级缓存:
@Service
public class WuliaoService {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public Wuliao getWuliaoById(Integer id) {
String cacheKey = "wuliao:" + id;
Wuliao wuliao = (Wuliao) redisTemplate.opsForValue().get(cacheKey);
if (wuliao == null) {
wuliao = wuliaoMapper.selectByPrimaryKey(id);
redisTemplate.opsForValue().set(cacheKey, wuliao, 30, TimeUnit.MINUTES);
}
return wuliao;
}
}
2. 微服务架构改造
随着业务复杂度的增加,可以将单体应用拆分为微服务架构:
- 设备管理服务:负责设备信息、状态、维护记录管理
- 物料管理服务:处理物料库存、采购、领用业务
- 加工流程服务:管理生产加工流程和进度跟踪
- 用户权限服务:统一身份认证和权限管理
3. 移动端适配与PWA技术
开发移动端应用,支持扫码快速录入设备信息和物料库存:
// 基于PWA的移动端适配
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js')
.then(registration => {
console.log('SW registered: ', registration);
});
}
4. 大数据分析与预测功能
集成大数据分析组件,实现设备故障预测和库存优化:
@Service
public class PredictiveMaintenanceService {
public Map<String, Object> predictEquipmentFailure(Integer shebeiId) {
// 基于历史维护数据进行分析预测
return analysisResult;
}
}
5. 物联网集成与实时监控
通过物联网技术实现设备状态的实时采集和监控:
@Component
public class IoTDeviceMonitor {
@EventListener
public void handleDeviceStatusChange(DeviceStatusEvent event) {
// 处理设备状态变化事件
realTimeAlertService.checkThreshold(event.getDeviceId());
}
}
该企业级资产管控平台通过SSM框架的稳定性和灵活性,为企业提供了完整的设备与物料管理解决方案。系统在设计上充分考虑了实际业务需求,从数据库设计到业务逻辑实现都体现了高度的专业性和实用性。随着后续的技术升级和功能扩展,平台将更好地服务于现代制造业的数字化转型需求。