精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻
💖🔥作者主页:计算机毕设木哥🔥 💖
一、项目介绍
1. 项目概述
(1) 技术选型:Spring+SpringMVC+Mybatis;搭配Shiro框架实现权限管理;用Maven管理项目依赖;前端采用Bootstrap构建页面,Thymeleaf模板引擎绑定数据;接口实现Restfull风格;
(2) 数据库:mysql -5.7.26
(3) 服务器容器:tomcat -9.0.26
(4) 开发工具:Intellij IDEA 2019版
2.1 设备
设备具有设备标识(id)、设备类型(type)、设备品牌(brand)、设备型号(model)、购置时间(purchase_time)、ERP资产编码(erp_code)、使用状态(status)、域管理状态(domainState) 使用人(master),使用部门(department),所属网络(network),MAC地址(MacAddress),IP地址(ip_Address),系统版本(systemVersion),硬盘容量(HardDisk_Size),CPU信息(CPU_info),内存信息(memory_Info),设备维护信息(maintainInfo) 等信息
1.3首页模块
1. 信息公告
首页可预览发布的公告基本信息(包括标题,日期),点击超链接可以跳转到公告列表,查看公告详细信息
2. 审批填报
由导入模板生成的审批信息填写页面,填写完毕后可以打印
3. 快捷访问
站外网站的快捷导航
4.登录
固定在页面顶部,展示用户的用户名;退出按钮可以注销登录;用户未登录无法访问台账管理模块
台账管理模块
2. 设备管理
设备信息展示与 设备台账 类似,
新增设备功能,输入设备信息以登记新增的设备.可以通过模板导入自动录入信息.
3. 账户信息
需要管理员以上权限可访问,展示用户的信息,可以对账户状态进行管理,可以增删用户以及修改密码
4. 设备台账
设备信息以列表展示在页面,可根据设备信息进行搜索,查询结果可以根据不同的方式(例如时间升/降序)排序,查询结果可以到出excel表
5. 信息维护
基本信息管理,包括设备类型,设备品牌,组织结构等
6. IP 地址
管理ip网段,可增删查改ip地址
7. 信息公告
查看,删除已发布公告;或新增公告
8. 系统管理
需超级管理员权限访问,可对管理员用户账户进行增删,修改密码操作;可查看系统日志
二、项目展示
登录页面:
管理员模块:
三、代码展示
package com.rebuild.core.metadata;
import cn.devezhao.persist4j.Entity;
import cn.devezhao.persist4j.Field;
import cn.devezhao.persist4j.engine.ID;
import cn.devezhao.persist4j.metadata.BaseMeta;
import com.rebuild.core.Application;
import com.rebuild.core.metadata.easymeta.DisplayType;
import com.rebuild.core.metadata.easymeta.EasyEntity;
import com.rebuild.core.metadata.easymeta.EasyMetaFactory;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.util.Assert;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
@SuppressWarnings("SuspiciousToArrayCall")
public class MetadataSorter {
public static Entity[] sortEntities() {
return sortEntities(null, true, true);
}
public static Entity[] sortEntities(ID user, boolean includesBizz, boolean includesDetail) {
List<BaseMeta> entities = new ArrayList<>();
for (Entity e : MetadataHelper.getEntities()) {
if (!e.isQueryable()) continue;
if (!includesDetail && e.getMainEntity() != null) continue;
EasyEntity easyEntity = EasyMetaFactory.valueOf(e);
if (easyEntity.isBuiltin() && !easyEntity.isPlainEntity()) continue;
Entity checkEntity = e;
if (includesDetail && e.getMainEntity() != null) checkEntity = e.getMainEntity();
if (user == null || !MetadataHelper.hasPrivilegesField(checkEntity)) {
entities.add(e);
} else if (Application.getPrivilegesManager().allowRead(user, checkEntity.getEntityCode())) {
entities.add(e);
}
}
sortByLabel(entities);
if (includesDetail) {
List<BaseMeta> entities2 = new ArrayList<>();
for (BaseMeta o : entities) {
Entity me = (Entity) o;
if (me.getDetailEntity() == null && me.getMainEntity() == null) {
entities2.add(me);
} else if (me.getDetailEntity() != null) {
entities2.add(me);
for (BaseMeta de : entities) {
if (me.equals(((Entity) de).getMainEntity())) entities2.add(de);
}
}
}
entities = entities2;
}
if (includesBizz) {
entities.add(MetadataHelper.getEntity(EntityHelper.User));
entities.add(MetadataHelper.getEntity(EntityHelper.Department));
entities.add(MetadataHelper.getEntity(EntityHelper.Role));
entities.add(MetadataHelper.getEntity(EntityHelper.Team));
}
return entities.toArray(new Entity[0]);
}
public static Entity[] sortDetailEntities(Entity mainEntity) {
Assert.notNull(mainEntity.getDetailEntity(), "None main entity : " + mainEntity);
List<BaseMeta> entities = new ArrayList<>();
CollectionUtils.addAll(entities, mainEntity.getDetialEntities());
sortByLabel(entities);
return entities.toArray(new Entity[0]);
}
public static Field[] sortFields(Entity entity, DisplayType... usesTypes) {
return sortFields(entity.getFields(), usesTypes);
}
public static Field[] sortFields(Field[] fields, DisplayType... usesTypes) {
List<BaseMeta> fieldsList = new ArrayList<>();
for (Field field : fields) {
if (MetadataHelper.isSystemField(field)) continue;
if (usesTypes.length == 0) {
fieldsList.add(field);
} else {
DisplayType dt = EasyMetaFactory.getDisplayType(field);
for (DisplayType use : usesTypes) {
if (dt == use) fieldsList.add(field);
}
}
}
return sortByLevel(fieldsList);
}
static Field[] sortByLevel(List<BaseMeta> fields) {
List<BaseMeta> othersFields = new ArrayList<>();
List<BaseMeta> commonsFields = new ArrayList<>();
List<BaseMeta> approvalFields = new ArrayList<>();
for (BaseMeta field : fields) {
if (MetadataHelper.isApprovalField(field.getName())) {
approvalFields.add(field);
} else if (MetadataHelper.isCommonsField((Field) field)) {
commonsFields.add(field);
} else {
othersFields.add(field);
}
}
sortByLabel(othersFields);
List<BaseMeta> allFields = new ArrayList<>(othersFields);
sortByLabel(commonsFields);
allFields.addAll(commonsFields);
sortByLabel(approvalFields);
allFields.addAll(approvalFields);
return allFields.toArray(new Field[0]);
}
public static void sortByLabel(List<BaseMeta> metas) {
if (metas.size() <= 1) return;
Comparator<Object> comparator = Collator.getInstance(Locale.CHINESE);
metas.sort((foo, bar) -> {
String fooLetter = EasyMetaFactory.getLabel(foo);
String barLetter = EasyMetaFactory.getLabel(bar);
return comparator.compare(fooLetter, barLetter);
});
}
}
四、项目总结
本文详细介绍了一个基于SSM的企业设备统计分析管理系统的设计与实现过程。该系统通过自动化、智能化的方式提高了设备管理的效率和精度,为企业管理层提供了决策支持。实验结果表明,系统具有一定的可行性和实用性。然而,系统仍存在一些不足之处,需要进一步优化和改进。未来的研究方向包括优化系统性能、增强系统功能、提高用户体验等。