基于javaweb+mysql的springboot学生会管理系统(java+springboot+thymeleaf+html+layui+bootstrap+maven+mysql)
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot学生会管理系统(java+springboot+thymeleaf+html+layui+bootstrap+maven+mysql)
项目介绍
学生会管理系统.主要功能包括:
后台首页:最新活动展示、最新公告、学生会部门职能介绍; 财务管理:资金报销登记、赞助商管理; 物资管理:物资借还管理、全部物资;添加、编辑、删除; 日常事务管理:工作计划管理、活动管理、文件管理; 申请请假:添加、修改、删除、查看;
我的待办;
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目
6.数据库:MySql 5.7版本;
技术栈
-
后端:SpringBoot
-
前端:Thymeleaf+html+layui+jQuery+bootstrap
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 将项目中application.yml及activiti.cfg.xml配置文件中的数据库配置改为自己的配置; 3. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行; 4. 运行项目,输入localhost:8085 登录
@RestController
@RequestMapping("/goods")
public class GoodsController {
@Autowired
private GoodsService goodsService;
@Autowired
private GoodsService1 AllgoodsService;
/**
* 查询物资
* @param
* @return
*/
@RequestMapping("loadAllGoods")
public Dataobj loadAllGoods(GoodsVo goodsVo){
IPage<goods> page = new Page<>(goodsVo.getPage(),goodsVo.getLimit());
QueryWrapper<goods> q = new QueryWrapper<>();
q.like(StringUtils.isNotBlank(goodsVo.getGname()),"gname",goodsVo.getGname());
q.like(StringUtils.isNotBlank(goodsVo.getRetunname()),"retunname",goodsVo.getRetunname());
q.like(StringUtils.isNotBlank(goodsVo.getOperatorname()),"operatorname",goodsVo.getOperatorname());
q.like(StringUtils.isNotBlank(goodsVo.getBorrowname()),"borrowname",goodsVo.getBorrowname());
q.orderByAsc("id");
goodsService.page(page,q);
List list =goodsService.list(q);
long num=list.size();
if(list.isEmpty()){
return new Dataobj(null,num);
}else {
//返回DataGridView
return new Dataobj(page.getRecords(), page.getTotal());
}
}
Integer gid=goodsVo.getGid();
Allgoods allgoods=AllgoodsService.getById(gid);
Integer goodssum1=allgoods.getGoodsnum();
Integer brrownum1=allgoods.getBorrownum();
Integer num=goodsVo.getCountnum();
Integer num1=goodsVo.getGoodsnum();
if(goodsVo.getStatus()==1){
allgoods.setGoodsnum(goodssum1+num1);
allgoods.setBorrownum(brrownum1-num1);
AllgoodsService.updateById(allgoods);
goodsService.updateById(goodsVo);
return Resultreturn.UPDATE_SUCCESS;
}
else {
if (allgoods.getGoodsnum() > 0 && num < allgoods.getGoodsnum()) {
if (num>0) {
brrownum1 = num + brrownum1;
allgoods.setBorrownum(brrownum1);
allgoods.setGoodsnum(goodssum1 - num);
AllgoodsService.updateById(allgoods);
goodsService.updateById(goodsVo);
} else if (0 == num) {
goodsService.updateById(goodsVo);
} else {
brrownum1 = brrownum1 +num;
allgoods.setBorrownum(brrownum1);
allgoods.setGoodsnum(goodssum1-num);
AllgoodsService.updateById(allgoods);
goodsService.updateById(goodsVo);
}
return Resultreturn.UPDATE_SUCCESS;
} else {
return Resultreturn.UPDATE_ERRORs;
}
}
} catch (Exception e) {
e.printStackTrace();
return Resultreturn.UPDATE_ERROR;
}
}
/**
* 批量删除
* @param goodsVo 选中
* @param id
* @return
*/
@RequestMapping("deleteUser/{id}")
public resultreturn deleteUser(@PathVariable("id") Integer id){
try {
userService.removeById(id);
return resultreturn.DELETE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return resultreturn.DELETE_ERROR;
}
}
/**
* 根据用户id查询角色并选中已拥有的角色
* @param id 用户id
* @return
*/
@RequestMapping("initRoleByUserId")
public Dataobj initRoleByUserId(Integer id){
//1.查询所有可用的角色
QueryWrapper<role> q = new QueryWrapper<>();
q.eq("available", changliang.AVAILABLE_TRUE);
List<Map<String, Object>> listMaps = roleService.listMaps(q);
//2.查询当前用户拥有的角色id集合
List<Integer> currentUserRoleIds = roleService.queryUserRoleIdsByUid(id);
for (Map<String, Object> map : listMaps) {
Boolean LAY_CHECKED=false;
Integer roleId = (Integer) map.get("id");
for (Integer rid : currentUserRoleIds) {
if (rid.equals(roleId)){
LAY_CHECKED=true;
break;
}
}
map.put("LAY_CHECKED",LAY_CHECKED);
}
return new Dataobj(listMaps,Long.valueOf(listMaps.size()));
}
/**
* 保存用户和角色的关系
* @param uid 用户的ID
* @param ids 用户拥有的角色的ID的数组
* @return
*/
@RequestMapping("saveUserRole")
public resultreturn saveUserRole(Integer uid, Integer[] ids){
variables.put("请假时间", new Date());
variables.put("请假流程", 1);
//开启流程
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processKey,variables);
//将得到的实例流程id值赋给之前设置的变量
processInstanceId = processInstance.getId();
}
/**
* 申请提交请假单
*/
@RequestMapping("Billeave")
public resultreturn Billeave(Integer id,HttpSession session){
try {
User user= (User) session.getAttribute("user");
//部署流程
if(user.getRemark().equals("部长")){
deploymentProcess1(user.getName(),id);
}else {
deploymentProcess(user.getName());
}
leaver leaver=new leaver();
leaver.setId(id);
leaver.setStatus(2);
leaverService.updatebyAll(leaver);
return resultreturn.Apply_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return resultreturn.Apply_ERROR;
}
}
}
public Dataobj loadAllProviderForSelect(){
QueryWrapper<file> q = new QueryWrapper();
List<file> list = filesService.list(q);
return new Dataobj(list);
}
/**
* 添加文件
* @param
* @return
*/
@RequestMapping("addfiles")
public Resultreturn addfile(FileVo fileVo){
try {
filesService.save(fileVo);
return Resultreturn.ADD_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return Resultreturn.ADD_ERROR;
}
}
/**
* 修改文件
* @param fileVo
* @return
*/
@RequestMapping("updatefiles")
public Resultreturn updatefiles(FileVo fileVo){
try {
filesService.updateById(fileVo);
return Resultreturn.UPDATE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return Resultreturn.UPDATE_ERROR;
}
}
/**
* 批量删除文件
* @param fileVo 选中的文件
* @return
*/
@RequestMapping("batchDeletefiles")
public Resultreturn batchDeletefiles(FileVo fileVo){
try {
Collection<Serializable> idList = new ArrayList<Serializable>();
for (Integer id : fileVo.getIds()) {
idList.add(id);
}
}else {
//返回DataGridView
return new Dataobj(page.getRecords(), page.getTotal());
}
}
/**
* 新建活动
*/
@RequestMapping("addactivitys")
public Resultreturn addGoods1(huodonv huodonv){
try {
activitysService.save(huodonv);
return Resultreturn.ADD_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return Resultreturn.ADD_ERROR;
}
}
/**
* 修改活动
* @param huodonv
* @return
*/
@RequestMapping("updateactivitys")
public Resultreturn updateGoods1(huodonv huodonv){
try {
activitysService.updateById(huodonv);
return Resultreturn.UPDATE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return Resultreturn.UPDATE_ERROR;
}
}
//删除活动
@RequestMapping("deleteactivitys")
public Resultreturn deleteGoods1(Integer id){
try {
activitysService.removeById(id);
return Resultreturn.DELETE_SUCCESS;
} catch (Exception e) {
* @return
*/
@RequestMapping("addDept")
public resultreturn addDept(bumenv deptVo){
try {
deptService.save(deptVo);
return resultreturn.ADD_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return resultreturn.ADD_ERROR;
}
}
/**
* 更新部门
* @param deptVo
* @return
*/
@RequestMapping("updateDept")
public resultreturn updateDept(bumenv deptVo){
try {
deptService.updateById(deptVo);
return resultreturn.UPDATE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return resultreturn.UPDATE_ERROR;
}
}
/**
* 删除部门
* @param deptVo
* @return
*/
@RequestMapping("deleteDept")
public resultreturn deleteDept(bumenv deptVo){
try {
deptService.removeById(deptVo.getDid());
return resultreturn.DELETE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return resultreturn.DELETE_ERROR;
}
}
}
/**
* 新建计划
* @param
* @return
*/
@RequestMapping("addplans")
public Resultreturn addGoods1(PlansVo plansVo){
try {
plansService.save(plansVo);
return Resultreturn.ADD_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return Resultreturn.ADD_ERROR;
}
}
/**
* 修改计划
*/
@RequestMapping("updateplans")
public Resultreturn updateGoods1(PlansVo plansVo){
try {
plansService.updateById(plansVo);
return Resultreturn.UPDATE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return Resultreturn.UPDATE_ERROR;
}
}
//删除计划
@RequestMapping("deleteplans")
public Resultreturn deleteGoods1(Integer pid){
try {
plansService.removeById(pid);
return Resultreturn.DELETE_SUCCESS;
* @return
*/
@RequestMapping("deleteNotice")
public resultreturn deleteNotice(gongaov noticeVo){
try {
noticeService.removeById(noticeVo);
return resultreturn.DELETE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return resultreturn.DELETE_ERROR;
}
}
/**
* 批量删除公告
* @param noticeVo
* @return
*/
@RequestMapping("batchDeleteNotice")
public resultreturn batchDeleteNotice(gongaov noticeVo){
try {
Collection<Serializable> idList = new ArrayList<>();
for (Integer id : noticeVo.getIds()) {
idList.add(id);
}
noticeService.removeByIds(idList);
return resultreturn.DELETE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return resultreturn.DELETE_ERROR;
}
}
}
@RestController
@RequestMapping("/role")
public class JiaoseController {
@Autowired
private IjiaoseService roleService;
@Autowired
private IquanxianService permissionService;
/**
* 查询所有角色
* @param jiaosev
* @return
*/
@RequestMapping("loadAllRole")
public Dataobj loadAllRole(jiaosev jiaosev){
IPage<role> page = new Page<role>(jiaosev.getPage(), jiaosev.getLimit());
QueryWrapper<role> queryWrapper = new QueryWrapper<role>();
queryWrapper.like(StringUtils.isNotBlank(jiaosev.getName()),"name", jiaosev.getName());
queryWrapper.like(StringUtils.isNotBlank(jiaosev.getRemark()),"remark", jiaosev.getRemark());
queryWrapper.eq(jiaosev.getAvailable()!=null,"available", jiaosev.getAvailable());
queryWrapper.orderByAsc("id");
roleService.page(page,queryWrapper);
List list =roleService.list(queryWrapper);
long num=list.size();
if(list.isEmpty()){
return new Dataobj(null,num);
public Resultreturn batchDeletefiles(GoodsVo1 goodsVo1){
try {
Collection<Serializable> idList = new ArrayList<Serializable>();
for (Integer id : goodsVo1.getIds()) {
idList.add(id);
}
AllgoodsService.removeByIds(idList);
return Resultreturn.DELETE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return Resultreturn.DELETE_ERROR;
}
}
}
@RestController
// return "";
// }
//
// }
// @RequestMapping("writeMessage")
// public void writeMessage(String message,HttpSession session){
// User user= (User) session.getAttribute("user");
// Client client = null;
// for (String s:map.keySet()){
// if (s==user.getName()){
// client=map.get(s);
// }
// }
// client.sendmsg(message);
// }
//
//修改密码
@RequestMapping("/changePassword")
public resultreturn udateppassword(String oldPassword, String newPwdOne, String newPwdTwo, HttpSession session) {
User user = (User) session.getAttribute("user");
//2.将oldPassword加盐并散列两次在和数据库中的密码进行对比
Integer userId = user.getId();
User user1 = userService.getById(userId);
//2.1获得该用户的盐
String salt = user1.getPwdsalt();
//2.2通过用户输入的原密码,从数据库中查出的盐,散列次数生成新的旧密码
String oldPassword2 = new Md5Hash(oldPassword,salt,2).toString();
oldPassword2 = oldPassword;
if (oldPassword2.equals(user.getPassword())) {
if (newPwdOne.equals(newPwdTwo)) {
//3.生成新的密码
String newPassword = new Md5Hash(newPwdOne,salt,2).toString();
newPassword=newPwdOne;
user.setPassword(newPassword);
userService.updatepwd(user);
return resultreturn.UPDATE_SUCCESS;
q5.eq("logintype","外联部").eq("remark","部长");
User user6=userService.getOne(q5);
QueryWrapper<User> q6=new QueryWrapper<>();
q6.eq("logintype","学习部").eq("remark","部长");
User user7=userService.getOne(q6);
QueryWrapper<User> q7=new QueryWrapper<>();
q7.eq("logintype","学生会").eq("remark","主席");
User user8=userService.getOne(q7);
//将流程负责人信息加入map,以便传入流程中
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("SumbName",name);
variables.put("shenghuo",user.getName());
variables.put("mishu", user1.getName());
variables.put("shijian", user2.getName());
variables.put("zuzhi", user3.getName());
variables.put("cehua", user4.getName());
variables.put("xuanchuan", user5.getName());
variables.put("wailain", user6.getName());
variables.put("xuexi", user7.getName());
variables.put("zhuxi", user8.getName());
//开启流程
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processKey,variables);
}
public void deploymentProcess1(String name,Integer id) throws Exception{
Deployment deployment =this.processEngine.getRepositoryService()
.createDeployment()
.name("请假流程.....")
.addClasspathResource("diagrams/LeaveProcess1.bpmn")
.addClasspathResource("diagrams/LeaveProcess1.png")
.deploy();
progressid=deployment.getId();
//获取runtimeservice对象
RuntimeService runtimeService = this.processEngine.getRuntimeService();
//根据流程key值,获取流程
String processKey ="buzhang";
//将信息加入map,以便传入流程中
QueryWrapper<User> q7=new QueryWrapper<>();
q7.eq("logintype","学生会").eq("remark","主席");
User user8=userService.getOne(q7);
String ganpi = (String) taskService.getVariable(task1.getId(), "干事批注");
String pi = (String) taskService.getVariable(task1.getId(), "部长批注");
Integer procressId = (Integer) taskService.getVariable(task1.getId(), "请假流程");
tak.setLeaver(Lname);
tak.setReason(reason);
tak.setLeaverId(leaverId);
tak.setRemart(remark);
tak.setTime(date);
tak.setStyle(style);
tak.setGanpi(ganpi);
tak.setPi(pi);
tak.setProcressId(procressId);
list1.add(tak);
}
}
return list1;
}
public List<task> findPersonalTask(String username){
QueryWrapper<leaver> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("leaver",username).eq("status",2);
leaver leaver=leaverService.getOne(queryWrapper);
TaskService taskService=this.processEngine.getTaskService();
List<org.activiti.engine.task.Task> list =this.processEngine.getTaskService()
.createTaskQuery()
.taskAssignee(username)//个人任务的查询
.list();
List<task> list1=new ArrayList<task>();
if(list!=null && list.size()>0){
for (org.activiti.engine.task.Task task1:list) {
task tak=new task();
Integer procressId = (Integer) taskService.getVariable(task1.getId(), "请假流程");
tak.setProcressId(procressId);
tak.setId(Integer.parseInt(task1.getId()));
tak.setName(task1.getName());
tak.setAssignee(task1.getAssignee());
tak.setProcessInstanceId(task1.getProcessInstanceId());
tak.setCreateTime(task1.getCreateTime());
tak.setLeaver(leaver.getLeaver());
tak.setReason(leaver.getLeavereson());
tak.setLeaverId(leaver.getId());
tak.setRemart(leaver.getRemark());
tak.setTime(new Date());
tak.setStyle(leaver.getStyle());
QueryWrapper<leaver> qu = new QueryWrapper<>();
//查询请假人和请假状态为被驳回的请假单
qu.eq("leaver", task.getLeaver()).eq("status", 3);
List<leaver> lea= leaverService.list(qu);
if(lea.isEmpty()){//如果为空表示当前任务为初次办理
//循环遍历查询出来的请假状态为审核中的请假单
for (com.ywj.system.model.leaver item:leaver) {
//设置流程变量以便传入流程中
variables.put("请假人", item.getLeaver());
variables.put("请假id", item.getId());
variables.put("请假类型", item.getStyle());
variables.put("请假原因", item.getLeavereson());
variables.put("备注", item.getRemark());
variables.put("请假时间", new Date());
variables.put("请假流程", 0);
records.setLeaverid(item.getId());
}
}else {//否则表示当前任务为二次办理
//遍历请假状态为被驳回的请假单
for (com.ywj.system.model.leaver leaver1:lea) {
//设置流程变量以便传入流程中
variables.put("请假人", leaver1.getLeaver());
variables.put("请假id", leaver1.getId());
variables.put("请假类型", leaver1.getStyle());
variables.put("请假原因", leaver1.getLeavereson());
variables.put("备注", leaver1.getRemark());
records.setLeaverid(leaver1.getId());
}
}
//设置流程变量
variables.put("请假时间", new Date());
variables.put("干事批注", task.getGanpi());
//审核记录
records.setId(task.getId());
records.setName(task.getName());
records.setPizhu(task.getGanpi());
records.setRecordtime(new Date());
records.setStatu(1);
variables.put("dapartment", user.getLogintype().toString());
//添加审核记录
recordsService.save(records);
//执行完成任务
this.processEngine.getTaskService().complete(task.getId().toString(), variables);
/**
* 退出然后跳转到登陆页面
*
* @return
*/
@RequestMapping("toSignOut")
public String toSignOut() {
//销毁session
try{
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = requestAttributes.getRequest();
HttpSession session = request.getSession();
if (session != null) {
User loginUser = (User) session.getAttribute("sysUserInfo");
ServletContext application = session.getServletContext();
@SuppressWarnings("unchecked")
Map<String, Object> loginMap = (Map<String, Object>) application.getAttribute("loginMap");
loginMap.remove(loginUser.getId());
application.setAttribute("loginMap", loginMap);
session.removeAttribute("user");
session.invalidate();//清除session信息
}
}catch(Exception e){
e.printStackTrace();
}
return "system/index/login";
}
/**
* 跳转到首页
*
* @return
*/
@RequestMapping("index")
public String index() {
return "system/index/index";
}
}
/**
* 跳转到代办
*
* @return
*/
@RequestMapping("toMyVerifyManager")
public String toRecordManager() {
return "system/myverify/MyVerifyManager";
}
/**
* 跳转到审核记录
*
* @return
*/
@RequestMapping("toRecordsManager")
public String toRecordsManager() {
return "system/myverify/RecordsManager";
}
/**
* 跳转到请假单管理
*
* @return
*/
@RequestMapping("toLeavesManagers")
public String toLeavesManagers() {
return "system/myverify/LeaveManagers";
}
/**
* 跳转到日志管理
*
* @return
*/
@RequestMapping("toLoginManagers")
* 根据id查询一个用户
* @param id 领导的id
* @return
*/
@RequestMapping("loadUserById")
public Dataobj loadUserById(Integer id){
return new Dataobj(userService.getById(id));
}
/**
* 修改用户
* @param userv
* @return
*/
@RequestMapping("updateUser")
public resultreturn updateUser(userv userv){
try {
userService.updateById(userv);
return resultreturn.UPDATE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return resultreturn.UPDATE_ERROR;
}
}
/**
* 删除用户
* @param id
* @return
*/
@RequestMapping("deleteUser/{id}")
public resultreturn deleteUser(@PathVariable("id") Integer id){
try {
userService.removeById(id);
return resultreturn.DELETE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return resultreturn.DELETE_ERROR;
}
}
/**
* 根据用户id查询角色并选中已拥有的角色
* @param id 用户id