基于SSM+SpringBoot+MySQL+Layui的高校图书馆借阅管理系统

82 篇文章 16 订阅

首页

登陆

首页

图书管理

图书新增

借阅管理

借书申请

学生管理

学生列表

老师管理

个人借阅

密码修改

技术描述

开发工具: Idea/Eclipse
数据库: mysql
Jar包仓库:普通jar包
前段框架:jquery/Bootstrap
后端框架: Spring+SpringMVC+Mybatis

package tgc.edu.mcy.controller;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;

import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import tgc.edu.mcy.custom.DataGridParam;
import tgc.edu.mcy.custom.EasyuiResult;
import tgc.edu.mcy.custom.JournalUtil;
import tgc.edu.mcy.entity.Book;
import tgc.edu.mcy.entity.Kind;
import tgc.edu.mcy.entity.Records;
import tgc.edu.mcy.entity.SysRole;
import tgc.edu.mcy.entity.SysUser;
import tgc.edu.mcy.form.BookForm;
import tgc.edu.mcy.security.UserUtils;
import tgc.edu.mcy.service.BookService;
import tgc.edu.mcy.service.KindService;
import tgc.edu.mcy.service.RecordsService;
import tgc.edu.mcy.service.SysUserService;

@Controller
@RequestMapping(value="/book")
public class BookController {
	@Autowired
	private BookService bookDAO;
	@Autowired
	private KindService kindDAO;
	@Autowired
	private UserUtils userUtils;
	@Autowired
	private JournalUtil journalUtil;
	@Autowired
	private RecordsService recordsDAO;
	@Autowired
	private SysUserService sysUserDAO;
	
	@RequestMapping(value="/main")
	public String main() {
		return "book/main";
	}
	
	@RequestMapping(value="/edit")
	public String edit(Integer id, ModelMap map) {
		List<Kind> kind = kindDAO.findAll();
		Book model = new Book();
		if(id != null) {
			model = bookDAO.findById(id);
			map.put("type", model.getKind().getType());
		}
		map.put("kind", kind);
		map.put("model", model);
		return "book/edit";
	}
	
	@RequestMapping(value="/apply")
	public String apply() {
		return "book/apply";
	}
	
	@RequestMapping(value="/message")
	public String message(Integer id, ModelMap map) {
		Book book = bookDAO.findById(id);
		map.put("book", book);
		return "book/message";
	}
	
	/**
	 * 还书
	 * */
	@RequestMapping(value="/huanshu")
	@ResponseBody
	public Object huanshu(Integer id) {
		Records records = recordsDAO.findById(id);
		Book book = bookDAO.findById(records.getBook().getId());
		records.setState("已还");
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
		String data = df.format(new Date());
		records.setReturnTime(data);
		recordsDAO.save(records);
		
		book.setNumber(book.getNumber()+1);
		book.setLoanNumber(book.getLoanNumber()-1);
		bookDAO.save(book);
		
		return new EasyuiResult("操作成功");
	}
	
	/**
	 * 借书
	 * @throws ParseException 
	 * */
	@RequestMapping(value="/borrow")
	@ResponseBody
	public synchronized Object borrow(Integer id) throws ParseException {
		SysUser user = userUtils.getUser();
		user.setNumber(user.getNumber()+1);		
		sysUserDAO.save(user);
		
		List<SysRole> roles = user.getRoles();
		String str = null;
		for (SysRole sysRole : roles) {
			str = sysRole.getName();
		}
		System.out.println(str+"====");
		
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
		String data = df.format(new Date());
		Date utilDate = df.parse(data);
		Records records = new Records();
		records.setUser(user);
		records.setBook(bookDAO.findById(id));
		if(str.equals("图书管理员")) {
			records.setState("未还");
			records.setReamark("图书管理员");			
		}else if(str.equals("老师")  || str.equals("学生")){
			records.setState("待审核");
			records.setReamark("用户");	
		}
		records.setStartTime(data);
		Date newDate = stepMonth(utilDate, 2);
		records.setEndTime(df.format(newDate));
		recordsDAO.save(records);
		
		Book book = bookDAO.findById(id);
		Integer number = book.getNumber()-1;
		Integer number1 = book.getLoanNumber()+1;
		book.setNumber(number);
		book.setLoanNumber(number1);
		bookDAO.save(book);
		return new EasyuiResult("借书成功");
	}
	
	//在原有时间是加几个月
	public static Date stepMonth(Date sourceDate, int month) {
        Calendar c = Calendar.getInstance();
        c.setTime(sourceDate);
        c.add(Calendar.MONTH, month);
        return c.getTime();
    }
	
	/**
	 * 添加图书
	 * */
	@RequestMapping(value="/save")
	@ResponseBody
	public Object save(BookForm form, MultipartFile file) {
		try {
			bookDAO.save(form, file);
			if(form.getId() == null) {
				SysUser user = userUtils.getUser();
				journalUtil.save(user.getUsername(), "添加图书", "图书管理员");				
			}
			return new EasyuiResult("数据保存成功");
		} catch (Exception e) {
			return new EasyuiResult(false, "数据保存失败");
		}
	}
	
	/**
	 * 申请同意
	 * */
	@RequestMapping(value="/consent")
	@ResponseBody
	public Object consent(Integer id) {
		Records records = recordsDAO.findById(id);
		records.setState("未还");
		recordsDAO.save(records);
		return new EasyuiResult("操作成功");
	}
	
	/**
	 * 显示所有图书
	 * */
	@RequestMapping(value="/list")
	@ResponseBody
	public Object list(DataGridParam param, String name, String press, String kind) {
		Pageable pageable = param.buildPageable();
		Specification<Book> specification = buildSpec(param, name, press, kind);
		Page<Book> page = bookDAO.findAll(specification, pageable);
		HashMap<String , Object> result = param.getPageResult(page);
		return result;
	}

	private Specification<Book> buildSpec(DataGridParam param, String name, String press, String kind) {
		Specification<Book> specification=new Specification<Book>() {

			private static final long serialVersionUID = 1L;

			@Override
			public Predicate toPredicate(Root<Book> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
				HashSet<Predicate> rules=new HashSet<>();
				if(StringUtils.hasText(name)) {
					rules.add(cb.like(root.get("name"), "%"+name+"%"));
				}
				if(StringUtils.hasText(press)) {
					rules.add(cb.like(root.get("press"), "%"+press+"%"));
				}
				if(StringUtils.hasText(kind)) {
					rules.add(cb.like(root.get("kind").get("type"), "%"+kind+"%"));
				}
				return cb.and(rules.toArray(new Predicate[rules.size()]));
			}
		};
		return specification;
	}
	
	/**
	 * 删除图书
	 * */
	@RequestMapping(value="/delete")
	@ResponseBody
	public Object delete(Integer id) {
		SysUser user = userUtils.getUser();
		journalUtil.save(user.getUsername(), "删除图书", "图书管理员");
		
		Book book = bookDAO.findById(id);
		Kind kind = kindDAO.findById(book.getKind().getId());
		kind.setNumber(kind.getNumber()-book.getNumber());
		kindDAO.save(kind);
		
		bookDAO.deleteById(id);
		return new EasyuiResult("删除成功");
	}
}



@Controller
@RequestMapping(value="/dept")
public class DeptController {
	@Autowired
	private DeptService deptDAO;
	@Autowired
	private TeacherService teacherDAO;
	@Autowired
	private UserUtils userUtils;
	@Autowired
	private JournalUtil journalUtil;
	
	@RequestMapping(value="/main")
	public String main() {
		return "dept/main";
	}
	
	/**
	 * 树形菜单
	 * */
	@RequestMapping("/dept_list")
	@ResponseBody
	public Object dept_list(Integer id) {
		List<Dept> list;
		if(id == null) {
			list = deptDAO.findByDeptIsNull();
		}else {
			list = deptDAO.findByDeptId(id);
		}
		List<HashMap<String, Object>> result = new ArrayList<>();
		return fun(list, result);
	}
	
	/**
	 * 改变子节点text
	 * */
	private Object fun(List<Dept> list, List<HashMap<String, Object>> result) {
		for (Dept dept : list) {
			HashMap<String, Object> map = new HashMap<>();
			map.put("id", dept.getId());
			map.put("text", dept.getName());
			List<HashMap<String, Object>> result1 = new ArrayList<>();
			List<Dept> children = dept.getChildren();
			map.put("children", fun(children, result1));
			result.add(map);
		}
		return result;
	}
	
	/**
	 * 判断是否是子节点
	 * */	
	@RequestMapping(value="/node")
	@ResponseBody
	public Boolean node(Integer id) {
		List<Dept> deptId = deptDAO.findByDeptId(id);
		if(deptId.size() > 0) {
			return false;
		}else {
			return true;
		}
	}

	@RequestMapping(value="/edit")
	public String edit(Integer parentId, Integer id, ModelMap map) {
		Dept model = new Dept();
		if(id != null) {
			model = deptDAO.findById(id);
			map.put("name", model.getTeacher().getName());
		}
		if(parentId != null) {
			model.setDept(deptDAO.findById(parentId));
		}
		List<Teacher> teacher = teacherDAO.findAll();
		map.put("teacher", teacher);
		map.put("model", model);
		return "dept/edit";
	}
	
	/**
	 * 显示最上一层父节点
	 * */
	@RequestMapping(value="/list")
	@ResponseBody
	public Object list() {
		List<Dept> list = deptDAO.findByDeptIsNull();
		return list;
	}
	
	/**
	 * 删除
	 * */
	@RequestMapping(value="/delete")
	@ResponseBody
	public Object delete(Integer id) {
		try {
			SysUser user = userUtils.getUser();
			journalUtil.save(user.getUsername(), "删除学院或班级", "图书管理员");
			deptDAO.deleteById(id);
			return new EasyuiResult("数据删除成功");
		} catch (Exception e) {
			return new EasyuiResult(false, "数据删除失败");
		}
	}
	
	/**
	 * combotree数据
	 * */
	@RequestMapping(value="/combotree")
	@ResponseBody
	public Object combotree(Integer id, Integer nodeId) {
		List<HashMap<String, Object>> result = new ArrayList<>();
		List<Dept> root;
		if(id == null) {
			root = deptDAO.findByDeptIsNull();
		}else {
			root = deptDAO.findByDeptId(id);
		}
		for(Dept dept: root) {
			if(nodeId != null && dept.getId() == nodeId) {
				continue;
			}
			HashMap<String, Object> node = new HashMap<>();
			node.put("id", dept.getId());
			node.put("text", dept.getName());
			if(deptDAO.findByDeptId(dept.getId()).size() > 0) {
				node.put("state", "closed");
				node.put("children", combotree(dept.getId(), nodeId));
			}
			result.add(node);
		}
		return result;
	}
	
	/**
	 * 判断学院或班级是否已添加
	 * */
	@RequestMapping(value="/name")
	@ResponseBody
	public Boolean username(String name) {
		Dept dept = deptDAO.findByName(name);
		if(dept == null) {
			return false;
		}else {
			return true;
		}
	}
	
	/**
	 * 添加
	 * */
	@RequestMapping(value = "/save")
	@ResponseBody
	public Object save(DeptForm form) {
		try {
			Dept model = new Dept();
			Integer id = form.getId();
			if(id != null) {
				model = deptDAO.findById(id);
			}else {
				SysUser user = userUtils.getUser();
				journalUtil.save(user.getUsername(), "添加学院或班级", "图书管理员");				
			}
			Integer parentId = form.getParentId();
			if(parentId != null) {
				model.setDept(deptDAO.findById(parentId));
			}
			BeanUtils.copyProperties(form, model,"id","dept");
			deptDAO.save(model);
			return new EasyuiResult("数据保存成功");
		} catch (Exception e) {
			return new EasyuiResult(false, "数据保存失败");
		}
	}
	
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2016855150

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值