文章目录

  • 一、项目介绍
  • 二、项目功能介绍
  • 三、开发环境
  • 四、系统展示
  • 五、代码展示
  • 六、项目总结

一、项目介绍

随着信息技术的不断发展和普及,企业项目申报已经成为企业管理中不可或缺的重要环节。传统的项目申报方式通常涉及大量纸质文件和繁琐的人工操作,这不仅效率低下,而且容易出错。因此,设计并实现一个基于Spring Boot的企业项目申报系统,对于提高企业项目申报效率和准确性具有重要意义。

Spring Boot是一个开源的Java开发框架,它旨在简化Spring应用的创建和部署。由于其强大的功能和易于使用的特性,Spring Boot已经成为Java开发者进行应用开发的首选工具之一。本系统将采用Spring Boot作为开发框架,利用其内置的开发工具和库,实现一个高效、可靠的企业项目申报系统。通过本系统,企业可以在线完成项目申报,减少了繁琐的人工操作,提高了申报效率。同时,本系统还可以提供实时的项目进度监控和统计分析,为企业决策提供了有力的数据支持。

因此,基于Spring Boot的企业项目申报系统的设计与实现具有重要的现实意义。它可以帮助企业提高项目申报的效率和成功率,从而推动企业的发展。同时,本系统的实现也为企业应用开发提供了有益的探索和实践,推动了信息技术的进一步发展。

二、项目功能介绍

1.管理员角色功能介绍:

个人中心:管理员可以在个人中心查看和编辑自己的个人信息,例如姓名、密码、联系方式等。
操作日志管理:管理员可以查看和审计系统的操作日志,以便了解系统使用情况和排查错误。
公告管理:管理员可以在公告管理界面发布公告,通知用户或专家重要信息或变更。
留言板管理:管理员可以管理用户和专家在留言板上发布的留言,可以删除不当言论或添加自己的回复。
资讯信息管理:管理员可以发布和编辑系统的资讯信息,提供最新的行业动态和新闻。
项目管理:管理员可以添加和管理项目,包括项目的创建、编辑、删除、审核等操作。
用户管理:管理员可以添加、删除、修改用户,并为用户分配相应的权限。
专家管理:管理员可以添加、删除、修改专家信息,为专家分配相应的权限。

2.用户角色功能介绍:

注册:用户可以填写相关信息进行系统注册,创建个人账号。
登录:用户可以使用注册的账号和密码进行系统登录。
个人中心:用户可以在个人中心查看和编辑自己的个人信息,例如姓名、密码、联系方式等。
浏览公告:用户可以浏览管理员发布的公告,获取最新通知和消息。
留言板和参与留言:用户可以在留言板上查看其他用户和专家发布的留言,也可以自己发布留言。
资讯信息:用户可以查看和浏览管理员发布的资讯信息。
添加提交项目申报:用户可以根据项目管理的要求添加提交项目申报,包括项目名称、申报理由、相关附件等信息。

3.专家角色功能介绍

个人中心:专家可以在个人中心查看和编辑自己的个人信息,例如姓名、密码、联系方式等。
公告信息:专家可以查看管理员发布的公告,获取相关通知和信息。
留言板管理:专家可以在留言板上查看其他用户和专家发布的留言,也可以自己发布或回复留言。
资讯信息管理:专家可以查看和浏览管理员发布的资讯信息。
项目管理:专家可以对管理员添加的项目进行评估和评价,可以查看项目的详细信息并提出建议。

三、开发环境

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

四、系统展示

登录模块:

企业级框架开发 企业框架怎么写_android


首页模块:

企业级框架开发 企业框架怎么写_vue.js_02


企业级框架开发 企业框架怎么写_vue.js_03


企业级框架开发 企业框架怎么写_java_04


企业级框架开发 企业框架怎么写_android_05


管理员模块:

企业级框架开发 企业框架怎么写_android_06


企业级框架开发 企业框架怎么写_vue.js_07


企业级框架开发 企业框架怎么写_spring boot_08


企业级框架开发 企业框架怎么写_spring boot_09


专家模块:

企业级框架开发 企业框架怎么写_spring boot_10


企业级框架开发 企业框架怎么写_vue.js_11


企业级框架开发 企业框架怎么写_java_12

五、代码展示

public class CommonController{
	@Autowired
	private CommonService commonService;

    private static AipFace client = null;
    
    @Autowired
    private ConfigService configService;
    
	/**
	 * 获取table表中的column列表(联动接口)
	 * @param table
	 * @param column
	 * @return
	 */
	@IgnoreAuth
	@RequestMapping("/option/{tableName}/{columnName}")
	public R getOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName,String level,String parent) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("table", tableName);
		params.put("column", columnName);
		if(StringUtils.isNotBlank(level)) {
			params.put("level", level);
		}
		if(StringUtils.isNotBlank(parent)) {
			params.put("parent", parent);
		}
		List<String> data = commonService.getOption(params);
		return R.ok().put("data", data);
	}
	
	/**
	 * 根据table中的column获取单条记录
	 * @param table
	 * @param column
	 * @return
	 */
	@IgnoreAuth
	@RequestMapping("/follow/{tableName}/{columnName}")
	public R getFollowByOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName, @RequestParam String columnValue) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("table", tableName);
		params.put("column", columnName);
		params.put("columnValue", columnValue);
		Map<String, Object> result = commonService.getFollowByOption(params);
		return R.ok().put("data", result);
	}
	
	/**
	 * 修改table表的sfsh状态
	 * @param table
	 * @param map
	 * @return
	 */
	@RequestMapping("/sh/{tableName}")
	public R sh(@PathVariable("tableName") String tableName, @RequestBody Map<String, Object> map) {
		map.put("table", tableName);
		(map);
		return R.ok();
	}
	
	/**
	 * 获取需要提醒的记录数
	 * @param tableName
	 * @param columnName
	 * @param type 1:数字 2:日期
	 * @param map
	 * @return
	 */
	@IgnoreAuth
	@RequestMapping("/remind/{tableName}/{columnName}/{type}")
	public R remindCount(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("table", tableName);
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		int count = commonService.remindCount(map);
		return R.ok().put("count", count);
	}
	
	/**
	 * 单列求和
	 */
	@IgnoreAuth
	@RequestMapping("/cal/{tableName}/{columnName}")
	public R cal(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("table", tableName);
		params.put("column", columnName);
		Map<String, Object> result = commonService.selectCal(params);
		return R.ok().put("data", result);
	}
	
	/**
	 * 分组统计
	 */
	@IgnoreAuth
	@RequestMapping("/group/{tableName}/{columnName}")
	public R group(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("table", tableName);
		params.put("column", columnName);
		List<Map<String, Object>> result = commonService.selectGroup(params);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		for(Map<String, Object> m : result) {
			for(String k : m.keySet()) {
				if(m.get(k) instanceof Date) {
					m.put(k, sdf.format((Date)m.get(k)));
				}
			}
		}
		return R.ok().put("data", result);
	}
	
	/**
	 * (按值统计)
	 */
	@IgnoreAuth
	@RequestMapping("/value/{tableName}/{xColumnName}/{yColumnName}")
	public R value(@PathVariable("tableName") String tableName, @PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("table", tableName);
		params.put("xColumn", xColumnName);
		params.put("yColumn", yColumnName);
		List<Map<String, Object>> result = commonService.selectValue(params);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		for(Map<String, Object> m : result) {
			for(String k : m.keySet()) {
				if(m.get(k) instanceof Date) {
					m.put(k, sdf.format((Date)m.get(k)));
				}
			}
		}
		return R.ok().put("data", result);
	}

	/**
 	 * (按值统计)时间统计类型
 	 */
	@IgnoreAuth
	@RequestMapping("/value/{tableName}/{xColumnName}/{yColumnName}/{timeStatType}")
	public R valueDay(@PathVariable("tableName") String tableName, @PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName, @PathVariable("timeStatType") String timeStatType) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("table", tableName);
		params.put("xColumn", xColumnName);
		params.put("yColumn", yColumnName);
		params.put("timeStatType", timeStatType);
		List<Map<String, Object>> result = commonService.selectTimeStatValue(params);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		for(Map<String, Object> m : result) {
			for(String k : m.keySet()) {
				if(m.get(k) instanceof Date) {
					m.put(k, sdf.format((Date)m.get(k)));
				}
			}
		}
		return R.ok().put("data", result);
	}

    /**
     * 人脸比对
     * 
     * @param face1 人脸1
     * @param face2 人脸2
     * @return
     */
    @RequestMapping("/matchFace")
    @IgnoreAuth
    public R matchFace(String face1, String face2,HttpServletRequest request) {
        if(client==null) {
            /*String AppID = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "AppID")).getValue();*/
            String APIKey = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "APIKey")).getValue();
            String SecretKey = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "SecretKey")).getValue();
            String token = BaiduUtil.getAuth(APIKey, SecretKey);
            if(token==null) {
                return R.error("请在配置管理中正确配置APIKey和SecretKey");
            }
            client = new AipFace(null, APIKey, SecretKey);
            client.setConnectionTimeoutInMillis(2000);
            client.setSocketTimeoutInMillis(60000);
        }
        JSONObject res = null;
        try {
            File file1 = new File(request.getSession().getServletContext().getRealPath("/upload")+"/"+face1);
            File file2 = new File(request.getSession().getServletContext().getRealPath("/upload")+"/"+face2);
            String img1 = Base64Util.encode(FileUtil.FileToByte(file1));
            String img2 = Base64Util.encode(FileUtil.FileToByte(file2));
            MatchRequest req1 = new MatchRequest(img1, "BASE64");
            MatchRequest req2 = new MatchRequest(img2, "BASE64");
            ArrayList<MatchRequest> requests = new ArrayList<MatchRequest>();
            requests.add(req1);
            requests.add(req2);
            res = client.match(requests);
            System.out.println(res.get("result"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return R.error("文件不存在");
        } catch (IOException e) {
            e.printStackTrace();
        } 
        return R.ok().put("data", com.alibaba.fastjson.JSONObject.parse(res.get("result").toString()));
    }
	
}

六、项目总结

企业申报管理系统是一款为了满足企业在项目申报过程中的全方位需求而设计的软件。该系统拥有强大的项目管理功能,可以有效地简化申报流程,提高工作效率。同时,系统还为用户提供了个人中心、浏览公告、留言板和参与留言、资讯信息、添加提交项目申报等功能,可以更好地满足用户的需求。此外,该系统还拥有操作日志管理、公告管理、留言板管理、资讯信息管理、项目管理、用户管理、专家管理等功能模块,可以有效地监控系统的运行状态,管理留言板和项目管理等,从而保障系统的安全稳定。总之,该系统的应用可以帮助企业更好地实现信息化管理,提高企业的工作效率和管理水平。