基于springboot的企业项目管理系统的设计与实现

精彩专栏推荐订阅:在下方主页👇🏻👇🏻👇🏻👇🏻

💖🔥作者主页计算机毕设木哥🔥 💖

一、项目介绍

随着经济的发展和社会的进步,企业项目管理已成为企业管理的重要组成部分。本文旨在探讨企业项目管理系统,该系统包括管理员和用户两种角色,管理员可以进行个人中心、用户管理、项目管理、项目申报管理、操作日志管理、公告管理、论坛管理、基础数据管理等操作,用户可以进行注册、登录、个人中心、论坛、公告、查看筛选项目、添加项目申报信息等操作。本文将对该系统的功能进行详细介绍,并提出可行的改进措施。

企业项目管理系统的建设对于企业管理来说具有重要的意义。在企业项目管理系统中,管理员和用户是两个重要的角色。管理员需要负责系统的全面运行和维护,包括用户管理、项目管理、项目申报管理、操作日志管理、公告管理、论坛管理、基础数据管理等。而用户则需要通过注册和登录来使用系统提供的功能,例如个人中心、论坛、公告、查看筛选项目、添加项目申报信息等。本文将对企业项目管理系统进行详细介绍,并提出可行的改进措施。

二、项目功能介绍

管理员包括以下功能:
1)个人中心:管理员可以在个人中心查看自己的个人信息和修改密码等操作。
2)用户管理:管理员可以添加、编辑、删除用户信息,并对用户进行分组管理。
3)项目管理:管理员可以创建新的项目,并添加项目的详细信息,包括项目预算、项目周期、项目内容等。
4)项目申报管理:管理员可以查看所有申报的项目信息,包括申报人、申报时间、申报内容等,并对申报的项目进行审核和管理。
5)操作日志管理:管理员可以查看所有用户的操作日志,包括登录、注销、查看项目等操作。
6)公告管理:管理员可以发布公告,并编辑、删除已有的公告。
7)论坛管理:管理员可以管理论坛中的帖子和评论,并可以对不当言论进行删除和封禁。
8)基础数据管理:管理员可以对企业项目管理系统中的一些基础数据进行管理和维护,例如部门、职务、权限等。

用户包括以下功能:
1)注册:用户可以通过注册来创建自己的账号和密码。为了保护用户的账号安全,我们采用了多种安全措施,包括密码加密存储和定期更换密码等。
2)登录:用户可以使用自己的账号和密码来登录系统。为了保护用户的隐私,我们采用了SSL加密传输技术,确保用户数据的安全性。
3)个人中心:用户可以在个人中心查看自己的个人信息,包括头像、姓名、性别等基础信息和对项目的关注度和收藏等行为信息;同时可以在个人中心进行修改密码等操作。
4)论坛:用户可以在论坛中浏览帖子和评论,并可以发表自己的评论和看法。为了维护论坛的秩序,我们制定了严格的论坛规定,并对不当言论进行删除和封禁。
5)查看筛选项目:用户可以筛选出符合自己需求的申报项目并查看详细信息。为了提高用户体验,我们提供了多种筛选条件,包括项目类型、申报人、申报时间等。
6)添加项目申报信息:用户可以申报符合自己能力和兴趣的项目信息并提交给管理员审核。为了确保项目的真实性和合法性,我们要求用户提供相关证明材料并审核通过后才能正式提交。

三、开发环境

  • 开发语言:Java
  • 数据库:MySQL
  • 系统架构:B/S
  • 后端:springboot
  • 前端:vue
  • 工具:IDEA或者Eclipse、JDK1.8、Maven

四、系统展示

登录模块:
在这里插入图片描述
首页模块:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
管理员模块:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、代码展示

public class MetadataHelper {

    
    public static final String SPLITER = CommonsUtils.COMM_SPLITER;
    public static final String SPLITER_RE = CommonsUtils.COMM_SPLITER_RE;

    
    public static DynamicMetadataFactory getMetadataFactory() {
        return (DynamicMetadataFactory) Application.getPersistManagerFactory().getMetadataFactory();
    }

    
    public static Entity[] getEntities() {
        return getMetadataFactory().getEntities();
    }

    
    public static boolean containsEntity(String entityName) {
        try {
            return !(getEntity(entityName) instanceof GhostEntity);
        } catch (MissingMetaExcetion ex) {
            return false;
        }
    }

    
    public static boolean containsEntity(int entityCode) {
        try {
            getEntity(entityCode);
            return true;
        } catch (MissingMetaExcetion ex) {
            return false;
        }
    }

    
    public static boolean containsField(String entityName, String fieldName) {
        try {
            return getEntity(entityName).containsField(fieldName);
        } catch (MissingMetaExcetion ex) {
            return false;
        }
    }

    
    public static Entity getEntity(String entityName) throws MissingMetaExcetion {
        try {
            return getMetadataFactory().getEntity(entityName);
        } catch (MissingMetaExcetion ex) {
            throw new MissingMetaExcetion(Language.L("实体 [%s] 已经不存在,请检查配置", entityName.toUpperCase()));
        }
    }

    
    public static Entity getEntity(int entityCode) throws MissingMetaExcetion {
        try {
            return getMetadataFactory().getEntity(entityCode);
        } catch (MissingMetaExcetion ex) {
            throw new MissingMetaExcetion(Language.L("实体 [%s] 已经不存在,请检查配置", entityCode));
        }
    }

    
    public static String getEntityName(ID recordId) {
        return getEntity(recordId.getEntityCode()).getName();
    }

    
    public static Field getField(String entityName, String fieldName) throws MissingMetaExcetion {
        try {
            return getEntity(entityName).getField(fieldName);
        } catch (MissingMetaExcetion ex) {
            throw new MissingMetaExcetion(
                    Language.L("字段 [%s] 已经不存在,请检查配置", (entityName + "#" + fieldName).toUpperCase()));
        }
    }

    
    public static Field[] getReferenceToFields(Entity sourceEntity, Entity referenceEntity, boolean includeN2N) {
        List<Field> fields = new ArrayList<>();
        for (Field field : referenceEntity.getFields()) {
            boolean isRef = field.getType() == FieldType.REFERENCE
                    || (includeN2N && field.getType() == FieldType.REFERENCE_LIST);
            if (isRef && field.getReferenceEntity().equals(sourceEntity)) {
                fields.add(field);
            }
        }
        return fields.toArray(new Field[0]);
    }

    
    public static Field[] getReferenceToFields(Entity sourceEntity, Entity referenceEntity) {
        return getReferenceToFields(sourceEntity, referenceEntity, Boolean.FALSE);
    }

    
    public static Field[] getReferenceToFields(Entity sourceEntity, boolean includeN2N) {
        List<Field> fields = new ArrayList<>();
        for (Entity entity : getEntities()) {
            CollectionUtils.addAll(fields, getReferenceToFields(sourceEntity, entity, includeN2N));
        }
        return fields.toArray(new Field[0]);
    }

    
    public static boolean isSystemField(Field field) {
        return isSystemField(field.getName()) || field.getType() == FieldType.PRIMARY;
    }

    
    public static boolean isSystemField(String fieldName) {
        return EntityHelper.AutoId.equalsIgnoreCase(fieldName)
                || EntityHelper.QuickCode.equalsIgnoreCase(fieldName)
                || EntityHelper.IsDeleted.equalsIgnoreCase(fieldName)
                || EntityHelper.ApprovalStepNode.equalsIgnoreCase(fieldName);
    }

    
    public static boolean isCommonsField(Field field) {
        return isSystemField(field) || isCommonsField(field.getName());
    }

    
    public static boolean isCommonsField(String fieldName) {
        if (isSystemField(fieldName) || isApprovalField(fieldName)) return true;

        return EntityHelper.OwningUser.equalsIgnoreCase(fieldName) || EntityHelper.OwningDept.equalsIgnoreCase(fieldName)
                || EntityHelper.CreatedOn.equalsIgnoreCase(fieldName) || EntityHelper.CreatedBy.equalsIgnoreCase(fieldName)
                || EntityHelper.ModifiedOn.equalsIgnoreCase(fieldName) || EntityHelper.ModifiedBy.equalsIgnoreCase(fieldName);
    }

    
    public static boolean isApprovalField(String fieldName) {
        return EntityHelper.ApprovalId.equalsIgnoreCase(fieldName)
                || EntityHelper.ApprovalState.equalsIgnoreCase(fieldName)
                || EntityHelper.ApprovalStepNode.equalsIgnoreCase(fieldName)
                || EntityHelper.ApprovalLastUser.equalsIgnoreCase(fieldName)
                || EntityHelper.ApprovalLastTime.equalsIgnoreCase(fieldName)
                || EntityHelper.ApprovalLastRemark.equalsIgnoreCase(fieldName);
    }

    
    public static boolean isBizzEntity(int entityCode) {
        return entityCode == EntityHelper.User || entityCode == EntityHelper.Department
                || entityCode == EntityHelper.Role || entityCode == EntityHelper.Team;
    }

    
    public static boolean isBizzEntity(Entity entity) {
        return isBizzEntity(entity.getEntityCode());
    }

    
    public static boolean isBusinessEntity(Entity entity) {
        if (entity.getMainEntity() != null) entity = entity.getMainEntity();
        return hasPrivilegesField(entity) || EasyMetaFactory.valueOf(entity).isPlainEntity();
    }

    
    public static boolean hasPrivilegesField(Entity entity) {
        return entity.containsField(EntityHelper.OwningUser) && entity.containsField(EntityHelper.OwningDept);
    }

    
    public static boolean hasApprovalField(Entity entity) {
        return entity.containsField(EntityHelper.ApprovalId) && entity.containsField(EntityHelper.ApprovalState);
    }

    
    public static Field getDetailToMainField(Entity detailEntity) {
        Entity main = detailEntity.getMainEntity();
        Assert.isTrue(main != null, "None detail-entity");

        String mainForeign = main.getName() + "Id";
        if (detailEntity.containsField(mainForeign)) return detailEntity.getField(mainForeign);

        for (Field field : detailEntity.getFields()) {
            if (field.getType() != FieldType.REFERENCE) continue;

            
            if (main.equals(field.getReferenceEntity()) && !field.isCreatable()) {
                return field;
            }
        }
        throw new MetadataException("Bad detail-entity (No DTM)");
    }

    
    public static Field getLastJoinField(Entity entity, String fieldPath) {
        return getLastJoinField(entity, fieldPath, Boolean.FALSE);
    }

    
    public static Field getLastJoinField(Entity entity, String fieldPath, boolean compatibleN2N) {
        final String[] ps = fieldPath.split("\\.");

        if (fieldPath.charAt(0) == QueryCompiler.NAME_FIELD_PREFIX) {
            ps[0] = ps[0].substring(1);
            if (!entity.containsField(ps[0])) return null;
        }

        Field lastField = null;
        Entity father = entity;
        for (String field : ps) {
            if (father != null && father.containsField(field)) {
                lastField = father.getField(field);
                if (lastField.getType() == FieldType.REFERENCE) {
                    father = lastField.getReferenceEntity();
                } else if (compatibleN2N && lastField.getType() == FieldType.REFERENCE_LIST) {
                    father = lastField.getReferenceEntity();
                }  else {
                    father = null;
                }
            } else {
                return null;
            }
        }
        return lastField;
    }

    
    public static boolean checkAndWarnField(Entity entity, String fieldName) {
        if (entity.containsField(fieldName)) return true;
        log.warn("Unknown field `{}` in `{}`", fieldName, entity.getName());
        CommonsUtils.printStackTrace();
        return false;
    }

    
    public static boolean checkAndWarnField(String entityName, String fieldName) {
        if (!containsEntity(entityName)) return false;
        return checkAndWarnField(getEntity(entityName), fieldName);
    }

    
    public static Set<String> getEntityTags() {
        Set<String> set = new TreeSet<>();
        for (Entity entity : getEntities()) {
            String tags = EasyMetaFactory.valueOf(entity).getExtraAttr(EasyEntityConfigProps.TAGS);
            if (StringUtils.isNotBlank(tags)) {
                Collections.addAll(set, tags.split(","));
            }
        }
        return set;
    }

    
    public static ID checkSpecEntityId(String idtext, int entityCode) {
        if (!ID.isId(idtext)) return null;
        ID id = ID.valueOf(idtext);
        return id.getEntityCode() == entityCode ? id : null;
    }
}

六、项目总结

企业项目管理系统是企业内部管理的重要工具,它以管理员和用户两角色为核心,旨在协调和管理企业的各类项目与任务。系统的主要功能包括管理员的个人中心、用户管理、项目管理、项目申报管理、操作日志管理、公告管理、论坛管理以及基础数据管理等,涵盖了从项目立项到执行到完成的全程管理。同时,用户也可以通过注册和登录,使用个人中心、论坛、公告查看筛选项目以及添加项目申报信息等功能,更好地参与和管理项目流程。

企业项目管理系统的重要性体现在多个方面。首先,它可以通过规划和管理项目流程,实现资源的优化配置,有效提高项目的执行效率和成功率。其次,该系统能提升企业的信息管理水平,提高企业内部沟通和协作的效率。此外,随着数字化时代的到来,企业项目管理系统已经成为企业不可或缺的一部分,通过不断改进和优化系统功能,企业可以更好地满足自身的需求和提高管理水平。

大家可以帮忙点赞、收藏、关注、评论啦 👇🏻👇🏻👇🏻

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值