项目编号:BS-XX-234
一,环境介绍
语言环境:Java: jdk1.8
数据库:Mysql: mysql5.7
应用服务器:Tomcat: tomcat8.5.31
开发工具:IDEA或eclipse
开发支术:Springboot+Vue
二,项目简介
现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本员工健康管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此员工健康管理系统利用当下成熟完善的springboot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了字典管理、论坛管理、公告管理、健康日志管理、新闻管理、新闻收藏管理、新闻留言管理、用户管理、管理员管理等功能。员工健康管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。
在分析并得出使用者对程序的功能要求时,就可以进行程序设计了。如图4.2展示的就是管理员功能结构图,管理员主要负责填充员工和其类别信息,并对已填充的数据进行维护,包括修改与删除,管理员也需要对奖惩对培训,对考,对薪资等进行管理。
图1 系统功能结构图
实体E-R图如下图2所示:
三,系统展示
系统实现部分就是将系统分析,系统设计部分的内容通过编码进行功能实现,以一个实际应用系统的形式展示系统分析与系统设计的结果。前面提到的系统分析,系统设计最主要还是进行功能,系统操作逻辑的设计,也包括了存储数据的数据库方面的设计等内容,系统实现就是一个最终的实施阶段,将前面的设计成果进行物理转化,最终出具可以运用于实际的软件系统。
3.1 管理员功能介绍
3.1.1 员工健康日志管理
如图5.1显示的就是员工健康日志管理页面,此页面提供给管理员的功能有:查看员工健康列表,新增员工健康,修改员工健康,删除员工健康。
图3.1 员工健康日志管理页面
3.1.2 公告管理
如图5.2显示的就是公告管理页面,此页面提供给管理员的功能有:新增公告,修改公告,删除公告。
图3.2 公告管理页面
3.1.3 公告类型管理
如图3.3显示的就是公告类型管理页面,此页面提供给管理员的功能有:新增公告类型,修改公告类型,删除公告类型。
图3.3 公告类型管理页面
package com.controller; import java.io.File; import java.math.BigDecimal; import java.net.URL; import java.text.SimpleDateFormat; import com.alibaba.fastjson.JSONObject; import java.util.*; import org.springframework.beans.BeanUtils; import javax.servlet.http.HttpServletRequest; import org.springframework.web.context.ContextLoader; import javax.servlet.ServletContext; import com.service.TokenService; import com.utils.*; import java.lang.reflect.InvocationTargetException; import com.service.DictionaryService; import org.apache.commons.lang3.StringUtils; import com.annotation.IgnoreAuth; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.entity.*; import com.entity.view.*; import com.service.*; import com.utils.PageUtils; import com.utils.R; import com.alibaba.fastjson.*; /** * 论坛 * 后端接口 * @author * @email */ @RestController @Controller @RequestMapping("/forum") public class ForumController { private static final Logger logger = LoggerFactory.getLogger(ForumController.class); private static final String TABLE_NAME = "forum"; @Autowired private ForumService forumService; @Autowired private TokenService tokenService; @Autowired private DictionaryService dictionaryService;//字典 @Autowired private GonggaoService gonggaoService;//公告 @Autowired private JiankangrizhiService jiankangrizhiService;//健康日志 @Autowired private NewsService newsService;//新闻 @Autowired private NewsCollectionService newsCollectionService;//新闻收藏 @Autowired private NewsLiuyanService newsLiuyanService;//新闻留言 @Autowired private YonghuService yonghuService;//用户 @Autowired private UsersService usersService;//管理员 /** * 后端列表 */ @RequestMapping("/page") public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){ logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params)); CommonUtil.checkMap(params); PageUtils page = forumService.queryPage(params); //字典表数据转换 List<ForumView> list =(List<ForumView>)page.getList(); for(ForumView c:list){ //修改对应字典表字段 dictionaryService.dictionaryConvert(c, request); } return R.ok().put("data", page); } /** * 后端详情 */ @RequestMapping("/info/{id}") public R info(@PathVariable("id") Long id, HttpServletRequest request){ logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id); ForumEntity forum = forumService.selectById(id); if(forum !=null){ //entity转view ForumView view = new ForumView(); BeanUtils.copyProperties( forum , view );//把实体数据重构到view中 //级联表 用户 //级联表 YonghuEntity yonghu = yonghuService.selectById(forum.getYonghuId()); if(yonghu != null){ BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId" , "usersId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表 view.setYonghuId(yonghu.getId()); } //级联表 管理员 //管理员表做额外的处理 UsersEntity users = usersService.selectById(forum.getUsersId()); if(users != null){ view.setUsersId(users.getId()); view.setUusername(users.getUsername()); view.setUpassword(users.getPassword()); view.setUrole(users.getRole()); view.setUaddtime(users.getAddtime()); } //修改对应字典表字段 dictionaryService.dictionaryConvert(view, request); return R.ok().put("data", view); }else { return R.error(511,"查不到数据"); } } /** * 后端保存 */ @RequestMapping("/save") public R save(@RequestBody ForumEntity forum, HttpServletRequest request){ logger.debug("save方法:,,Controller:{},,forum:{}",this.getClass().getName(),forum.toString()); String role = String.valueOf(request.getSession().getAttribute("role")); if(false) return R.error(511,"永远不会进入"); else if("用户".equals(role)) forum.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")))); else if("管理员".equals(role)) forum.setUsersId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")))); Wrapper<ForumEntity> queryWrapper = new EntityWrapper<ForumEntity>() .eq("forum_name", forum.getForumName()) .eq("yonghu_id", forum.getYonghuId()) .eq("users_id", forum.getUsersId()) .eq("super_ids", forum.getSuperIds()) .eq("forum_types", forum.getForumTypes()) .eq("forum_state_types", forum.getForumStateTypes()) ; logger.info("sql语句:"+queryWrapper.getSqlSegment()); ForumEntity forumEntity = forumService.selectOne(queryWrapper); if(forumEntity==null){ forum.setInsertTime(new Date()); forum.setCreateTime(new Date()); forumService.insert(forum); return R.ok(); }else { return R.error(511,"表中有相同数据"); } } /** * 后端修改 */ @RequestMapping("/update") public R update(@RequestBody ForumEntity forum, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException { logger.debug("update方法:,,Controller:{},,forum:{}",this.getClass().getName(),forum.toString()); ForumEntity oldForumEntity = forumService.selectById(forum.getId());//查询原先数据 String role = String.valueOf(request.getSession().getAttribute("role")); // if(false) // return R.error(511,"永远不会进入"); // else if("用户".equals(role)) // forum.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")))); // else if("管理员".equals(role)) // forum.setUsersId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")))); forum.setUpdateTime(new Date()); forumService.updateById(forum);//根据id更新 return R.ok(); } /** * 删除 */ @RequestMapping("/delete") public R delete(@RequestBody Integer[] ids, HttpServletRequest request){ logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString()); List<ForumEntity> oldForumList =forumService.selectBatchIds(Arrays.asList(ids));//要删除的数据 forumService.deleteBatchIds(Arrays.asList(ids)); return R.ok(); } /** * 批量上传 */ @RequestMapping("/batchInsert") public R save( String fileName, HttpServletRequest request){ logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName); Integer yonghuId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { List<ForumEntity> forumList = new ArrayList<>();//上传的东西 Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段 Date date = new Date(); int lastIndexOf = fileName.lastIndexOf("."); if(lastIndexOf == -1){ return R.error(511,"该文件没有后缀"); }else{ String suffix = fileName.substring(lastIndexOf); if(!".xls".equals(suffix)){ return R.error(511,"只支持后缀为xls的excel文件"); }else{ URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径 File file = new File(resource.getFile()); if(!file.exists()){ return R.error(511,"找不到上传文件,请联系管理员"); }else{ List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件 dataList.remove(0);//删除第一行,因为第一行是提示 for(List<String> data:dataList){ //循环 ForumEntity forumEntity = new ForumEntity(); // forumEntity.setForumName(data.get(0)); //帖子标题 要改的 // forumEntity.setYonghuId(Integer.valueOf(data.get(0))); //用户 要改的 // forumEntity.setUsersId(Integer.valueOf(data.get(0))); //管理员 要改的 // forumEntity.setForumContent("");//详情和图片 // forumEntity.setSuperIds(Integer.valueOf(data.get(0))); //父id 要改的 // forumEntity.setForumTypes(Integer.valueOf(data.get(0))); //帖子类型 要改的 // forumEntity.setForumStateTypes(Integer.valueOf(data.get(0))); //帖子状态 要改的 // forumEntity.setInsertTime(date);//时间 // forumEntity.setUpdateTime(sdf.parse(data.get(0))); //修改时间 要改的 // forumEntity.setCreateTime(date);//时间 forumList.add(forumEntity); //把要查询是否重复的字段放入map中 } //查询是否重复 forumService.insertBatch(forumList); return R.ok(); } } } }catch (Exception e){ e.printStackTrace(); return R.error(511,"批量插入数据异常,请联系管理员"); } } /** * 前端列表 */ @IgnoreAuth @RequestMapping("/list") public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){ logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params)); CommonUtil.checkMap(params); PageUtils page = forumService.queryPage(params); //字典表数据转换 List<ForumView> list =(List<ForumView>)page.getList(); for(ForumView c:list) dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段 return R.ok().put("data", page); } /** * 前端详情 */ @RequestMapping("/detail/{id}") public R detail(@PathVariable("id") Long id, HttpServletRequest request){ logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id); ForumEntity forum = forumService.selectById(id); if(forum !=null){ //entity转view ForumView view = new ForumView(); BeanUtils.copyProperties( forum , view );//把实体数据重构到view中 //级联表 YonghuEntity yonghu = yonghuService.selectById(forum.getYonghuId()); if(yonghu != null){ BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段 view.setYonghuId(yonghu.getId()); } UsersEntity users = usersService.selectById(forum.getUsersId()); if(users != null){ view.setUsersId(users.getId()); view.setUusername(users.getUsername()); view.setUpassword(users.getPassword()); view.setUrole(users.getRole()); view.setUaddtime(users.getAddtime()); } //修改对应字典表字段 dictionaryService.dictionaryConvert(view, request); return R.ok().put("data", view); }else { return R.error(511,"查不到数据"); } } /** * 前端保存 */ @RequestMapping("/add") public R add(@RequestBody ForumEntity forum, HttpServletRequest request){ logger.debug("add方法:,,Controller:{},,forum:{}",this.getClass().getName(),forum.toString()); Wrapper<ForumEntity> queryWrapper = new EntityWrapper<ForumEntity>() .eq("forum_name", forum.getForumName()) .eq("yonghu_id", forum.getYonghuId()) .eq("users_id", forum.getUsersId()) .eq("super_ids", forum.getSuperIds()) .eq("forum_types", forum.getForumTypes()) .eq("forum_state_types", forum.getForumStateTypes()) // .notIn("forum_types", new Integer[]{102}) ; logger.info("sql语句:"+queryWrapper.getSqlSegment()); ForumEntity forumEntity = forumService.selectOne(queryWrapper); if(forumEntity==null){ forum.setInsertTime(new Date()); forum.setCreateTime(new Date()); forumService.insert(forum); return R.ok(); }else { return R.error(511,"表中有相同数据"); } } }
四,核心代码展示
五,相关作品展示
基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目
基于Nodejs、Vue等前端技术开发的前端实战项目
基于微信小程序和安卓APP应用开发的相关作品
基于51单片机等嵌入式物联网开发应用
基于各类算法实现的AI智能应用
基于大数据实现的各类数据管理和推荐系统