基于javaweb+mysql的ssm+mavenoa办公管理系统(java+layui+ssm+maven+mysql+jsp)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SSM+Mavenoa办公管理系统(java+layui+ssm+maven+mysql+jsp)
一、项目运行 环境配置:
Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)
项目技术:
JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等
List<Menu> menuList = new ArrayList<>();
int roleId = Integer.parseInt(request.getParameter("roleId"));
List<Menu> menuByRoleId = menuService.getMenuByRoleId(roleId);
List<Menu> menuAll = menuService.getMenuAll(0, 999);
for(Menu menu : menuAll){
menu.setDisabled(!menu.isStart()); //是否禁用
for(Menu menu1: menuByRoleId){
if(menu.getId().equals(menu1.getId())){
//如果相等
menu.setSpread(true); //展开
menu.setChecked(true); //选中
//是否是一级
for(Menu menu2 : menuAll){
if(menu.getId().equals(menu2.getPid())){
menu.setChecked(false); //取消勾选
}
}
}
}
}
//整理成树型
for(Menu menu : menuAll){
if(menu.getPid().equals(-1)){
List<Menu> menuList1 = new ArrayList<>();
for(Menu menu1 : menuAll){
if(menu.getId().equals(menu1.getPid())){
menuList1.add(menu1);
}
}
if(menuList1.size() > 0){
menu.setChildren(menuList1);
}
menuList.add(menu);
}
}
return menuList;
}
}
public JSONObject resetPassword(HttpServletRequest request) {
JSONObject json = new JSONObject();
try {
//从前端获取数据
String employeeId = request.getParameter("employeeId");
String employeeNumber = request.getParameter("employeeNumber");
if (employeeId == null || employeeNumber == null) {
json.put("type", "error");
json.put("msg", "null");
return json;
}
//给初始密码加密
Object password = new SimpleHash("MD5", Password.EMPLOYEE_INIT_PASSWORD, ByteSource.Util.bytes(employeeNumber), 1024);
//保存进数据库
if (employeeDao.resetEmployeePassword(Integer.parseInt(employeeId), password.toString()) > 0) {
json.put("type", "success");
json.put("msg", "重置密码成功!");
return json;
}
} catch (Exception e) {
json.put("type", "error");
json.put("msg", MessageError.SYSTEM_ERROR);
System.out.println(e.getMessage());
return json;
}
json.put("type", "error");
json.put("msg", "重置密码失败!");
return json;
}
@Override
public JSONObject personageUpdateEmployee(HttpServletRequest request) {
JSONObject json = new JSONObject();
try {
Employee employee = JSONObject.parseObject(request.getParameter("employee"), Employee.class);
if (employeeDao.verifyEmployeeNumber(employee) > 0) {
json.put("type", "error");
json.put("msg", "该工号已被使用,请使用别的工号");
return json;
}
if (employeeDao.verifyEmployeePhone(employee) > 0) {
json.put("type", "error");
json.put("msg", "该手机号已被使用,请使用别的手机号");
return json;
}
if (employeeDao.updateEmployee(employee) > 0) {
processTask.setProcessTaskAssignee(hti.getAssignee());
processTask.setProcessTaskTenantId(hti.getTenantId());
Leave leave = leaveDao.selectLeaveByProcessInstanceId(hti.getExecutionId());
if (leave != null) processTask.setLeave(leave);
processTaskList.add(processTask);
}
json.put("type", "success");
json.put("msg", "获取数据成功!");
json.put("code", 0);
json.put("count", processTaskList.size());
json.put("data", processTaskList);
} catch (Exception e) {
json.put("type", "error");
json.put("msg", MessageError.SYSTEM_ERROR);
System.out.println(e.getMessage());
return json;
}
return json;
}
}
@Transactional
@Service("/employeeService")
public class EmployeeServiceImpl implements EmployeeService {
@Autowired
String processInstanceStr = request.getParameter("processInstance");
if (processInstanceStr == null) {
json.put("type", "error");
json.put("msg", "获取数据失败!");
return json;
}
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceStr).singleResult();
if (processInstance == null) {
json.put("type", "success");
json.put("msg", "已完成");
return json;
}
} catch (Exception e) {
json.put("type", "error");
json.put("msg", MessageError.SYSTEM_ERROR);
System.out.println(e.getMessage());
return json;
}
json.put("type", "error");
json.put("msg", "未完成");
return json;
}
@Override
public JSONObject historicTaskInstanceQuery(HttpServletRequest request) {
JSONObject json = new JSONObject();
try {
/** 从SecurityUtils中获取自身的工号*/
String number = SecurityUtils.getSubject().getPrincipal().toString();
if (number == null) {
json.put("type", "error");
json.put("msg", MessageError.SYSTEM_ERROR);
return json;
}
/** 获取进程引擎*/
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
List<ProcessTask> processTaskList = new ArrayList<>();
/** 得到历史的服务*/
HistoryService historyService = processEngine.getHistoryService();
List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery().taskAssignee(number).finished().list();
for (HistoricTaskInstance hti : list) {
ProcessTask processTask = new ProcessTask();
processTask.setProcessTaskId(hti.getId());
processTask.setProcessTaskName(hti.getName());
processTask.setProcessTaskExecutionId(hti.getExecutionId());
processTask.setCreateTime(hti.getCreateTime());
processTask.setProcessTaskAssignee(hti.getAssignee());
processTask.setProcessTaskTenantId(hti.getTenantId());
Leave leave = leaveDao.selectLeaveByProcessInstanceId(hti.getExecutionId());
return json;
}
} catch (Exception e) {
json.put("type", "error");
json.put("msg", MessageError.SYSTEM_ERROR);
System.out.println(e.getMessage());
return json;
}
json.put("type", "error");
json.put("msg", "打卡失败!");
return json;
}
@Override
public JSONObject punchingCardRecord(HttpServletRequest request) {
JSONObject json = new JSONObject();
try {
int page;
int limit;
String employeeNumber = SecurityUtils.getSubject().getPrincipal().toString(); //获取自身工号
String pageStr = request.getParameter("page");
String limitStr = request.getParameter("limit");
page = Integer.parseInt(pageStr); //转成int类型
limit = Integer.parseInt(limitStr);
List<Punch> punches = punchDao.selectPunchByEmployeeNumber(employeeNumber, (page - 1) * limit, limit, null, null);
json.put("type", "success");
json.put("msg", "获取数据成功");
json.put("code", 0);
json.put("count", punchDao.selectPunchCount(employeeNumber,null,null));
json.put("data", punches);
} catch (Exception e) {
json.put("type", "error");
json.put("msg", MessageError.SYSTEM_ERROR);
System.out.println(e.getMessage());
return json;
}
return request.getParameter("page");
}
/**
* 登录功能
*
* @param employee
* @param model
* @return
*/
@RequestMapping("/login")
public String login(Employee employee, Model model) {
Subject subject = SecurityUtils.getSubject();
// 查看是否又缓存记录
if (!subject.isAuthenticated()) {
// 如果没有缓存记录就进行登录
UsernamePasswordToken token = new UsernamePasswordToken(employee.getEmployeeNumber(), employee.getEmployeePassword());
// 记住密码?
token.setRememberMe(false);
try {
subject.login(token); // 进行登录校验
} catch (Exception e) {
model.addAttribute("employee", employee);
model.addAttribute("msg", "用户名或密码错误!");
return "../../login"; // 转发
}
}
return "redirect:/main/toMain"; // 重定向
}
/**
* 注销功能
*/
@RequestMapping("/logout")
@ResponseBody
public JSONObject logout() {
JSONObject json = new JSONObject();
Subject subject = SecurityUtils.getSubject();
subject.logout();
json.put("msg", "注销成功!");
return json;
@RequestMapping("/revocation")
@ResponseBody
public JSONObject revocation(HttpServletRequest request){
return noticeService.revocation(request);
}
/**
* 打开系统弹出最新的系统消息
* @param request
* @return
*/
@RequestMapping("/queryingSystemMessages")
@ResponseBody
public JSONObject queryingSystemMessages(HttpServletRequest request){
return noticeService.queryingSystemMessages(request);
}
/**
* 点击已阅读
* @param request
* @return
*/
@RequestMapping("/noticeRead")
@ResponseBody
public JSONObject noticeRead(HttpServletRequest request){
return noticeService.noticeRead(request);
}
}
menuList.add(menu);
}
}
return menuList;
}
/**
* 获取全部菜单信息
*
* @param request
* @return
*/
@RequestMapping("/getMenuAll")
@ResponseBody
public Map<String, Object> getMenuAll(HttpServletRequest request) {
Map<String, Object> map = new HashMap<>();
int page = Integer.parseInt(request.getParameter("page"));
int limit = Integer.parseInt(request.getParameter("limit"));
List<Menu> menuAll = menuService.getMenuAll((page - 1) * limit, limit);
map.put("code", 0);
map.put("msg", "");
map.put("count", menuService.getMenuAllCount());
map.put("data", menuAll);
return map;
}
/**
* 添加菜单
*
* @param request
* @return
*/
@RequestMapping("/addMenu")
@ResponseBody
public JSONObject addMenu(HttpServletRequest request) {
JSONObject json = new JSONObject();
try {
Menu menu = JSONObject.parseObject(request.getParameter("menu"), Menu.class);
if (menuService.addMenu(menu) > 0) {
json.put("type", "success");
json.put("msg", "添加菜单成功!");
return json;
}
} catch (Exception e) {
json.put("tpe", "error");
@RequestMapping("/stationery")
@Controller
public class StationeryController {
@Autowired
private StationeryService stationeryService;
/**
* 获取办公用品全部信息
*
* @param request
* @return
*/
@RequestMapping("/getStationeryAll")
@ResponseBody
public JSONObject getStationeryAll(HttpServletRequest request) {
return stationeryService.getStationeryAll(request);
}
/**
* 添加办公用品
*
* @param request
* @return
*/
@RequestMapping("/addStationery")
@ResponseBody
public JSONObject addStationery(HttpServletRequest request) {
return stationeryService.addStationery(request);
}
/**
* 修改办公用品信息
*
* @param request
@Transactional
@Service("/processService")
public class ProcessServiceImpl implements ProcessService {
@Autowired
private LeaveDao leaveDao;
@Override
public JSONObject getHistoricProcessInstanceAll(HttpServletRequest request) {
JSONObject json = new JSONObject();
try {
/**
* 分页处理
*/
String page = request.getParameter("page");
String limit = request.getParameter("limit");
if (page == null || limit == null) {
json.put("type", "error");
json.put("msg", "获取分页数据失败!");
return json;
}
int pageInt = Integer.parseInt(page);
for (Task hti : list) {
ProcessTask processTask = new ProcessTask();
processTask.setProcessTaskId(hti.getId());
processTask.setProcessTaskName(hti.getName());
processTask.setProcessTaskExecutionId(hti.getExecutionId());
processTask.setCreateTime(hti.getCreateTime());
processTask.setProcessTaskAssignee(hti.getAssignee());
processTask.setProcessTaskTenantId(hti.getTenantId());
Leave leave = leaveDao.selectLeaveByProcessInstanceId(hti.getExecutionId());
processTask.setLeave(leave);
processTaskList.add(processTask);
}
json.put("type", "success");
json.put("msg", "获取数据成功!");
json.put("code", 0);
json.put("count", processTaskList.size());
json.put("data", processTaskList);
} catch (Exception e) {
json.put("type", "error");
json.put("msg", MessageError.SYSTEM_ERROR);
System.out.println(e.getMessage());
return json;
}
return json;
}
@Override
public JSONObject isProcess(HttpServletRequest request) {
JSONObject json = new JSONObject();
try {
String processInstanceStr = request.getParameter("processInstance");
if (processInstanceStr == null) {
json.put("type", "error");
json.put("msg", "获取数据失败!");
return json;
}
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceStr).singleResult();
if (processInstance == null) {
json.put("type", "success");
json.put("msg", "已完成");
return json;
}
} catch (Exception e) {
json.put("type", "error");
json.put("msg", MessageError.SYSTEM_ERROR);
page = Integer.parseInt(pageStr); //转成int类型
limit = Integer.parseInt(limitStr);
List<Punch> punches = punchDao.selectPunchByEmployeeNumber(employeeNumber, (page - 1) * limit, limit, null, null);
json.put("type", "success");
json.put("msg", "获取数据成功");
json.put("code", 0);
json.put("count", punchDao.selectPunchCount(employeeNumber,null,null));
json.put("data", punches);
} catch (Exception e) {
json.put("type", "error");
json.put("msg", MessageError.SYSTEM_ERROR);
System.out.println(e.getMessage());
return json;
}
return json;
}
@Override
public JSONObject initPunch(HttpServletRequest request) {
JSONObject json = new JSONObject();
try {
String employeeNumber = SecurityUtils.getSubject().getPrincipal().toString(); //得到自身工号
if(employeeNumber.equals("100001")){
employeeNumber = ""; //赋予管理员所有权限
}
//自定义时间格式
SimpleDateFormat formatLeading = new SimpleDateFormat("yyyy-MM-dd");
String punchDay = formatLeading.format(new Date());
List<Punch> punches = punchDao.selectPunchByPunchDayAndEmployeeNumber(punchDay, employeeNumber);
if (punches == null) {
json.put("type", "error");
json.put("msg", "获取数据失败!");
return json;
}
json.put("type", "success");
json.put("msg", "获取数据成功!");
json.put("data", punches);
} catch (Exception e) {
json.put("type", "error");
json.put("msg", MessageError.SYSTEM_ERROR);
System.out.println(e.getMessage());
return json;
public JSONObject updateNotice(HttpServletRequest request) {
return noticeService.updateNotice(request);
}
/**
* 已阅读系统公告
*
* @param request
* @return
*/
@RequestMapping("/flagNotice")
@ResponseBody
public JSONObject flagNotice(HttpServletRequest request) {
return noticeService.flagNotice(request);
}
/**
* 批量发布系统公告
*
* @param request
* @return
*/
@RequestMapping("/bulkReleaseNotice")
@ResponseBody
public JSONObject bulkReleaseNotice(HttpServletRequest request) {
return noticeService.bulkReleaseNotice(request);
}
/**
* 查看已发布公告
* @param request
* @return
*/
@RequestMapping("/publishedAnnouncements")
@ResponseBody
public JSONObject publishedAnnouncements(HttpServletRequest request){
return noticeService.publishedAnnouncements(request);
}
/**
* 撤销发布的系统公告
* @param request
* @return
*/
@RequestMapping("/revocation")
@ResponseBody
public JSONObject revocation(HttpServletRequest request){
return noticeService.revocation(request);
@Autowired
private EmployeeService employeeService;
/**
* 获取雇员全部信息
*
* @param request
* @return
*/
@RequestMapping("/getEmployeeAll")
@ResponseBody
public JSONObject getEmployeeAll(HttpServletRequest request) {
return employeeService.getEmployeeAll(request);
}
/**
* 添加雇员
*
* @param request
* @return
*/
@RequestMapping("/addEmployee")
@ResponseBody
public JSONObject addEmployee(HttpServletRequest request) {
return employeeService.addEmployee(request);
}
/**
* 修改雇员信息
*
* @param request
* @return
*/
@RequestMapping("/updateEmployee")
@ResponseBody
public JSONObject updateEmployee(HttpServletRequest request) {
return employeeService.updateEmployee(request);
}
/**
* 删除雇员
*
* @param request
* @return
*/
@RequestMapping("/deleteEmployee")
@ResponseBody
public JSONObject deleteEmployee(HttpServletRequest request) {
return employeeService.deleteEmployee(request);
}
@Controller
@RequestMapping("/role")
public class RoleController {
@Autowired
private RoleService roleService;
/**
* 页面跳转
*
* @param request
* @return
*/
@RequestMapping("/toPage")
public String toPage(HttpServletRequest request) {
String url = "sys/role/role";
String page = request.getParameter("page");
if (page != null) {
url = page;
}
return url;
}
/**
* 添加角色
*
* @param request
* @return
*/
@RequestMapping("/addRole")
@ResponseBody
public JSONObject addRole(HttpServletRequest request) {
JSONObject json = new JSONObject();
try {
Role role = JSONObject.parseObject(request.getParameter("role"), Role.class);
@Transactional
@Service("/leaveService")
public class LeaveServiceImpl implements LeaveService {
@Autowired
private LeaveDao leaveDao;
@Override
public JSONObject addLeave(HttpServletRequest request) {
JSONObject json = new JSONObject();
try {
/** 从前端获取数据*/
String leaveStr = request.getParameter("leave");
if (leaveStr == null) {
json.put("type", "error");
json.put("msg", "获取请假信息失败!");
return json;
}
/** 对表单校验*/
Leave leave = JSONObject.parseObject(leaveStr, Leave.class);
if (leaveDao.verifyLeave(leave) <= 0) {
json.put("type", "error");
json.put("msg", "填写信息不正确!");
return json;
}
/** 添加请假单*/
if (leaveDao.addLeave(leave) > 0) {
json.put("type", "success");
json.put("msg", "请假单已发送给部门经理,审核完后在查收!");
return json;
}
} catch (Exception e) {
json.put("type", "error");
json.put("msg", MessageError.SYSTEM_ERROR);
System.out.println(e.getMessage());
//手动开启事务回滚
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
String permissionsIdList = request.getParameter("permissionsIdList");
if (permissionsIdList == null) {
json.put("type", "error");
json.put("msg", "获取数据为空!");
return json;
}
Integer[] integers = JSONObject.parseObject(permissionsIdList, Integer[].class);
if (permissionsDao.deletePermissions(integers) > 0) {
json.put("type", "success");
json.put("msg", "删除权限成功!");
return json;
}
} catch (Exception e) {
json.put("type", "error");
json.put("msg", MessageError.SYSTEM_ERROR);
System.out.println(e.getMessage());
return json;
}
json.put("type", "error");
json.put("msg", "删除权限失败!");
return json;
}
@Override
public List<Menu> getPermissionsDtree(HttpServletRequest request) {
List<Menu> menuList = new ArrayList<>();
int roleId = Integer.parseInt(request.getParameter("roleId"));
//获取全部的权限信息
List<Permissions> permissionsList = permissionsDao.selectPermissionsAll(0, 99);
//根据角色ID获取权限ID
Set<Integer> permissionsId = permissionsDao.selectPermissionsByRoleId(roleId);
//转成List<Menu>
List<Menu> menuList1 = new ArrayList<>();
for (Permissions permissions : permissionsList) {
Menu menu = new Menu();
menu.setId(permissions.getPermissionsId()); //ID
menu.setPid(permissions.getPermissionsPid()); //PID
menu.setTitle(permissions.getPermissionsDesc()); //名称
menu.setDisabled(!(permissions.getPermissionsStart() > 0)); //是否禁用
menu.setSpread(false); //不展开
menu.setChecked(false); //不选中
for (Integer i : permissionsId) {
if (permissions.getPermissionsId().equals(i)) {
menu.setSpread(true); //展开
menu.setChecked(true); //选中
*
* @param request
* @return
*/
@RequestMapping("/updateEmployee")
@ResponseBody
public JSONObject updateEmployee(HttpServletRequest request) {
return employeeService.updateEmployee(request);
}
/**
* 删除雇员
*
* @param request
* @return
*/
@RequestMapping("/deleteEmployee")
@ResponseBody
public JSONObject deleteEmployee(HttpServletRequest request) {
return employeeService.deleteEmployee(request);
}
/**
* 修改角色
*
* @param request
* @return
*/
@RequestMapping("/updateRole")
@ResponseBody
public JSONObject updateRole(HttpServletRequest request) {
return employeeService.updateRole(request);
}
/**
* 修改部门
*
* @param request
* @return
*/
@RequestMapping("/updateDepartment")
@ResponseBody
public JSONObject updateDepartment(HttpServletRequest request) {
return employeeService.updateDepartment(request);
}