赞
踩
基于javaweb+mysql的ssm+maven高校后勤报修系统(java+ssm+jsp+mysql)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的SSM+Maven高校后勤报修系统(java+ssm+jsp+mysql)
管理员
admin 12346
学生
a1 123456
a2 123456
a3 123456
后勤人员
a1 123456
a2 123456
a3 123456
登录:
http://localhost:8080/houqinbaoxiu/jsp/login.jsp
图片存放路径: src\main\webapp\upload,项目全路径不能有中文
流程:
1 学生报修
2 管理员指派后勤人员
3 后勤确认结果
// if(false) // return R.error(511,"永远不会进入"); //根据字段查询是否有相同数据 Wrapper<DictionaryEntity> queryWrapper = new EntityWrapper<DictionaryEntity>() .notIn("id",dictionary.getId()) .eq("dic_code", dictionary.getDicCode()) .eq("index_name", dictionary.getIndexName()) ; if(dictionary.getDicCode().contains("_erji_types")){ queryWrapper.eq("super_id",dictionary.getSuperId()); } logger.info("sql语句:"+queryWrapper.getSqlSegment()); DictionaryEntity dictionaryEntity = dictionaryService.selectOne(queryWrapper); if(dictionaryEntity==null){ dictionaryService.updateById(dictionary);//根据id更新 //如果字典表修改数据的话,把数据再重新查出,放入监听器中 List<DictionaryEntity> dictionaryEntities = dictionaryService.selectList(new EntityWrapper<DictionaryEntity>()); ServletContext servletContext = request.getServletContext(); Map<String, Map<Integer,String>> map = new HashMap<>(); for(DictionaryEntity d :dictionaryEntities){ Map<Integer, String> m = map.get(d.getDicCode()); if(m ==null || m.isEmpty()){ m = new HashMap<>(); } m.put(d.getCodeIndex(),d.getIndexName()); map.put(d.getDicCode(),m); } servletContext.setAttribute("dictionaryMap",map); return R.ok(); }else { return R.error(511,"表中有相同数据"); } } /** * 删除 */
/** * 耗材 * 后端接口 * @email */ @RestController @Controller @RequestMapping("/haocai") public class HaocaiController { private static final Logger logger = LoggerFactory.getLogger(HaocaiController.class); @Autowired private HaocaiService haocaiService; @Autowired private TokenService tokenService; @Autowired private DictionaryService dictionaryService; //级联表service @Autowired private XueshengService xueshengService; @Autowired private HouqinrenyuanService houqinrenyuanService; /** * 后端列表 */ @RequestMapping("/page") public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){ logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
/** * 学生 * 后端接口 * @email */ @RestController @Controller @RequestMapping("/xuesheng") public class XueshengController { private static final Logger logger = LoggerFactory.getLogger(XueshengController.class); @Autowired private XueshengService xueshengService; @Autowired private TokenService tokenService; @Autowired private DictionaryService dictionaryService; //级联表service @Autowired private HouqinrenyuanService houqinrenyuanService; /** * 后端列表 */ @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("xueshengId",request.getSession().getAttribute("userId")); else if("后勤人员".equals(role)) params.put("houqinrenyuanId",request.getSession().getAttribute("userId")); if(params.get("orderBy")==null || params.get("orderBy")==""){ params.put("orderBy","id"); } PageUtils page = xueshengService.queryPage(params);
* 列表 */ @RequestMapping("/list") public R list( UsersEntity user){ EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>(); ew.allEq(MPUtil.allEQMapPre( user, "user")); return R.ok().put("data", usersService.selectListView(ew)); } /** * 信息 */ @RequestMapping("/info/{id}") public R info(@PathVariable("id") String id){ UsersEntity user = usersService.selectById(id); return R.ok().put("data", user); } /** * 获取用户的session用户信息 */ @RequestMapping("/session") public R getCurrUser(HttpServletRequest request){ Integer id = (Integer)request.getSession().getAttribute("userId"); UsersEntity user = usersService.selectById(id); return R.ok().put("data", user); } /** * 保存 */ @PostMapping("/save") public R save(@RequestBody UsersEntity user){ // ValidatorUtils.validateEntity(user); if(usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) { return R.error("用户已存在"); } user.setPassword("123456"); usersService.insert(user); return R.ok();
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("xueshengId",request.getSession().getAttribute("userId")); else if("后勤人员".equals(role)) params.put("houqinrenyuanId",request.getSession().getAttribute("userId")); if(params.get("orderBy")==null || params.get("orderBy")==""){ params.put("orderBy","id"); } PageUtils page = houqinrenyuanService.queryPage(params); //字典表数据转换 List<HouqinrenyuanView> list =(List<HouqinrenyuanView>)page.getList(); for(HouqinrenyuanView 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); HouqinrenyuanEntity houqinrenyuan = houqinrenyuanService.selectById(id); if(houqinrenyuan !=null){ //entity转view HouqinrenyuanView view = new HouqinrenyuanView(); BeanUtils.copyProperties( houqinrenyuan , view );//把实体数据重构到view中 //修改对应字典表字段 dictionaryService.dictionaryConvert(view, request); return R.ok().put("data", view); }else { return R.error(511,"查不到数据"); }
/** * 登录相关 */ @RequestMapping("config") @RestController public class ConfigController{ @Autowired private ConfigService configService; /** * 列表 */ @RequestMapping("/page") public R page(@RequestParam Map<String, Object> params,ConfigEntity config){ EntityWrapper<ConfigEntity> ew = new EntityWrapper<ConfigEntity>(); PageUtils page = configService.queryPage(params); return R.ok().put("data", page); } /** * 列表 */ @IgnoreAuth @RequestMapping("/list") public R list(@RequestParam Map<String, Object> params,ConfigEntity config){ EntityWrapper<ConfigEntity> ew = new EntityWrapper<ConfigEntity>(); PageUtils page = configService.queryPage(params); return R.ok().put("data", page); } /** * 信息 */ @RequestMapping("/info/{id}") public R info(@PathVariable("id") String id){ ConfigEntity config = configService.selectById(id); return R.ok().put("data", config); } /** * 详情
} if(StringUtil.isNotEmpty(String.valueOf(thisTable.get("types")))){//当前表类型 thisTable.put("types",String.valueOf(thisTable.get("types")).split(",")); if(StringUtil.isEmpty(one)){ one ="thisTypes0"; }else{ if(StringUtil.isEmpty(two)){ two ="thisTypes0"; } } } if(isJoinTableFlag){//级联表类型 Map<String, Object> joinTable = (Map<String, Object>) params.get("joinTable"); if(StringUtil.isNotEmpty(String.valueOf(joinTable.get("types")))){ joinTable.put("types",String.valueOf(joinTable.get("types")).split(",")); if(StringUtil.isEmpty(one)){ one ="joinTypes0"; }else{ if(StringUtil.isEmpty(two)){ two ="joinTypes0"; } } } } List<Map<String, Object>> result = commonService.barCount(params); List<String> xAxis = new ArrayList<>();//报表x轴 List<List<String>> yAxis = new ArrayList<>();//y轴 List<String> legend = new ArrayList<>();//标题 if(StringUtil.isEmpty(two)){//不包含第二列 List<String> yAxis0 = new ArrayList<>(); yAxis.add(yAxis0); legend.add("数值"); for(Map<String, Object> map :result){ String oneValue = String.valueOf(map.get(one)); String value = String.valueOf(map.get("value")); xAxis.add(oneValue); yAxis0.add(value); } }else{//包含第二列 Map<String, HashMap<String, String>> dataMap = new LinkedHashMap<>(); if(StringUtil.isNotEmpty(two)){ for(Map<String, Object> map :result){ String oneValue = String.valueOf(map.get(one)); String twoValue = String.valueOf(map.get(two)); String value = String.valueOf(map.get("value")); if(!legend.contains(twoValue)){
haocaiList.add(haocaiEntity); //把要查询是否重复的字段放入map中 //耗材编号 if(seachFields.containsKey("haocaiUuidNumber")){ List<String> haocaiUuidNumber = seachFields.get("haocaiUuidNumber"); haocaiUuidNumber.add(data.get(0));//要改的 }else{ List<String> haocaiUuidNumber = new ArrayList<>(); haocaiUuidNumber.add(data.get(0));//要改的 seachFields.put("haocaiUuidNumber",haocaiUuidNumber); } } //查询是否重复 //耗材编号 List<HaocaiEntity> haocaiEntities_haocaiUuidNumber = haocaiService.selectList(new EntityWrapper<HaocaiEntity>().in("haocai_uuid_number", seachFields.get("haocaiUuidNumber"))); if(haocaiEntities_haocaiUuidNumber.size() >0 ){ ArrayList<String> repeatFields = new ArrayList<>(); for(HaocaiEntity s:haocaiEntities_haocaiUuidNumber){ repeatFields.add(s.getHaocaiUuidNumber()); } return R.error(511,"数据库的该表中的 [耗材编号] 字段已经存在 存在数据为:"+repeatFields.toString()); } haocaiService.insertBatch(haocaiList); return R.ok(); } } } }catch (Exception e){ e.printStackTrace(); return R.error(511,"批量插入数据异常,请联系管理员"); } }
/** * 权限(Token)验证 */ @Component public class AuthorizationInterceptor implements HandlerInterceptor { public static final String LOGIN_TOKEN_KEY = "Token"; @Autowired private TokenService tokenService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //支持跨域请求 response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Credentials", "true"); response.setHeader("Access-Control-Allow-Headers", "x-requested-with,request-source,Token, Origin,imgType, Content-Type, cache-control,postman-token,Cookie, Accept,authorization"); response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin")); IgnoreAuth annotation; if (handler instanceof HandlerMethod) { annotation = ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class); } else { return true; } //从header中获取token String token = request.getHeader(LOGIN_TOKEN_KEY); /** * 不需要验证权限的方法直接放过
dictionaryService.dictionaryConvert(view, request); return R.ok().put("data", view); }else { return R.error(511,"查不到数据"); } } /** * 后端保存 */ @RequestMapping("/save") public R save(@RequestBody XueshengEntity xuesheng, HttpServletRequest request){ logger.debug("save方法:,,Controller:{},,xuesheng:{}",this.getClass().getName(),xuesheng.toString()); String role = String.valueOf(request.getSession().getAttribute("role")); if(false) return R.error(511,"永远不会进入"); Wrapper<XueshengEntity> queryWrapper = new EntityWrapper<XueshengEntity>() .eq("username", xuesheng.getUsername()) .or() .eq("xuesheng_phone", xuesheng.getXueshengPhone()) .or() .eq("xuesheng_id_number", xuesheng.getXueshengIdNumber()) ; logger.info("sql语句:"+queryWrapper.getSqlSegment()); XueshengEntity xueshengEntity = xueshengService.selectOne(queryWrapper); if(xueshengEntity==null){ xuesheng.setCreateTime(new Date()); xuesheng.setPassword("123456"); xueshengService.insert(xuesheng); return R.ok(); }else { return R.error(511,"账户或者学生手机号或者学生身份证号已经被使用"); } } /**
return R.error(511,"查不到数据");
}
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
}
/** * 权限(Token)验证 */ @Component public class AuthorizationInterceptor implements HandlerInterceptor { public static final String LOGIN_TOKEN_KEY = "Token"; @Autowired private TokenService tokenService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //支持跨域请求 response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Credentials", "true"); response.setHeader("Access-Control-Allow-Headers", "x-requested-with,request-source,Token, Origin,imgType, Content-Type, cache-control,postman-token,Cookie, Accept,authorization"); response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin")); IgnoreAuth annotation; if (handler instanceof HandlerMethod) { annotation = ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class); } else { return true; } //从header中获取token String token = request.getHeader(LOGIN_TOKEN_KEY); /** * 不需要验证权限的方法直接放过 */ if(annotation!=null) {
// return R.error(511,"永远不会进入"); //根据字段查询是否有相同数据 Wrapper<HouqinrenyuanEntity> queryWrapper = new EntityWrapper<HouqinrenyuanEntity>() .notIn("id",houqinrenyuan.getId()) .andNew() .eq("username", houqinrenyuan.getUsername()) .or() .eq("houqinrenyuan_phone", houqinrenyuan.getHouqinrenyuanPhone()) .or() .eq("houqinrenyuan_id_number", houqinrenyuan.getHouqinrenyuanIdNumber()) ; logger.info("sql语句:"+queryWrapper.getSqlSegment()); HouqinrenyuanEntity houqinrenyuanEntity = houqinrenyuanService.selectOne(queryWrapper); if("".equals(houqinrenyuan.getHouqinrenyuanPhoto()) || "null".equals(houqinrenyuan.getHouqinrenyuanPhoto())){ houqinrenyuan.setHouqinrenyuanPhoto(null); } if(houqinrenyuanEntity==null){ houqinrenyuanService.updateById(houqinrenyuan);//根据id更新 return R.ok(); }else { return R.error(511,"账户或者后勤人员手机号或者后勤人员身份证号已经被使用"); } } /** * 删除 */ @RequestMapping("/delete") public R delete(@RequestBody Integer[] ids){ logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString()); houqinrenyuanService.deleteBatchIds(Arrays.asList(ids)); return R.ok(); } /** * 批量上传 */
} /** * 单列求和 */ @RequestMapping("/cal/{tableName}/{columnName}") @IgnoreAuth public R cal(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) { Map<String, Object> params = new HashMap<String, Object>(); params.put("table", tableName); params.put("column", columnName); Map<String, Object> result = commonService.selectCal(params); return R.ok().put("data", result); } /** * 分组统计 */ @RequestMapping("/group/{tableName}/{columnName}") @IgnoreAuth public R group(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) { Map<String, Object> params = new HashMap<String, Object>(); params.put("table", tableName); params.put("column", columnName); List<Map<String, Object>> result = commonService.selectGroup(params); return R.ok().put("data", result); } /** * (按值统计) */ @RequestMapping("/value/{tableName}/{xColumnName}/{yColumnName}") @IgnoreAuth public R value(@PathVariable("tableName") String tableName, @PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName) { Map<String, Object> params = new HashMap<String, Object>(); params.put("table", tableName); params.put("xColumn", xColumnName); params.put("yColumn", yColumnName); List<Map<String, Object>> result = commonService.selectValue(params); return R.ok().put("data", result); }
return R.error("账号不存在"); } return R.ok(); } /** * 获取用户的session用户信息 */ @RequestMapping("/session") public R getCurrHouqinrenyuan(HttpServletRequest request){ Integer id = (Integer)request.getSession().getAttribute("userId"); HouqinrenyuanEntity houqinrenyuan = houqinrenyuanService.selectById(id); if(houqinrenyuan !=null){ //entity转view HouqinrenyuanView view = new HouqinrenyuanView(); BeanUtils.copyProperties( houqinrenyuan , view );//把实体数据重构到view中 //修改对应字典表字段 dictionaryService.dictionaryConvert(view, request); return R.ok().put("data", view); }else { return R.error(511,"查不到数据"); } } /** * 退出 */ @GetMapping(value = "logout") public R logout(HttpServletRequest request) { request.getSession().invalidate(); return R.ok("退出成功"); } }
/** * 报修 * 后端接口 * @email */ @RestController @Controller @RequestMapping("/baoxiu") public class BaoxiuController { private static final Logger logger = LoggerFactory.getLogger(BaoxiuController.class); @Autowired private BaoxiuService baoxiuService; @Autowired private TokenService tokenService; @Autowired private DictionaryService dictionaryService; //级联表service @Autowired private XueshengService xueshengService; @Autowired private HouqinrenyuanService houqinrenyuanService; /** * 后端列表 */ @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))
List<String> xueshengPhone = new ArrayList<>(); xueshengPhone.add(data.get(0));//要改的 seachFields.put("xueshengPhone",xueshengPhone); } //学生身份证号 if(seachFields.containsKey("xueshengIdNumber")){ List<String> xueshengIdNumber = seachFields.get("xueshengIdNumber"); xueshengIdNumber.add(data.get(0));//要改的 }else{ List<String> xueshengIdNumber = new ArrayList<>(); xueshengIdNumber.add(data.get(0));//要改的 seachFields.put("xueshengIdNumber",xueshengIdNumber); } } //查询是否重复 //账户 List<XueshengEntity> xueshengEntities_username = xueshengService.selectList(new EntityWrapper<XueshengEntity>().in("username", seachFields.get("username"))); if(xueshengEntities_username.size() >0 ){ ArrayList<String> repeatFields = new ArrayList<>(); for(XueshengEntity s:xueshengEntities_username){ repeatFields.add(s.getUsername()); } return R.error(511,"数据库的该表中的 [账户] 字段已经存在 存在数据为:"+repeatFields.toString()); } //学生手机号 List<XueshengEntity> xueshengEntities_xueshengPhone = xueshengService.selectList(new EntityWrapper<XueshengEntity>().in("xuesheng_phone", seachFields.get("xueshengPhone"))); if(xueshengEntities_xueshengPhone.size() >0 ){ ArrayList<String> repeatFields = new ArrayList<>(); for(XueshengEntity s:xueshengEntities_xueshengPhone){ repeatFields.add(s.getXueshengPhone()); } return R.error(511,"数据库的该表中的 [学生手机号] 字段已经存在 存在数据为:"+repeatFields.toString()); } //学生身份证号 List<XueshengEntity> xueshengEntities_xueshengIdNumber = xueshengService.selectList(new EntityWrapper<XueshengEntity>().in("xuesheng_id_number", seachFields.get("xueshengIdNumber"))); if(xueshengEntities_xueshengIdNumber.size() >0 ){ ArrayList<String> repeatFields = new ArrayList<>(); for(XueshengEntity s:xueshengEntities_xueshengIdNumber){ repeatFields.add(s.getXueshengIdNumber()); } return R.error(511,"数据库的该表中的 [学生身份证号] 字段已经存在 存在数据为:"+repeatFields.toString()); } xueshengService.insertBatch(xueshengList); return R.ok(); } }
//修改对应字典表字段 dictionaryService.dictionaryConvert(view, request); return R.ok().put("data", view); }else { return R.error(511,"查不到数据"); } } /** * 后端保存 */ @RequestMapping("/save") public R save(@RequestBody HaocaiEntity haocai, HttpServletRequest request){ logger.debug("save方法:,,Controller:{},,haocai:{}",this.getClass().getName(),haocai.toString()); String role = String.valueOf(request.getSession().getAttribute("role")); if(false) return R.error(511,"永远不会进入"); Wrapper<HaocaiEntity> queryWrapper = new EntityWrapper<HaocaiEntity>() .eq("haocai_uuid_number", haocai.getHaocaiUuidNumber()) .eq("haocai_name", haocai.getHaocaiName()) .eq("haocai_types", haocai.getHaocaiTypes()) .eq("haocai_kucun_number", haocai.getHaocaiKucunNumber()) ; logger.info("sql语句:"+queryWrapper.getSqlSegment()); HaocaiEntity haocaiEntity = haocaiService.selectOne(queryWrapper); if(haocaiEntity==null){ haocai.setInsertTime(new Date()); haocai.setCreateTime(new Date()); haocaiService.insert(haocai); return R.ok(); }else { return R.error(511,"表中有相同数据"); } } /** * 后端修改 */ @RequestMapping("/update") public R update(@RequestBody HaocaiEntity haocai, HttpServletRequest request){ logger.debug("update方法:,,Controller:{},,haocai:{}",this.getClass().getName(),haocai.toString());
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。