计算机毕业设计 基于SpringBoot的大学生创新创业项目管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌
🍅文末获取源码联系🍅
👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟
————————————————
计算机毕业设计《1000套》✌

目录

1、项目介绍及开发技术

1.1 项目介绍

1.2 开发技术

2、系统功能设计结构图

3、功能截图

4、数据库表结构设计

5、关键代码

5.1 项目申报Controller模块 

5.2 项目申报Service模块 

5.3 项目申报ServiceImpl模块

5.4 项目申报Dao模块

6、论文目录结构

7、源码获取


1、项目介绍及开发技术

1.1 项目介绍

传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装大学生创新创业项目管理系统软件来发挥其高效地信息处理的作用,可以规范信息管理流程,让管理工作可以系统化和程序化,同时,大学生创新创业项目管理系统的有效运用可以帮助管理人员准确快速地处理信息。

大学生创新创业项目管理系统在对开发工具的选择上也很慎重,为了便于开发实现,选择的开发工具为Eclipse,选择的数据库工具为Mysql。以此搭建开发环境实现大学生创新创业项目管理系统的功能。其中管理员管理用户,新闻公告。大学生创新创业项目管理系统是一款运用软件开发技术设计实现的应用系统,在信息处理上可以达到快速的目的,不管是针对数据添加,数据维护和统计,以及数据查询等处理要求,大学生创新创业项目管理系统都可以轻松应对。

1.2 开发技术

Java开发语言、SpringBoot、MyBatisPlus、MySQL数据库、Maven、IDEA开发工具、JDK1.8+、Vue、HTML、CSS、JS。

2、系统功能设计结构图

3、功能截图

登录

首页 

个人中心

 指导老师管理

学生管理

项目申报管理

选题审核管理

项目进度管理

 基础数据管理

公告信息管理

4、数据库表结构设计

CREATE TABLE `config` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',`name` varchar(100) DEFAULT NULL COMMENT '配置参数名称',`value` varchar(100) DEFAULT NULL COMMENT '配置参数值',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='配置文件';/*Data for the table `config` *//*Table structure for table `dictionary` */DROP TABLE IF EXISTS `dictionary`;CREATE TABLE `dictionary` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',`dic_code` varchar(200) DEFAULT NULL COMMENT '字段',`dic_name` varchar(200) DEFAULT NULL COMMENT '字段名',`code_index` int(11) DEFAULT NULL COMMENT '编码',`index_name` varchar(200) DEFAULT NULL COMMENT '编码名字  Search111 ',`super_id` int(11) DEFAULT NULL COMMENT '父字段id',`beizhu` varchar(200) DEFAULT NULL COMMENT '备注',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8 COMMENT='字典';/*Data for the table `dictionary` */insert  into `dictionary`(`id`,`dic_code`,`dic_name`,`code_index`,`index_name`,`super_id`,`beizhu`,`create_time`) values (1,'news_types','公告类型',1,'公告类型1',NULL,NULL,'2023-04-21 16:19:33'),(2,'news_types','公告类型',2,'公告类型2',NULL,NULL,'2023-04-21 16:19:33'),(3,'news_types','公告类型',3,'公告类型3',NULL,NULL,'2023-04-21 16:19:33'),(4,'xiangmu_types','项目类型',1,'项目类型1',NULL,NULL,'2023-04-21 16:19:33'),(5,'xiangmu_types','项目类型',2,'项目类型2',NULL,NULL,'2023-04-21 16:19:33'),(6,'xiangmu_types','项目类型',3,'项目类型3',NULL,NULL,'2023-04-21 16:19:33'),(7,'xiangmu_yesno_types','申报状态',1,'申报中',NULL,NULL,'2023-04-21 16:19:33'),(8,'xiangmu_yesno_types','申报状态',2,'同意',NULL,NULL,'2023-04-21 16:19:33'),(9,'xiangmu_yesno_types','申报状态',3,'拒绝',NULL,NULL,'2023-04-21 16:19:33'),(10,'xiangmu_yesno_types','申报状态',4,'已选',NULL,NULL,'2023-04-21 16:19:33'),(11,'xuantishenhe_yesno_types','选题申请',1,'申报中',NULL,NULL,'2023-04-21 16:19:33'),(12,'xuantishenhe_yesno_types','选题申请',2,'同意',NULL,NULL,'2023-04-21 16:19:34'),(13,'xuantishenhe_yesno_types','选题申请',3,'拒绝',NULL,NULL,'2023-04-21 16:19:34'),(14,'xuantishenhe_yesno_types','选题申请',4,'中期审核',NULL,NULL,'2023-04-21 16:19:34'),(15,'xuantishenhe_yesno_types','选题申请',5,'结题审核',NULL,NULL,'2023-04-21 16:19:34'),(16,'xiangmujindu_yesno_types','进度审核',1,'待审核',NULL,NULL,'2023-04-21 16:19:34'),(17,'xiangmujindu_yesno_types','选题申请',2,'通过',NULL,NULL,'2023-04-21 16:19:34'),(18,'xiangmujindu_yesno_types','选题申请',3,'拒绝',NULL,NULL,'2023-04-21 16:19:34'),(19,'sex_types','性别',1,'男',NULL,NULL,'2023-04-21 16:19:34'),(20,'sex_types','性别',2,'女',NULL,NULL,'2023-04-21 16:19:34'),(21,'xuantishenhe_yesno_types','选题申请',6,'已完成',NULL,NULL,'2023-04-21 16:19:34');/*Table structure for table `jiaoshi` */DROP TABLE IF EXISTS `jiaoshi`;CREATE TABLE `jiaoshi` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`username` varchar(200) DEFAULT NULL COMMENT '账户',`password` varchar(200) DEFAULT NULL COMMENT '密码',`jiaoshi_name` varchar(200) DEFAULT NULL COMMENT '教师名称 Search111 ',`jiaoshi_phone` varchar(200) DEFAULT NULL COMMENT '教师手机号',`jiaoshi_photo` varchar(200) DEFAULT NULL COMMENT '教师头像',`sex_types` int(11) DEFAULT NULL COMMENT '性别 Search111',`jiaoshi_email` varchar(200) DEFAULT NULL COMMENT '教师邮箱',`jiaoshi_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',`jiaoshi_time` date DEFAULT NULL COMMENT '入职时间',`insert_time` timestamp NULL DEFAULT NULL COMMENT '添加时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='指导教师';/*Data for the table `jiaoshi` */insert  into `jiaoshi`(`id`,`username`,`password`,`jiaoshi_name`,`jiaoshi_phone`,`jiaoshi_photo`,`sex_types`,`jiaoshi_email`,`jiaoshi_delete`,`jiaoshi_time`,`insert_time`,`create_time`) values (1,'a1','123456','教师名称1','17703786901','upload/jiaoshi1.jpg',1,'1@qq.com',1,'2023-04-21','2023-04-21 16:19:43','2023-04-21 16:19:43'),(2,'a2','123456','教师名称2','17703786902','upload/jiaoshi2.jpg',2,'2@qq.com',1,'2023-04-21','2023-04-21 16:19:43','2023-04-21 16:19:43'),(3,'a3','123456','教师名称3','17703786903','upload/jiaoshi3.jpg',1,'3@qq.com',1,'2023-04-21','2023-04-21 16:19:43','2023-04-21 16:19:43');/*Table structure for table `news` */DROP TABLE IF EXISTS `news`;CREATE TABLE `news` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`news_name` varchar(200) DEFAULT NULL COMMENT '公告标题  Search111 ',`news_types` int(11) DEFAULT NULL COMMENT '公告类型  Search111 ',`news_photo` varchar(200) DEFAULT NULL COMMENT '公告图片',`insert_time` timestamp NULL DEFAULT NULL COMMENT '添加时间',`news_content` longtext COMMENT '公告详情',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='公告信息';/*Data for the table `news` */insert  into `news`(`id`,`news_name`,`news_types`,`news_photo`,`insert_time`,`news_content`,`create_time`) values (1,'公告标题1',3,'upload/news1.jpg','2023-04-21 16:19:43','公告详情1','2023-04-21 16:19:43'),(2,'公告标题2',2,'upload/news2.jpg','2023-04-21 16:19:43','公告详情2','2023-04-21 16:19:43'),(3,'公告标题3',2,'upload/news3.jpg','2023-04-21 16:19:43','公告详情3','2023-04-21 16:19:43'),(4,'公告标题4',2,'upload/news4.jpg','2023-04-21 16:19:43','公告详情4','2023-04-21 16:19:43'),(5,'公告标题5',2,'upload/news5.jpg','2023-04-21 16:19:43','公告详情5','2023-04-21 16:19:43'),(6,'公告标题6',3,'upload/news6.jpg','2023-04-21 16:19:43','公告详情6','2023-04-21 16:19:43'),(7,'公告标题7',3,'upload/news7.jpg','2023-04-21 16:19:43','公告详情7','2023-04-21 16:19:43'),(8,'公告标题8',1,'upload/news8.jpg','2023-04-21 16:19:43','公告详情8','2023-04-21 16:19:43'),(9,'公告标题9',3,'upload/news9.jpg','2023-04-21 16:19:43','公告详情9','2023-04-21 16:19:43'),(10,'公告标题10',2,'upload/news10.jpg','2023-04-21 16:19:43','公告详情10','2023-04-21 16:19:43'),(11,'公告标题11',2,'upload/news11.jpg','2023-04-21 16:19:43','公告详情11','2023-04-21 16:19:43'),(12,'公告标题12',1,'upload/news12.jpg','2023-04-21 16:19:43','公告详情12','2023-04-21 16:19:43'),(13,'公告标题13',2,'upload/news13.jpg','2023-04-21 16:19:43','公告详情13','2023-04-21 16:19:43'),(14,'公告标题14',2,'upload/news14.jpg','2023-04-21 16:19:43','公告详情14','2023-04-21 16:19:43');/*Table structure for table `token` */DROP TABLE IF EXISTS `token`;CREATE TABLE `token` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',`userid` bigint(20) NOT NULL COMMENT '管理id',`username` varchar(100) NOT NULL COMMENT '管理名',`tablename` varchar(100) DEFAULT NULL COMMENT '表名',`role` varchar(100) DEFAULT NULL COMMENT '角色',`token` varchar(200) NOT NULL COMMENT '密码',`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',`expiratedtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '过期时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='token表';/*Data for the table `token` */insert  into `token`(`id`,`userid`,`username`,`tablename`,`role`,`token`,`addtime`,`expiratedtime`) values (1,1,'admin','users','管理员','5hacaa6ggue9pr9lnaw6ke0oq2k5h5mo','2023-04-21 16:28:21','2023-04-21 18:43:35'),(2,1,'a1','yonghu','学生','2m3md9td5hpsae5hfp9zchka0tne7okm','2023-04-21 16:28:45','2023-04-21 18:41:49'),(3,1,'a1','jiaoshi','指导教师','4kgx30umq8sv06ipub32ois2l21bkntg','2023-04-21 16:32:29','2023-04-21 18:41:36'),(4,2,'a2','jiaoshi','指导教师','x59v6pvg73npu139f4m66ncb5k3b7r2y','2023-04-21 16:32:36','2023-04-21 18:40:46');/*Table structure for table `users` */DROP TABLE IF EXISTS `users`;CREATE TABLE `users` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',`username` varchar(100) NOT NULL COMMENT '医院名',`password` varchar(100) NOT NULL COMMENT '密码',`role` varchar(100) DEFAULT '管理员' COMMENT '角色',`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='管理员';/*Data for the table `users` */insert  into `users`(`id`,`username`,`password`,`role`,`addtime`) values (1,'admin','admin','管理员','2023-04-21 16:19:33');/*Table structure for table `xiangmu` */DROP TABLE IF EXISTS `xiangmu`;CREATE TABLE `xiangmu` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',`xiangmu_uuid_number` varchar(200) DEFAULT NULL COMMENT '项目编号',`xiangmu_name` varchar(200) DEFAULT NULL COMMENT '项目名称  Search111 ',`xiangmu_types` int(11) DEFAULT NULL COMMENT '项目类型 Search111',`xiangmu_jingfei` decimal(10,2) DEFAULT NULL COMMENT '项目经费',`xiangmu_file` varchar(200) DEFAULT NULL COMMENT '项目文件',`jiaoshi_id` int(11) DEFAULT NULL COMMENT '教师',`xiangmu_chuangxin` varchar(200) DEFAULT NULL COMMENT '项目创新点',`xiangmu_text` longtext COMMENT '项目实施方案',`xiangmu_content` longtext COMMENT '项目详情',`xiangmu_yesno_types` int(11) DEFAULT NULL COMMENT '申报状态 Search111',`xiangmu_yesno_text` longtext COMMENT '申报结果',`xiangmu_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',`insert_time` timestamp NULL DEFAULT NULL COMMENT '录入时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COMMENT='项目申报';/*Data for the table `xiangmu` */insert  into `xiangmu`(`id`,`xiangmu_uuid_number`,`xiangmu_name`,`xiangmu_types`,`xiangmu_jingfei`,`xiangmu_file`,`jiaoshi_id`,`xiangmu_chuangxin`,`xiangmu_text`,`xiangmu_content`,`xiangmu_yesno_types`,`xiangmu_yesno_text`,`xiangmu_delete`,`insert_time`,`create_time`) values (1,'1682065183974','项目名称1',2,'818.65','upload/file.rar',1,'项目创新点1','项目实施方案1','项目详情1',1,NULL,1,'2023-04-21 16:19:43','2023-04-21 16:19:43'),(2,'1682065184045','项目名称2',2,'912.44','upload/file.rar',3,'项目创新点2','项目实施方案2','项目详情2',1,NULL,1,'2023-04-21 16:19:43','2023-04-21 16:19:43'),(3,'1682065184033','项目名称3',2,'36.45','upload/file.rar',2,'项目创新点3','项目实施方案3','项目详情3',1,NULL,1,'2023-04-21 16:19:43','2023-04-21 16:19:43'),(4,'1682065183996','项目名称4',3,'191.41','upload/file.rar',2,'项目创新点4','项目实施方案4','项目详情4',1,NULL,1,'2023-04-21 16:19:43','2023-04-21 16:19:43'),(5,'1682065184058','项目名称5',3,'667.06','upload/file.rar',1,'项目创新点5','项目实施方案5','项目详情5',1,NULL,1,'2023-04-21 16:19:43','2023-04-21 16:19:43'),(6,'1682065184010','项目名称6',3,'888.60','upload/file.rar',1,'项目创新点6','项目实施方案6','项目详情6',1,NULL,1,'2023-04-21 16:19:43','2023-04-21 16:19:43'),(7,'1682065184028','项目名称7',3,'985.18','upload/file.rar',3,'项目创新点7','项目实施方案7','项目详情7',1,NULL,1,'2023-04-21 16:19:43','2023-04-21 16:19:43'),(8,'1682065183982','项目名称8',2,'933.43','upload/file.rar',2,'项目创新点8','项目实施方案8','项目详情8',1,NULL,1,'2023-04-21 16:19:43','2023-04-21 16:19:43'),(9,'1682065184034','项目名称9',2,'611.79','upload/file.rar',2,'项目创新点9','项目实施方案9','项目详情9',1,NULL,1,'2023-04-21 16:19:43','2023-04-21 16:19:43'),(10,'1682065184062','项目名称10',2,'722.89','upload/file.rar',1,'项目创新点10','项目实施方案10','项目详情10',1,NULL,1,'2023-04-21 16:19:43','2023-04-21 16:19:43'),(11,'1682065183967','项目名称11',1,'447.25','upload/file.rar',1,'项目创新点11','项目实施方案11','项目详情11',4,'123',1,'2023-04-21 16:19:43','2023-04-21 16:19:43'),(12,'1682065183990','项目名称12',2,'106.07','upload/file.rar',2,'项目创新点12','项目实施方案12','项目详情12',1,NULL,1,'2023-04-21 16:19:43','2023-04-21 16:19:43'),(13,'1682065184019','项目名称13',1,'584.62','upload/file.rar',2,'项目创新点13','项目实施方案13','项目详情13',1,NULL,1,'2023-04-21 16:19:43','2023-04-21 16:19:43'),(14,'1682065183986','项目名称14',1,'931.72','upload/file.rar',2,'项目创新点14','项目实施方案14','项目详情14',2,'123',1,'2023-04-21 16:19:43','2023-04-21 16:19:43');/*Table structure for table `xiangmujindu` */DROP TABLE IF EXISTS `xiangmujindu`;CREATE TABLE `xiangmujindu` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',`xuantishenhe_id` int(11) DEFAULT NULL COMMENT '选题审核',`xiangmujindu_file` varchar(200) DEFAULT NULL COMMENT '项目文件',`xiangmujindu_content` longtext COMMENT '项目详情',`xiangmujindu_yesno_types` int(11) DEFAULT NULL COMMENT '进度审核 Search111',`xiangmujindu_yesno_text` longtext COMMENT '审核结果 ',`xiangmujindu_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',`insert_time` timestamp NULL DEFAULT NULL COMMENT '录入时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8 COMMENT='项目进度';/*Data for the table `xiangmujindu` */insert  into `xiangmujindu`(`id`,`xuantishenhe_id`,`xiangmujindu_file`,`xiangmujindu_content`,`xiangmujindu_yesno_types`,`xiangmujindu_yesno_text`,`xiangmujindu_delete`,`insert_time`,`create_time`) values (21,17,'/upload/1682070020014.doc','<p>123123123</p>',2,'123',1,'2023-04-21 17:40:22','2023-04-21 17:40:22'),(22,17,'/upload/1682070060471.rar','<p>123</p>',2,'123123',1,'2023-04-21 17:41:02','2023-04-21 17:41:02'),(23,17,'/upload/1682070090231.rar','<p>123123</p>',2,'123123123',1,'2023-04-21 17:41:32','2023-04-21 17:41:32');/*Table structure for table `xuantishenhe` */DROP TABLE IF EXISTS `xuantishenhe`;CREATE TABLE `xuantishenhe` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',`xiangmu_id` int(11) DEFAULT NULL COMMENT '项目',`yonghu_id` int(11) DEFAULT NULL COMMENT '学生',`xuantishenhe_yesno_types` int(11) DEFAULT NULL COMMENT '选题申请 Search111',`xuantishenhe_yesno_text` longtext COMMENT '申请结果',`xuantishenhe_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',`insert_time` timestamp NULL DEFAULT NULL COMMENT '录入时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8 COMMENT='选题审核';/*Data for the table `xuantishenhe` */insert  into `xuantishenhe`(`id`,`xiangmu_id`,`yonghu_id`,`xuantishenhe_yesno_types`,`xuantishenhe_yesno_text`,`xuantishenhe_delete`,`insert_time`,`create_time`) values (17,11,1,6,'123',1,'2023-04-21 17:39:40','2023-04-21 17:39:40');/*Table structure for table `yonghu` */DROP TABLE IF EXISTS `yonghu`;CREATE TABLE `yonghu` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`yonghu_uuid_number` varchar(200) DEFAULT NULL COMMENT '学号',`username` varchar(200) DEFAULT NULL COMMENT '账户',`password` varchar(200) DEFAULT NULL COMMENT '密码',`yonghu_name` varchar(200) DEFAULT NULL COMMENT '学生名称 Search111 ',`yonghu_phone` varchar(200) DEFAULT NULL COMMENT '学生手机号',`yonghu_photo` varchar(200) DEFAULT NULL COMMENT '学生头像',`sex_types` int(11) DEFAULT NULL COMMENT '性别 Search111',`yonghu_email` varchar(200) DEFAULT NULL COMMENT '学生邮箱',`yonghu_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',`yonghu_time` date DEFAULT NULL COMMENT '入职时间',`insert_time` timestamp NULL DEFAULT NULL COMMENT '添加时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='学生';/*Data for the table `yonghu` */insert  into `yonghu`(`id`,`yonghu_uuid_number`,`username`,`password`,`yonghu_name`,`yonghu_phone`,`yonghu_photo`,`sex_types`,`yonghu_email`,`yonghu_delete`,`yonghu_time`,`insert_time`,`create_time`) values (1,'1682065184077','a1','123456','学生名称1','17703786901','upload/yonghu1.jpg',2,'1@qq.com',1,'2023-04-21','2023-04-21 16:19:43','2023-04-21 16:19:43'),(2,'1682065184055','a2','123456','学生名称2','17703786902','upload/yonghu2.jpg',1,'2@qq.com',1,'2023-04-21','2023-04-21 16:19:43','2023-04-21 16:19:43'),(3,'1682065184046','a3','123456','学生名称3','17703786903','upload/yonghu3.jpg',2,'3@qq.com',1,'2023-04-21','2023-04-21 16:19:43','2023-04-21 16:19:43');/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

5、关键代码

5.1 项目申报Controller模块 

/*** 项目申报* 后端接口* @author 学长编程* @email* WeChat  jsjbysj88
*/
@RestController
@Controller
@RequestMapping("/xiangmu")
public class XiangmuController {private static final Logger logger = LoggerFactory.getLogger(XiangmuController.class);private static final String TABLE_NAME = "xiangmu";@Autowiredprivate XiangmuService xiangmuService;@Autowiredprivate TokenService tokenService;@Autowiredprivate DictionaryService dictionaryService;//字典@Autowiredprivate JiaoshiService jiaoshiService;//指导教师@Autowiredprivate NewsService newsService;//公告信息@Autowiredprivate XiangmujinduService xiangmujinduService;//项目进度@Autowiredprivate XuantishenheService xuantishenheService;//选题审核@Autowiredprivate YonghuService yonghuService;//学生@Autowiredprivate 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));String role = String.valueOf(request.getSession().getAttribute("role"));if(false)return R.error(511,"永不会进入");else if("学生".equals(role))params.put("yonghuId",request.getSession().getAttribute("userId"));else if("指导教师".equals(role))params.put("jiaoshiId",request.getSession().getAttribute("userId"));params.put("xiangmuDeleteStart",1);params.put("xiangmuDeleteEnd",1);CommonUtil.checkMap(params);PageUtils page = xiangmuService.queryPage(params);//字典表数据转换List<XiangmuView> list =(List<XiangmuView>)page.getList();for(XiangmuView 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);XiangmuEntity xiangmu = xiangmuService.selectById(id);if(xiangmu !=null){//entity转viewXiangmuView view = new XiangmuView();BeanUtils.copyProperties( xiangmu , view );//把实体数据重构到view中//级联表 指导教师//级联表JiaoshiEntity jiaoshi = jiaoshiService.selectById(xiangmu.getJiaoshiId());if(jiaoshi != null){BeanUtils.copyProperties( jiaoshi , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "jiaoshiId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表view.setJiaoshiId(jiaoshi.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody XiangmuEntity xiangmu, HttpServletRequest request){logger.debug("save方法:,,Controller:{},,xiangmu:{}",this.getClass().getName(),xiangmu.toString());String role = String.valueOf(request.getSession().getAttribute("role"));if(false)return R.error(511,"永远不会进入");else if("指导教师".equals(role))xiangmu.setJiaoshiId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));Wrapper<XiangmuEntity> queryWrapper = new EntityWrapper<XiangmuEntity>().eq("xiangmu_name", xiangmu.getXiangmuName()).eq("xiangmu_types", xiangmu.getXiangmuTypes()).eq("jiaoshi_id", xiangmu.getJiaoshiId()).eq("xiangmu_chuangxin", xiangmu.getXiangmuChuangxin()).in("xiangmu_yesno_types", new Integer[]{1,2}).eq("xiangmu_delete", 1);logger.info("sql语句:"+queryWrapper.getSqlSegment());XiangmuEntity xiangmuEntity = xiangmuService.selectOne(queryWrapper);if(xiangmuEntity==null){xiangmu.setXiangmuYesnoTypes(1);xiangmu.setXiangmuDelete(1);xiangmu.setInsertTime(new Date());xiangmu.setCreateTime(new Date());xiangmuService.insert(xiangmu);return R.ok();}else {if(xiangmuEntity.getXiangmuYesnoTypes()==1)return R.error(511,"有相同的待审核的数据");else if(xiangmuEntity.getXiangmuYesnoTypes()==2)return R.error(511,"有相同的审核通过的数据");elsereturn R.error(511,"表中有相同数据");}}/*** 后端修改*/@RequestMapping("/update")public R update(@RequestBody XiangmuEntity xiangmu, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {logger.debug("update方法:,,Controller:{},,xiangmu:{}",this.getClass().getName(),xiangmu.toString());XiangmuEntity oldXiangmuEntity = xiangmuService.selectById(xiangmu.getId());//查询原先数据String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
//        else if("指导教师".equals(role))
//            xiangmu.setJiaoshiId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));if("".equals(xiangmu.getXiangmuFile()) || "null".equals(xiangmu.getXiangmuFile())){xiangmu.setXiangmuFile(null);}xiangmuService.updateById(xiangmu);//根据id更新return R.ok();}/*** 审核*/@RequestMapping("/shenhe")public R shenhe(@RequestBody XiangmuEntity xiangmuEntity, HttpServletRequest request){logger.debug("shenhe方法:,,Controller:{},,xiangmuEntity:{}",this.getClass().getName(),xiangmuEntity.toString());XiangmuEntity oldXiangmu = xiangmuService.selectById(xiangmuEntity.getId());//查询原先数据//        if(xiangmuEntity.getXiangmuYesnoTypes() == 2){//通过
//            xiangmuEntity.setXiangmuTypes();
//        }else if(xiangmuEntity.getXiangmuYesnoTypes() == 3){//拒绝
//            xiangmuEntity.setXiangmuTypes();
//        }xiangmuService.updateById(xiangmuEntity);//审核return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Integer[] ids, HttpServletRequest request){logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());List<XiangmuEntity> oldXiangmuList =xiangmuService.selectBatchIds(Arrays.asList(ids));//要删除的数据ArrayList<XiangmuEntity> list = new ArrayList<>();for(Integer id:ids){XiangmuEntity xiangmuEntity = new XiangmuEntity();xiangmuEntity.setId(id);xiangmuEntity.setXiangmuDelete(2);list.add(xiangmuEntity);}if(list != null && list.size() >0){xiangmuService.updateBatchById(list);}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");//.eq("time", new SimpleDateFormat("yyyy-MM-dd").format(new Date()))try {List<XiangmuEntity> xiangmuList = 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){//循环XiangmuEntity xiangmuEntity = new XiangmuEntity();
//                            xiangmuEntity.setXiangmuUuidNumber(data.get(0));                    //项目编号 要改的
//                            xiangmuEntity.setXiangmuName(data.get(0));                    //项目名称 要改的
//                            xiangmuEntity.setXiangmuTypes(Integer.valueOf(data.get(0)));   //项目类型 要改的
//                            xiangmuEntity.setXiangmuJingfei(data.get(0));                    //项目经费 要改的
//                            xiangmuEntity.setXiangmuFile(data.get(0));                    //项目文件 要改的
//                            xiangmuEntity.setJiaoshiId(Integer.valueOf(data.get(0)));   //教师 要改的
//                            xiangmuEntity.setXiangmuChuangxin(data.get(0));                    //项目创新点 要改的
//                            xiangmuEntity.setXiangmuText(data.get(0));                    //项目实施方案 要改的
//                            xiangmuEntity.setXiangmuContent("");//详情和图片
//                            xiangmuEntity.setXiangmuYesnoTypes(Integer.valueOf(data.get(0)));   //申报状态 要改的
//                            xiangmuEntity.setXiangmuYesnoText(data.get(0));                    //申报结果 要改的
//                            xiangmuEntity.setXiangmuDelete(1);//逻辑删除字段
//                            xiangmuEntity.setInsertTime(date);//时间
//                            xiangmuEntity.setCreateTime(date);//时间xiangmuList.add(xiangmuEntity);//把要查询是否重复的字段放入map中//项目编号if(seachFields.containsKey("xiangmuUuidNumber")){List<String> xiangmuUuidNumber = seachFields.get("xiangmuUuidNumber");xiangmuUuidNumber.add(data.get(0));//要改的}else{List<String> xiangmuUuidNumber = new ArrayList<>();xiangmuUuidNumber.add(data.get(0));//要改的seachFields.put("xiangmuUuidNumber",xiangmuUuidNumber);}}//查询是否重复//项目编号List<XiangmuEntity> xiangmuEntities_xiangmuUuidNumber = xiangmuService.selectList(new EntityWrapper<XiangmuEntity>().in("xiangmu_uuid_number", seachFields.get("xiangmuUuidNumber")).eq("xiangmu_delete", 1));if(xiangmuEntities_xiangmuUuidNumber.size() >0 ){ArrayList<String> repeatFields = new ArrayList<>();for(XiangmuEntity s:xiangmuEntities_xiangmuUuidNumber){repeatFields.add(s.getXiangmuUuidNumber());}return R.error(511,"数据库的该表中的 [项目编号] 字段已经存在 存在数据为:"+repeatFields.toString());}xiangmuService.insertBatch(xiangmuList);return R.ok();}}}}catch (Exception e){e.printStackTrace();return R.error(511,"批量插入数据异常,请联系管理员");}}
}

5.2 项目申报Service模块 

package com.service;import com.baomidou.mybatisplus.service.IService;
import com.utils.PageUtils;
import com.entity.XiangmuEntity;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.lang.Nullable;
import java.util.List;/*** 项目申报 服务类*/
public interface XiangmuService extends IService<XiangmuEntity> {/*** @param params 查询参数* @return 带分页的查询出来的数据*/PageUtils queryPage(Map<String, Object> params);}

5.3 项目申报ServiceImpl模块

package com.service.impl;import com.utils.StringUtil;
import com.service.DictionaryService;
import com.utils.ClazzDiff;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.util.*;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;
import com.utils.PageUtils;
import com.utils.Query;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import com.dao.XiangmuDao;
import com.entity.XiangmuEntity;
import com.service.XiangmuService;
import com.entity.view.XiangmuView;/*** 项目申报 服务实现类*/
@Service("xiangmuService")
@Transactional
public class XiangmuServiceImpl extends ServiceImpl<XiangmuDao, XiangmuEntity> implements XiangmuService {@Overridepublic PageUtils queryPage(Map<String,Object> params) {Page<XiangmuView> page =new Query<XiangmuView>(params).getPage();page.setRecords(baseMapper.selectListView(page,params));return new PageUtils(page);}
}

5.4 项目申报Dao模块

package com.dao;import com.entity.XiangmuEntity;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;import org.apache.ibatis.annotations.Param;
import com.entity.view.XiangmuView;/*** 项目申报 Dao 接口** @author */
public interface XiangmuDao extends BaseMapper<XiangmuEntity> {List<XiangmuView> selectListView(Pagination page,@Param("params")Map<String,Object> params);}

6、论文目录结构

7、源码获取

感谢大家的阅读,如有不懂的问题可以评论区交流或私聊!

喜欢文章可以点赞、收藏、关注、评论

获取源码请私信

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/231240.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关联规则 FP-Growth算法

FP-Growth算法 FP-growth 算法思想 FP-growth算法是韩家炜老师在2000年提出的关联分析算法&#xff0c;它采取如下分治策略: 将提供频繁项集的数据库压缩到一棵频繁模式树 (FP-Tree)但仍保留项集关联信息。FP-growth算法是对Apriori方法的改进。生成一个频繁模式而不需要生成…

mysql 索引场景 大于>为什么失效

可以先看这个&#xff1a;Mysql查询条件为大于时&#xff0c;不走索引失效场景-CSDN博客 改为> &#xff0c;可双看到key_len减少了&#xff0c;从90变到了86&#xff0c;也就是说联合索引(a b c) &#xff0c;只有(a b) 起了效果,c 没有。 可以不查c看看结果&#xff0c;还…

深度学习项目实战:垃圾分类系统

简介&#xff1a; 今天开启深度学习另一板块。就是计算机视觉方向&#xff0c;这里主要讨论图像分类任务–垃圾分类系统。其实这个项目早在19年的时候&#xff0c;我就写好了一个版本了。之前使用的是python搭建深度学习网络&#xff0c;然后前后端交互的采用的是java spring …

LibreOffice Online安装

LibreOffice Online安装 环境&#xff1a;Liunx 通过docker拉取 LibreOffice Online 主干镜像&#xff1a; docker pull libreoffice/online:master启动容器&#xff0c;根据实际情况替换&#xff1a; docker run -dit -p 9980:9980 --name libreoffice-online -e "us…

vivado 创建实施约束

创建实施约束 在您有了一个合成的网表之后&#xff0c;您可以将它与XDC文件一起加载到内存中&#xff0c;或者Tcl脚本已启用以进行实现。当加载XDC以便验证和更正任何不能应用的约束。在某些情况下&#xff0c;合成网表中的对象名称与精心设计。如果是这种情况&#xff0c;则必…

每日一题:LeetCode-LCR 016. 无重复字符的最长子串

每日一题系列&#xff08;day 15&#xff09; 前言&#xff1a; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f50e…

《PySpark大数据分析实战》-14.云服务模式Databricks介绍基本概念

&#x1f4cb; 博主简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是wux_labs。&#x1f61c; 热衷于各种主流技术&#xff0c;热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员&#xff08;PCTA&#xff09;、TiDB数据库专家&#xff08;PCTP…

docker-compose介绍和用法

docker-compose介绍和用法详解 1、docker-compose介绍2、docker-compose build3、docker-compose down4、docker-compose up -d 1、docker-compose介绍 Docker Compose是一个用于快速配置多个Docker容器的工具。它是一个定义和运行多容器的Docker应用工具&#xff0c;通过YAML…

redis之五种基本数据类型

redis存储任何类型的数据都是以key-value形式保存&#xff0c;并且所有的key都是字符串&#xff0c;所以讨论基础数据结构都是基于value的数据类型 常见的5种数据类型是&#xff1a;String、List、Set、Zset、Hash 一) 字符串(String) String是redis最基本的类型&#xff0c;v…

【线性代数】期末速通!

1. 行列式的性质 1.1 求一个行列式的值 特殊地&#xff0c;对角线左下全为0&#xff0c;结果为对角线乘积。行 r 列 c 1.2 性质 某行&#xff08;列&#xff09;加上或减去另一行&#xff08;列&#xff09;的几倍&#xff0c;行列式不变某行&#xff08;列&#xff09;乘 …

C++学习笔记(十二)------is_a关系(继承关系)

你好&#xff0c;这里是争做图书馆扫地僧的小白。 个人主页&#xff1a;争做图书馆扫地僧的小白_-CSDN博客 目标&#xff1a;希望通过学习技术&#xff0c;期待着改变世界。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 文章目录 前言 一、继承关系…

Pipelined-ADC设计一:序言

现在是2023年12月18日&#xff0c;准备开新帖&#xff0c;设计一个 流水线型 模数转换器&#xff08; Pipelined-ADC &#xff09;。记录帖&#xff0c;后续会放在咸鱼。同步记录&#xff0c;谨防盗用。 初定指标&#xff1a;12位50Mhz&#xff0c;采用2.5bit每级结构&#xff…

使用DTS将自建MySQL迁移至PolarDB MySQL引擎,探索DTS全量数据校验

1. 领取免费的ECS和PolarDB资源 一旦您注册了阿里云账号并填写了您的账号和支付信息&#xff0c;您就可以申请免费试用我们的产品&#xff08;如ECS、PolarDB、RDS等服务&#xff09;。 1.1. 申请 ECS 免费试用 1. 在 阿里云免费试用中心&#xff0c;找到ECS&#xff0c;单击…

可视化 | 基于CBDB的唐代历史人物分析

文章目录 &#x1f4da;人口统计&#x1f407;唐朝历年人数统计&#x1f407;唐朝人口金字塔&#x1f407;唐朝历年出生死亡人数统计&#x1f407;唐朝人口分布&#x1f407;享年数据分布 &#x1f4da;唐朝人口迁徙&#x1f407;人口迁徙&#x1f407;生卒地变迁 &#x1f4da…

IDEA代码补全不能导入某个类了

问题 今天写单元测试时&#xff0c;突然发现idea自动补全代码时不能自动导入类了&#xff0c; 比如在编辑器中输入Test&#xff0c;正常情况下通过快捷键atl/智能补全提示后可以自动生成导入import org.junit.Test &#xff0c;但是现在不行了。 解决办法 由于在导入Test时不小…

【JavaWeb学习笔记】11 - WEB工程路径专题

一、工程路径问题 1.引入该问题 通过这几个去访问很麻烦 二、工程路径解决方案 1.相对路径 1.说明:使用相对路径来解决&#xff0c;一 个非常重要的规则:页面所有的相对路径&#xff0c;在默认情况下&#xff0c;都会参考当前浏览器地址栏的路径http:/ /ip:port/工程名/来进…

Go集成elasticsearch8极简demo,光速入门

Go集成elasticsearch8极简demo,光速入门 配置go环境创件go mod工程代码实现配置go环境 编辑器添加goproxy GO111MODULE=on;GOPROXY=https://mirrors.wps.cn/go/,https://goproxy.cn,direct;GOSUMDB=off创件go mod工程 mkdir demo cd demo go mod init demo代码实现 在demo…

JMESPath语言

JMESPath&#xff08;JSON Matching Expression Path&#xff09; 一种查询语言。 主要用于从JSON文档中检索和过滤数据。 通过写表达式提取和处理JSON数据&#xff0c;而无需编写复杂的代码。 功能&#xff1a;数据提取、过滤、转换、排序。 场景&#xff1a;处理API响应…

CentOS7安装Docker及添加阿里云镜像加速详细教程

Docker官方安装教程网站&#xff1a;Install Docker Engine on CentOS | Docker Docs 具体流程如下&#xff1a; 1.确定你是CentOS7及以上版本 cat /etc/redhat-release 2.yum安装gcc相关 yum -y install gcc yum -y install gcc-c 3.安装需要的软件包 3.1安装docker引擎…

MetaSploit工具的使用

在命令行输入&#xff1a;msfconsole 启动msf msfconsole 另外的方式 msfdb init msfdb run 查看数据库连接状态 db_status 扫描端口并存储 db_nmap 查看扫描到的数据信息 services MSF常用的模式和命令 搜索模块 search 模块名字 使用模块 use 编号 查看模块使用 sho…