计算机毕业设计 基于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 项目介绍

信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的项目申报系统实现了操作日志管理、字典管理、公告管理、留言板管理、资讯信息管理、项目管理、用户管理、专家管理、管理员管理等功能。系统用到了关系型数据库中王者MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让项目申报系统更能从理念走到现实,确确实实的让人们提升信息处理效率。

1.2 开发技术

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

2、系统功能设计结构图

计算机毕业设计 基于SpringBoot的项目申报系统的设计与实现 Java实战项目 附源码+文档+视频讲解_第1张图片

3、功能截图

项目管理:对项目的增加、修改、删除、查看等功能进行操作。

计算机毕业设计 基于SpringBoot的项目申报系统的设计与实现 Java实战项目 附源码+文档+视频讲解_第2张图片

公告信息管理: 管理员对公告信息进行新增公告,修改公告,删除公告等功能的操作。

计算机毕业设计 基于SpringBoot的项目申报系统的设计与实现 Java实战项目 附源码+文档+视频讲解_第3张图片

公告类型管理: 公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。

计算机毕业设计 基于SpringBoot的项目申报系统的设计与实现 Java实战项目 附源码+文档+视频讲解_第4张图片

资讯信息管理 :新增资讯信息,修改资讯信息,删除资讯信息。

计算机毕业设计 基于SpringBoot的项目申报系统的设计与实现 Java实战项目 附源码+文档+视频讲解_第5张图片

资讯信息类型管理: 新增资讯信息类型,修改资讯信息类型,删除资讯信息类型。

计算机毕业设计 基于SpringBoot的项目申报系统的设计与实现 Java实战项目 附源码+文档+视频讲解_第6张图片

4、数据库表结构设计

CREATE DATABASE /*!32312 IF NOT EXISTS*/`xiangmushenbaoxitong` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `xiangmushenbaoxitong`;

/*Table structure for table `caozuorizhi` */

DROP TABLE IF EXISTS `caozuorizhi`;

CREATE TABLE `caozuorizhi` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',
  `caozuorizhi_this_biao` varchar(200) DEFAULT NULL COMMENT '操作人所在表 Search111 ',
  `caozuorizhi_caozuobiao` varchar(200) DEFAULT NULL COMMENT '操作表 Search111 ',
  `caozuorizhi_caozuozhanghu` varchar(200) DEFAULT NULL COMMENT '操作账户 Search111 ',
  `caozuorizhi_caozuoleixing` varchar(200) DEFAULT NULL COMMENT '操作类型 Search111 ',
  `caozuorizhi_text` mediumtext COMMENT '操作内容 Search111 ',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '操作时间 Search111 ',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=259 DEFAULT CHARSET=utf8 COMMENT='操作日志';

/*Data for the table `caozuorizhi` */


/*Table structure for table `config` */

DROP TABLE IF EXISTS `config`;

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 AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='配置文件';

/*Data for the table `config` */

insert  into `config`(`id`,`name`,`value`) values (1,'轮播图1111','upload/config1.jpg'),(2,'轮播图2','upload/config2.jpg'),(3,'轮播图3','upload/config3.jpg');

/*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=20 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,'sex_types','性别类型',1,'男',NULL,NULL,'2023-03-30 17:04:06'),(2,'sex_types','性别类型',2,'女',NULL,NULL,'2023-03-30 17:04:06'),(3,'jinyong_types','账户状态',1,'启用',NULL,NULL,'2023-03-30 17:04:06'),(4,'jinyong_types','账户状态',2,'禁用',NULL,NULL,'2023-03-30 17:04:06'),(5,'xiangmu_dengji_types','项目等级',1,'市级',NULL,NULL,'2023-03-30 17:04:06'),(6,'xiangmu_dengji_types','项目等级',2,'省级',NULL,NULL,'2023-03-30 17:04:06'),(7,'xiangmu_dengji_types','项目等级',3,'国家级',NULL,NULL,'2023-03-30 17:04:06'),(8,'xiangmu_types','项目类型',1,'项目类型1',NULL,NULL,'2023-03-30 17:04:06'),(9,'xiangmu_types','项目类型',2,'项目类型2',NULL,NULL,'2023-03-30 17:04:06'),(10,'xiangmu_types','项目类型',3,'项目类型3',NULL,NULL,'2023-03-30 17:04:06'),(11,'xiangmu_types','项目类型',4,'项目类型4',NULL,NULL,'2023-03-30 17:04:06'),(12,'xiangmu_yesno_types','审核状态',1,'待审核',NULL,NULL,'2023-03-30 17:04:06'),(13,'xiangmu_yesno_types','审核状态',2,'同意',NULL,NULL,'2023-03-30 17:04:06'),(14,'xiangmu_yesno_types','审核状态',3,'拒绝',NULL,NULL,'2023-03-30 17:04:06'),(15,'news_types','资讯类型',1,'资讯类型1',NULL,NULL,'2023-03-30 17:04:06'),(16,'news_types','资讯类型',2,'资讯类型2',NULL,NULL,'2023-03-30 17:04:06'),(17,'gonggao_types','公告类型',1,'公告类型1',NULL,NULL,'2023-03-30 17:04:06'),(18,'gonggao_types','公告类型',2,'公告类型2',NULL,NULL,'2023-03-30 17:04:06'),(19,'xiangmu_types','项目类型',5,'项目类型5',NULL,'','2023-03-31 10:17:43');

/*Table structure for table `gonggao` */

DROP TABLE IF EXISTS `gonggao`;

CREATE TABLE `gonggao` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',
  `gonggao_name` varchar(200) DEFAULT NULL COMMENT '公告名称 Search111  ',
  `gonggao_photo` varchar(200) DEFAULT NULL COMMENT '公告图片 ',
  `gonggao_types` int(11) NOT NULL COMMENT '公告类型 Search111 ',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '公告发布时间 ',
  `gonggao_content` longtext COMMENT '公告详情 ',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show1 show2 nameShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='公告';

/*Data for the table `gonggao` */

insert  into `gonggao`(`id`,`gonggao_name`,`gonggao_photo`,`gonggao_types`,`insert_time`,`gonggao_content`,`create_time`) values (1,'公告名称1','upload/gonggao1.jpg',2,'2023-03-30 17:17:59','公告详情1','2023-03-30 17:17:59'),(2,'公告名称2','upload/gonggao2.jpg',2,'2023-03-30 17:17:59','公告详情2','2023-03-30 17:17:59'),(3,'公告名称3','upload/gonggao3.jpg',1,'2023-03-30 17:17:59','公告详情3','2023-03-30 17:17:59'),(4,'公告名称4','upload/gonggao4.jpg',1,'2023-03-30 17:17:59','公告详情4','2023-03-30 17:17:59'),(5,'公告名称5','upload/gonggao5.jpg',2,'2023-03-30 17:17:59','公告详情5','2023-03-30 17:17:59'),(6,'公告名称6','upload/gonggao6.jpg',1,'2023-03-30 17:17:59','公告详情6','2023-03-30 17:17:59'),(7,'公告名称7','upload/gonggao7.jpg',2,'2023-03-30 17:17:59','公告详情7','2023-03-30 17:17:59'),(8,'公告名称8','upload/gonggao8.jpg',2,'2023-03-30 17:17:59','公告详情8','2023-03-30 17:17:59'),(9,'公告名称9','upload/gonggao9.jpg',1,'2023-03-30 17:17:59','公告详情9','2023-03-30 17:17:59'),(10,'公告名称10','upload/gonggao10.jpg',1,'2023-03-30 17:17:59','公告详情10','2023-03-30 17:17:59'),(11,'公告名称11','upload/gonggao11.jpg',1,'2023-03-30 17:17:59','公告详情11','2023-03-30 17:17:59'),(12,'公告名称12','upload/gonggao12.jpg',2,'2023-03-30 17:17:59','公告详情12','2023-03-30 17:17:59'),(13,'公告名称13','upload/gonggao13.jpg',1,'2023-03-30 17:17:59','公告详情13','2023-03-30 17:17:59'),(14,'公告名称14','upload/gonggao14.jpg',2,'2023-03-30 17:17:59','公告详情14','2023-03-30 17:17:59');

/*Table structure for table `liuyan` */

DROP TABLE IF EXISTS `liuyan`;

CREATE TABLE `liuyan` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '用户',
  `liuyan_name` varchar(200) DEFAULT NULL COMMENT '留言标题  Search111 ',
  `liuyan_text` longtext COMMENT '留言内容',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '留言时间',
  `reply_text` longtext COMMENT '回复内容',
  `update_time` timestamp NULL DEFAULT NULL COMMENT '回复时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show2 nameShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COMMENT='留言板';

/*Data for the table `liuyan` */

insert  into `liuyan`(`id`,`yonghu_id`,`liuyan_name`,`liuyan_text`,`insert_time`,`reply_text`,`update_time`,`create_time`) values (1,3,'留言标题1','留言内容1','2023-03-30 17:17:59','回复信息1','2023-03-30 17:17:59','2023-03-30 17:17:59'),(2,1,'留言标题2','留言内容2','2023-03-30 17:17:59','回复信息2','2023-03-30 17:17:59','2023-03-30 17:17:59'),(3,1,'留言标题3','留言内容3','2023-03-30 17:17:59','回复信息3','2023-03-30 17:17:59','2023-03-30 17:17:59'),(4,1,'留言标题4','留言内容4','2023-03-30 17:17:59','回复信息4','2023-03-30 17:17:59','2023-03-30 17:17:59'),(5,3,'留言标题5','留言内容5','2023-03-30 17:17:59','回复信息5','2023-03-30 17:17:59','2023-03-30 17:17:59'),(6,3,'留言标题6','留言内容6','2023-03-30 17:17:59','回复信息6','2023-03-30 17:17:59','2023-03-30 17:17:59'),(7,1,'留言标题7','留言内容7','2023-03-30 17:17:59','回复信息7','2023-03-30 17:17:59','2023-03-30 17:17:59'),(8,1,'留言标题8','留言内容8','2023-03-30 17:17:59','回复信息8','2023-03-30 17:17:59','2023-03-30 17:17:59'),(9,3,'留言标题9','留言内容9','2023-03-30 17:17:59','回复信息9','2023-03-30 17:17:59','2023-03-30 17:17:59'),(10,3,'留言标题10','留言内容10','2023-03-30 17:17:59','回复信息10','2023-03-30 17:17:59','2023-03-30 17:17:59'),(11,3,'留言标题11','留言内容11','2023-03-30 17:17:59','回复信息11','2023-03-30 17:17:59','2023-03-30 17:17:59'),(12,2,'留言标题12','留言内容12','2023-03-30 17:17:59','回复信息12','2023-03-30 17:17:59','2023-03-30 17:17:59'),(13,2,'留言标题13','留言内容13','2023-03-30 17:17:59','回复信息13','2023-03-30 17:17:59','2023-03-30 17:17:59'),(14,3,'留言标题14','留言内容14','2023-03-30 17:17:59','回复信息14','2023-03-30 17:17:59','2023-03-30 17:17:59'),(15,4,'标题111','改大纲','2023-03-31 10:16:32','黑胡椒','2023-03-31 10:17:51','2023-03-31 10:16:32');

/*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_photo` varchar(200) DEFAULT NULL COMMENT '资讯图片 ',
  `news_types` int(11) NOT NULL COMMENT '资讯类型 Search111  ',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '资讯发布时间 ',
  `news_content` longtext COMMENT '资讯详情 ',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show1 show2 nameShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='资讯信息';

/*Data for the table `news` */

insert  into `news`(`id`,`news_name`,`news_photo`,`news_types`,`insert_time`,`news_content`,`create_time`) values (1,'资讯名称1','upload/news1.jpg',1,'2023-03-30 17:17:59','资讯详情1','2023-03-30 17:17:59'),(2,'资讯名称2','upload/news2.jpg',2,'2023-03-30 17:17:59','资讯详情2','2023-03-30 17:17:59'),(3,'资讯名称3','upload/news3.jpg',2,'2023-03-30 17:17:59','资讯详情3','2023-03-30 17:17:59'),(4,'资讯名称4','upload/news4.jpg',1,'2023-03-30 17:17:59','资讯详情4','2023-03-30 17:17:59'),(5,'资讯名称5','upload/news5.jpg',1,'2023-03-30 17:17:59','资讯详情5','2023-03-30 17:17:59'),(6,'资讯名称6','upload/news6.jpg',1,'2023-03-30 17:17:59','资讯详情6','2023-03-30 17:17:59'),(7,'资讯名称7','upload/news7.jpg',2,'2023-03-30 17:17:59','资讯详情7','2023-03-30 17:17:59'),(8,'资讯名称8','upload/news8.jpg',1,'2023-03-30 17:17:59','资讯详情8','2023-03-30 17:17:59'),(9,'资讯名称9','upload/news9.jpg',1,'2023-03-30 17:17:59','资讯详情9','2023-03-30 17:17:59'),(10,'资讯名称10','upload/news10.jpg',2,'2023-03-30 17:17:59','资讯详情10','2023-03-30 17:17:59'),(11,'资讯名称11','upload/news11.jpg',2,'2023-03-30 17:17:59','资讯详情11','2023-03-30 17:17:59'),(12,'资讯名称12','upload/news12.jpg',2,'2023-03-30 17:17:59','资讯详情12','2023-03-30 17:17:59'),(13,'资讯名称13','upload/news13.jpg',1,'2023-03-30 17:17:59','资讯详情13','2023-03-30 17:17:59'),(14,'资讯名称14','upload/news14.jpg',2,'2023-03-30 17:17:59','资讯详情14','2023-03-30 17:17:59');

/*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','管理员','5wc6d1y9hgvr5by12486kpt1686syrgb','2023-03-31 09:23:44','2023-03-31 11:22:37'),(2,3,'a3','yonghu','用户','u84laf6ckvr5uh7fkbemvmlwu362rw83','2023-03-31 09:27:26','2023-03-31 11:17:20'),(3,1,'a1','zhuanjia','专家','8zadrvgcq5hpvgx9qbxabf1yltbsidra','2023-03-31 10:11:59','2023-03-31 11:18:26'),(4,4,'a5','yonghu','用户','eadsihd4log3cv2red9s2rkgv85z48bg','2023-03-31 10:16:11','2023-03-31 11:16:12');

/*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-03-30 17:04:06');

/*Table structure for table `xiangmu` */

DROP TABLE IF EXISTS `xiangmu`;

CREATE TABLE `xiangmu` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '用户',
  `zhuanjia_id` int(11) DEFAULT NULL COMMENT '专家',
  `xiangmu_uuid_number` varchar(200) DEFAULT NULL COMMENT '项目编号',
  `xiangmu_name` varchar(200) DEFAULT NULL COMMENT '项目名称  Search111 ',
  `xiangmu_photo` varchar(200) DEFAULT NULL COMMENT '项目照片',
  `xiangmu_address` varchar(200) DEFAULT NULL COMMENT '项目地点',
  `xiangmu_kaishi_time` timestamp NULL DEFAULT NULL COMMENT '项目开始时间',
  `xiangmu_jieshu_time` timestamp NULL DEFAULT NULL COMMENT '项目结束时间',
  `xiangmu_types` int(11) DEFAULT NULL COMMENT '项目类型 Search111',
  `xiangmu_dengji_types` int(11) DEFAULT NULL COMMENT '项目等级 Search111',
  `xiangmu_content` longtext COMMENT '项目介绍 ',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '录入时间',
  `xiangmu_yesno_types` int(11) DEFAULT NULL COMMENT '审核状态 Search111',
  `xiangmu_yesno_text` longtext COMMENT '审核意见',
  `xiangmu_shenhe_time` timestamp NULL DEFAULT NULL COMMENT '审核时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间  show3 listShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COMMENT='项目';

/*Data for the table `xiangmu` */

insert  into `xiangmu`(`id`,`yonghu_id`,`zhuanjia_id`,`xiangmu_uuid_number`,`xiangmu_name`,`xiangmu_photo`,`xiangmu_address`,`xiangmu_kaishi_time`,`xiangmu_jieshu_time`,`xiangmu_types`,`xiangmu_dengji_types`,`xiangmu_content`,`insert_time`,`xiangmu_yesno_types`,`xiangmu_yesno_text`,`xiangmu_shenhe_time`,`create_time`) values (1,3,2,'1680167879791','项目名称1','upload/xiangmu1.jpg','项目地点1','2023-03-30 17:17:59','2023-03-30 17:17:59',3,1,'项目介绍1','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(2,3,2,'1680167879834','项目名称2','upload/xiangmu2.jpg','项目地点2','2023-03-30 17:17:59','2023-03-30 17:17:59',3,3,'项目介绍2','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(3,2,1,'1680167879802','项目名称3','upload/xiangmu3.jpg','项目地点3','2023-03-30 17:17:59','2023-03-30 17:17:59',1,3,'项目介绍3','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(4,2,1,'1680167879843','项目名称4','upload/xiangmu4.jpg','项目地点4','2023-03-30 17:17:59','2023-03-30 17:17:59',1,2,'项目介绍4','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(5,2,3,'1680167879779','项目名称5','upload/xiangmu5.jpg','项目地点5','2023-03-30 17:17:59','2023-03-30 17:17:59',2,3,'项目介绍5','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(6,1,1,'1680167879844','项目名称6','upload/xiangmu6.jpg','项目地点6','2023-03-30 17:17:59','2023-03-30 17:17:59',3,1,'项目介绍6','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(7,3,3,'1680167879850','项目名称7','upload/xiangmu7.jpg','项目地点7','2023-03-30 17:17:59','2023-03-30 17:17:59',2,3,'项目介绍7','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(8,3,3,'1680167879848','项目名称8','upload/xiangmu8.jpg','项目地点8','2023-03-30 17:17:59','2023-03-30 17:17:59',1,1,'项目介绍8','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(9,3,1,'1680167879859','项目名称9','upload/xiangmu9.jpg','项目地点9','2023-03-30 17:17:59','2023-03-30 17:17:59',3,1,'项目介绍9','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(10,3,3,'1680167879866','项目名称10','upload/xiangmu10.jpg','项目地点10','2023-03-30 17:17:59','2023-03-30 17:17:59',1,3,'项目介绍10','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(11,2,2,'1680167879871','项目名称11','upload/xiangmu11.jpg','项目地点11','2023-03-30 17:17:59','2023-03-30 17:17:59',1,2,'项目介绍11','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(12,3,3,'1680167879868','项目名称12','upload/xiangmu12.jpg','项目地点12','2023-03-30 17:17:59','2023-03-30 17:17:59',3,1,'项目介绍12','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(13,1,2,'1680167879826','项目名称13','upload/xiangmu13.jpg','项目地点13','2023-03-30 17:17:59','2023-03-30 17:17:59',4,2,'项目介绍13','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(14,1,1,'1680167879795','项目名称14','upload/xiangmu14.jpg','项目地点14','2023-03-30 17:17:59','2023-03-30 17:17:59',3,1,'项目介绍14','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(15,3,1,'1680228079138','项目11','upload/1680228087580.jpg','项目地点','2023-04-01 00:00:00','2023-04-01 00:00:00',3,2,'固定死公司大概多少','2023-03-31 10:02:11',3,'沟沟壑壑','2023-03-31 10:12:09','2023-03-31 10:02:11'),(16,4,1,'1680229005457','项目333','upload/1680229010609.jpg','地点222','2023-04-01 00:00:00','2023-04-06 00:00:00',3,2,'合适的话啥都好说的','2023-03-31 10:17:07',2,'回家考虑','2023-03-31 10:18:44','2023-03-31 10:17:07');

/*Table structure for table `yonghu` */

DROP TABLE IF EXISTS `yonghu`;

CREATE TABLE `yonghu` (
  `id` int(11) NOT NULL AUTO_INCREMENT 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_id_number` varchar(200) DEFAULT NULL COMMENT '用户身份证号',
  `yonghu_photo` varchar(200) DEFAULT NULL COMMENT '用户头像',
  `sex_types` int(11) DEFAULT NULL COMMENT '性别',
  `yonghu_email` varchar(200) DEFAULT NULL COMMENT '用户邮箱',
  `jinyong_types` int(11) DEFAULT NULL COMMENT '账户状态 Search111 ',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='用户';

/*Data for the table `yonghu` */

insert  into `yonghu`(`id`,`username`,`password`,`yonghu_name`,`yonghu_phone`,`yonghu_id_number`,`yonghu_photo`,`sex_types`,`yonghu_email`,`jinyong_types`,`create_time`) values (1,'a1','123456','用户姓名1','17703786901','410224199010102001','upload/yonghu1.jpg',1,'[email protected]',2,'2023-03-30 17:17:59'),(2,'a2','123456','用户姓名2','17703786902','410224199010102002','upload/yonghu2.jpg',2,'[email protected]',1,'2023-03-30 17:17:59'),(3,'a3','123456','用户姓名3','17703786903','410224199010102003','upload/yonghu3.jpg',2,'[email protected]',1,'2023-03-30 17:17:59'),(4,'a5','123456','张5','17788889999','444555666699999999','upload/1680229002588.jpg',2,'[email protected]',1,'2023-03-31 10:16:07');

/*Table structure for table `zhuanjia` */

DROP TABLE IF EXISTS `zhuanjia`;

CREATE TABLE `zhuanjia` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` varchar(200) DEFAULT NULL COMMENT '账户',
  `password` varchar(200) DEFAULT NULL COMMENT '密码',
  `zhuanjia_name` varchar(200) DEFAULT NULL COMMENT '专家姓名 Search111 ',
  `zhuanjia_phone` varchar(200) DEFAULT NULL COMMENT '专家手机号',
  `zhuanjia_id_number` varchar(200) DEFAULT NULL COMMENT '专家身份证号',
  `zhuanjia_photo` varchar(200) DEFAULT NULL COMMENT '专家头像',
  `sex_types` int(11) DEFAULT NULL COMMENT '性别',
  `zhuanjia_email` varchar(200) DEFAULT NULL COMMENT '专家邮箱',
  `jinyong_types` int(11) DEFAULT NULL COMMENT '账户状态 Search111 ',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='专家';

/*Data for the table `zhuanjia` */

insert  into `zhuanjia`(`id`,`username`,`password`,`zhuanjia_name`,`zhuanjia_phone`,`zhuanjia_id_number`,`zhuanjia_photo`,`sex_types`,`zhuanjia_email`,`jinyong_types`,`create_time`) values (1,'a1','123456','专家姓名1','17703786901','410224199010102001','upload/zhuanjia1.jpg',1,'[email protected]',1,'2023-03-30 17:17:59'),(2,'a2','123456','专家姓名2','17703786902','410224199010102002','upload/zhuanjia2.jpg',1,'[email protected]',1,'2023-03-30 17:17:59'),(3,'a3','123456','专家姓名3','17703786903','410224199010102003','upload/zhuanjia3.jpg',1,'[email protected]',1,'2023-03-30 17:17:59');

/*!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";

    @Autowired
    private XiangmuService xiangmuService;

    @Autowired
    private TokenService tokenService;

    @Autowired
    private CaozuorizhiService caozuorizhiService;//操作日志
    @Autowired
    private DictionaryService dictionaryService;//字典
    @Autowired
    private GonggaoService gonggaoService;//公告
    @Autowired
    private LiuyanService liuyanService;//留言板
    @Autowired
    private NewsService newsService;//资讯信息
    @Autowired
    private YonghuService yonghuService;//用户
    @Autowired
    private ZhuanjiaService zhuanjiaService;//专家
    @Autowired
    private UsersService usersService;//管理员

    /**
    * 后端列表
    */
    @RequestMapping("/page")
    public R page(@RequestParam Map 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("zhuanjiaId",request.getSession().getAttribute("userId"));
        CommonUtil.checkMap(params);
        PageUtils page = xiangmuService.queryPage(params);

        //字典表数据转换
        List list =(List)page.getList();
        for(XiangmuView c:list){
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(c, request);
        }
        caozuorizhiService.insertCaozuorizhi(String.valueOf(request.getSession().getAttribute("role")),TABLE_NAME,String.valueOf(request.getSession().getAttribute("username")),"列表查询",list.toString());
        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转view
            XiangmuView view = new XiangmuView();
            BeanUtils.copyProperties( xiangmu , view );//把实体数据重构到view中
            //级联表 用户
            //级联表
            YonghuEntity yonghu = yonghuService.selectById(xiangmu.getYonghuId());
            if(yonghu != null){
            BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"
, "zhuanjiaId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表
            view.setYonghuId(yonghu.getId());
            }
            //级联表 专家
            //级联表
            ZhuanjiaEntity zhuanjia = zhuanjiaService.selectById(xiangmu.getZhuanjiaId());
            if(zhuanjia != null){
            BeanUtils.copyProperties( zhuanjia , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"
, "zhuanjiaId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表
            view.setZhuanjiaId(zhuanjia.getId());
            }
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view, request);
    caozuorizhiService.insertCaozuorizhi(String.valueOf(request.getSession().getAttribute("role")),TABLE_NAME,String.valueOf(request.getSession().getAttribute("username")),"单条数据查看",view.toString());
            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.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
        else if("专家".equals(role))
            xiangmu.setZhuanjiaId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));

        Wrapper queryWrapper = new EntityWrapper()
            .eq("yonghu_id", xiangmu.getYonghuId())
            .eq("zhuanjia_id", xiangmu.getZhuanjiaId())
            .eq("xiangmu_name", xiangmu.getXiangmuName())
            .eq("xiangmu_address", xiangmu.getXiangmuAddress())
            .eq("xiangmu_types", xiangmu.getXiangmuTypes())
            .eq("xiangmu_dengji_types", xiangmu.getXiangmuDengjiTypes())
            .in("xiangmu_yesno_types", new Integer[]{1,2})
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        XiangmuEntity xiangmuEntity = xiangmuService.selectOne(queryWrapper);
        if(xiangmuEntity==null){
            xiangmu.setInsertTime(new Date());
            xiangmu.setXiangmuYesnoTypes(1);
            xiangmu.setCreateTime(new Date());
            xiangmuService.insert(xiangmu);
            caozuorizhiService.insertCaozuorizhi(String.valueOf(request.getSession().getAttribute("role")),TABLE_NAME,String.valueOf(request.getSession().getAttribute("username")),"新增",xiangmu.toString());
            return R.ok();
        }else {
            if(xiangmuEntity.getXiangmuYesnoTypes()==1)
                return R.error(511,"有相同的待审核的数据");
            else if(xiangmuEntity.getXiangmuYesnoTypes()==2)
                return R.error(511,"有相同的审核通过的数据");
            else
                return 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.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
//        else if("专家".equals(role))
//            xiangmu.setZhuanjiaId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
        if("".equals(xiangmu.getXiangmuPhoto()) || "null".equals(xiangmu.getXiangmuPhoto())){
                xiangmu.setXiangmuPhoto(null);
        }

            xiangmuService.updateById(xiangmu);//根据id更新
            List strings = caozuorizhiService.clazzDiff(xiangmu, oldXiangmuEntity, request,new String[]{"updateTime"});
            caozuorizhiService.insertCaozuorizhi(String.valueOf(request.getSession().getAttribute("role")),TABLE_NAME,String.valueOf(request.getSession().getAttribute("username")),"修改",strings.toString());
            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());//查询原先数据

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永远不会进入");
        else if("用户".equals(role))
            xiangmuEntity.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
        else if("专家".equals(role))
            xiangmuEntity.setZhuanjiaId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));

        if(xiangmuEntity.getXiangmuYesnoTypes() == 2){//通过
        }else if(xiangmuEntity.getXiangmuYesnoTypes() == 3){//拒绝
        }
        xiangmuEntity.setXiangmuShenheTime(new Date());//审核时间
        xiangmuService.updateById(xiangmuEntity);//审核
     caozuorizhiService.insertCaozuorizhi(String.valueOf(request.getSession().getAttribute("role")),TABLE_NAME,String.valueOf(request.getSession().getAttribute("username")),"审核数据","审核"+oldXiangmu+"数据,审核结果是"+(xiangmuEntity.getXiangmuYesnoTypes()==2?"通过":"拒绝"));
        return R.ok();
    }

    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids, HttpServletRequest request){
        logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
        List oldXiangmuList =xiangmuService.selectBatchIds(Arrays.asList(ids));//要删除的数据
        xiangmuService.deleteBatchIds(Arrays.asList(ids));
        caozuorizhiService.insertCaozuorizhi(String.valueOf(request.getSession().getAttribute("role")),TABLE_NAME,String.valueOf(request.getSession().getAttribute("username")),"删除",oldXiangmuList.toString());
        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 xiangmuList = new ArrayList<>();//上传的东西
            Map> 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> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件
                        dataList.remove(0);//删除第一行,因为第一行是提示
                        for(List data:dataList){
                            //循环
                            XiangmuEntity xiangmuEntity = new XiangmuEntity();
//                            xiangmuEntity.setYonghuId(Integer.valueOf(data.get(0)));   //用户 要改的
//                            xiangmuEntity.setZhuanjiaId(Integer.valueOf(data.get(0)));   //专家 要改的
//                            xiangmuEntity.setXiangmuUuidNumber(data.get(0));                    //项目编号 要改的
//                            xiangmuEntity.setXiangmuName(data.get(0));                    //项目名称 要改的
//                            xiangmuEntity.setXiangmuPhoto("");//详情和图片
//                            xiangmuEntity.setXiangmuAddress(data.get(0));                    //项目地点 要改的
//                            xiangmuEntity.setXiangmuKaishiTime(sdf.parse(data.get(0)));          //项目开始时间 要改的
//                            xiangmuEntity.setXiangmuJieshuTime(sdf.parse(data.get(0)));          //项目结束时间 要改的
//                            xiangmuEntity.setXiangmuTypes(Integer.valueOf(data.get(0)));   //项目类型 要改的
//                            xiangmuEntity.setXiangmuDengjiTypes(Integer.valueOf(data.get(0)));   //项目等级 要改的
//                            xiangmuEntity.setXiangmuContent("");//详情和图片
//                            xiangmuEntity.setInsertTime(date);//时间
//                            xiangmuEntity.setXiangmuYesnoTypes(Integer.valueOf(data.get(0)));   //审核状态 要改的
//                            xiangmuEntity.setXiangmuYesnoText(data.get(0));                    //审核意见 要改的
//                            xiangmuEntity.setXiangmuShenheTime(sdf.parse(data.get(0)));          //审核时间 要改的
//                            xiangmuEntity.setCreateTime(date);//时间
                            xiangmuList.add(xiangmuEntity);

                            //把要查询是否重复的字段放入map中
                                //项目编号
                                if(seachFields.containsKey("xiangmuUuidNumber")){
                                    List xiangmuUuidNumber = seachFields.get("xiangmuUuidNumber");
                                    xiangmuUuidNumber.add(data.get(0));//要改的
                                }else{
                                    List xiangmuUuidNumber = new ArrayList<>();
                                    xiangmuUuidNumber.add(data.get(0));//要改的
                                    seachFields.put("xiangmuUuidNumber",xiangmuUuidNumber);
                                }
                        }

                        //查询是否重复
                         //项目编号
                        List xiangmuEntities_xiangmuUuidNumber = xiangmuService.selectList(new EntityWrapper().in("xiangmu_uuid_number", seachFields.get("xiangmuUuidNumber")));
                        if(xiangmuEntities_xiangmuUuidNumber.size() >0 ){
                            ArrayList repeatFields = new ArrayList<>();
                            for(XiangmuEntity s:xiangmuEntities_xiangmuUuidNumber){
                                repeatFields.add(s.getXiangmuUuidNumber());
                            }
                            return R.error(511,"数据库的该表中的 [项目编号] 字段已经存在 存在数据为:"+repeatFields.toString());
                        }
                        xiangmuService.insertBatch(xiangmuList);
                        caozuorizhiService.insertCaozuorizhi(String.valueOf(request.getSession().getAttribute("role")),TABLE_NAME,String.valueOf(request.getSession().getAttribute("username")),"批量新增",xiangmuList.toString());
                        return R.ok();
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
            return R.error(511,"批量插入数据异常,请联系管理员");
        }
    }

    /**
    * 前端列表
    */
    @IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map params, HttpServletRequest request){
        logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));

        CommonUtil.checkMap(params);
        PageUtils page = xiangmuService.queryPage(params);

        //字典表数据转换
        List list =(List)page.getList();
        for(XiangmuView c:list)
            dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段
        caozuorizhiService.insertCaozuorizhi(String.valueOf(request.getSession().getAttribute("role")),TABLE_NAME,String.valueOf(request.getSession().getAttribute("username")),"列表查询",list.toString());
        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);
        XiangmuEntity xiangmu = xiangmuService.selectById(id);
            if(xiangmu !=null){


                //entity转view
                XiangmuView view = new XiangmuView();
                BeanUtils.copyProperties( xiangmu , view );//把实体数据重构到view中

                //级联表
                    YonghuEntity yonghu = yonghuService.selectById(xiangmu.getYonghuId());
                if(yonghu != null){
                    BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setYonghuId(yonghu.getId());
                }
                //级联表
                    ZhuanjiaEntity zhuanjia = zhuanjiaService.selectById(xiangmu.getZhuanjiaId());
                if(zhuanjia != null){
                    BeanUtils.copyProperties( zhuanjia , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setZhuanjiaId(zhuanjia.getId());
                }
                //修改对应字典表字段
                dictionaryService.dictionaryConvert(view, request);
                    caozuorizhiService.insertCaozuorizhi(String.valueOf(request.getSession().getAttribute("role")),TABLE_NAME,String.valueOf(request.getSession().getAttribute("username")),"单条数据查看",view.toString());
                return R.ok().put("data", view);
            }else {
                return R.error(511,"查不到数据");
            }
    }

    /**
    * 前端保存
    */
    @RequestMapping("/add")
    public R add(@RequestBody XiangmuEntity xiangmu, HttpServletRequest request){
        logger.debug("add方法:,,Controller:{},,xiangmu:{}",this.getClass().getName(),xiangmu.toString());
        Wrapper queryWrapper = new EntityWrapper()
            .eq("yonghu_id", xiangmu.getYonghuId())
            .eq("zhuanjia_id", xiangmu.getZhuanjiaId())
            .eq("xiangmu_uuid_number", xiangmu.getXiangmuUuidNumber())
            .eq("xiangmu_name", xiangmu.getXiangmuName())
            .eq("xiangmu_address", xiangmu.getXiangmuAddress())
            .eq("xiangmu_types", xiangmu.getXiangmuTypes())
            .eq("xiangmu_dengji_types", xiangmu.getXiangmuDengjiTypes())
            .in("xiangmu_yesno_types", new Integer[]{1,2})
            .eq("xiangmu_yesno_text", xiangmu.getXiangmuYesnoText())
//            .notIn("xiangmu_types", new Integer[]{102})
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        XiangmuEntity xiangmuEntity = xiangmuService.selectOne(queryWrapper);
        if(xiangmuEntity==null){
            xiangmu.setInsertTime(new Date());
            xiangmu.setXiangmuYesnoTypes(1);
            xiangmu.setCreateTime(new Date());
        xiangmuService.insert(xiangmu);
            caozuorizhiService.insertCaozuorizhi(String.valueOf(request.getSession().getAttribute("role")),TABLE_NAME,String.valueOf(request.getSession().getAttribute("username")),"前台新增",xiangmu.toString());
            return R.ok();
        }else {
            if(xiangmuEntity.getXiangmuYesnoTypes()==1)
                return R.error(511,"有相同的待审核的数据");
            else if(xiangmuEntity.getXiangmuYesnoTypes()==2)
                return R.error(511,"有相同的审核通过的数据");
            else
                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 {

    /**
    * @param params 查询参数
    * @return 带分页的查询出来的数据
    */
     PageUtils queryPage(Map 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 implements XiangmuService {

    @Override
    public PageUtils queryPage(Map params) {
        Page page =new Query(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  学长编程
 * WeChat   jsjbysj88 
*/
public interface XiangmuDao extends BaseMapper {

   List selectListView(Pagination page,@Param("params")Map params);

}

6、论文目录结构

计算机毕业设计 基于SpringBoot的项目申报系统的设计与实现 Java实战项目 附源码+文档+视频讲解_第7张图片

7、源码获取

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

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

获取源码请私信

你可能感兴趣的:(计算机毕业设计1000套,毕业设计,毕业论文,课程设计,Java,Vue,MySQL)