• Springboot物资发放管理系统


    作者主页:夜未央5788

     简介:Java领域优质创作者、Java项目、学习资料、技术互助

    文末获取源码

    项目介绍

    本项目有物资管理员与普通员工两种角色;
    系统代码质量高,功能强大,带课程设计报告。

    普通员工具有以下功能:申领物资;撤销申请;查看待领任务。
    (1)申领物资:提交物资领取申请。

    (2)撤销申请:对于物资管理员还未审核的申请,可以撤销;已审核的申请则不能撤销。

    (3)查看待领任务:查看已通过审核的申请和物资管理员发起的领取任务。

    物资管理员拥有以下功能:物资信息管理;物资入库;物资发放;查看物资库存;审批申请。

    (1)物资信息管理:添加物资类别;添加、修改、删除物资信息;按名称或类别或编号查询物资信息。

    (2)物资入库:增加物资的库存量;可以按入库时间来查看入库信息。

    (3)物资发放:向指定人发放一定数量的物资,并在其领取后进行登记。

    (4)查看物资库存:查看所有物资的库存量。
     

    (5)审批申请:查看和审批物资领取申请,同意则员工可以领取物资,不同意则驳回该申请,不允许领取物资。

    环境需要

    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.数据库:MySql 8.0/5.7版本;

    6.是否Maven项目:是;

    技术栈

    springboot+mysql+layui+CSS+JavaScript

    使用说明

    1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
    2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令,然后运行;
    3. 将项目中application.properties配置文件中的数据库配置改为自己的配置;

    4. 运行项目,在浏览器中输入http://localhost:8080 访问

    运行截图

    管理员角色

     

     

     

    普通员工

     

     

     

    功能结构图

     

     

     

    相关代码

    首页控制器

    1. @Controller
    2. @RequestMapping("/")
    3. public class IndexController {
    4. @Resource
    5. private IndexService indexService;
    6. @Resource
    7. private MenuService menuService;
    8. @RequestMapping(value = "/")
    9. public String index() {
    10. return "/login";
    11. }
    12. @RequestMapping(value = "/login.html")
    13. public String toLogin() {
    14. return "/login";
    15. }
    16. @RequestMapping(value = "/home.html")
    17. public String home() {
    18. return "/home";
    19. }
    20. @RequestMapping(value = "/welcome.html")
    21. public String welcome() {
    22. return "/welcome";
    23. }
    24. /**
    25. * 登录
    26. *
    27. * @param request
    28. * @param session
    29. * @return
    30. */
    31. @ResponseBody
    32. @RequestMapping(value = "/login.action")
    33. public String login(@RequestBody Map<String, String> request, HttpSession session) {
    34. Map<String, Object> map = new HashMap<>();
    35. String uid = request.get("uid");
    36. String password = request.get("password");
    37. System.out.println("uid:" + uid + "--pwd:" + password);
    38. User user = indexService.findUser(uid, password);
    39. if (user != null) {
    40. session.setAttribute("uid", uid);
    41. session.setAttribute("uname", user.getUname());
    42. session.setAttribute("utype", user.getUtype());
    43. map.put("msg","登录成功");
    44. map.put("success", true);
    45. } else {
    46. map.put("success", false);
    47. map.put("msg", "账号或密码错误!");
    48. }
    49. return JSON.toJSONString(map);
    50. }
    51. /**
    52. * 加载菜单列表
    53. *
    54. * @param session
    55. * @return
    56. */
    57. @ResponseBody
    58. @RequestMapping(value = "/api/loadMenuList")
    59. public String loadMenuList(HttpSession session) {
    60. Integer utype = (Integer) session.getAttribute("utype");
    61. String initJson = menuService.loadMenuList(utype);
    62. return initJson;
    63. }
    64. /**
    65. * 退出登录
    66. *
    67. * @param session
    68. * @return 返回到登录界面
    69. */
    70. @RequestMapping(value = "/logout.action")
    71. public String logout(HttpSession session) {
    72. // 清空session中的属性
    73. session.removeAttribute("uid");
    74. session.removeAttribute("uname");
    75. session.removeAttribute("utype");
    76. //让session无效
    77. session.invalidate();
    78. return "redirect:/login.html";
    79. }
    80. }

    员工控制器

    1. @Controller
    2. @RequestMapping("/staff")
    3. public class StaffController {
    4. @Resource
    5. private RequisitionService requisitionService;
    6. @RequestMapping(value = "/apply.html")
    7. public String apply() {
    8. return "/staff/apply.html";
    9. }
    10. /**
    11. * 查看申领信息,只能查看自己的
    12. * @param rv
    13. * @param request
    14. * @return
    15. */
    16. @ResponseBody
    17. @RequestMapping(value = "/apply/list")
    18. public DataGridViewResult applyList(RequisitionVo rv,HttpServletRequest request) {
    19. String uname = (String)request.getSession().getAttribute("uname");
    20. rv.setRtaker(uname);
    21. // 设置分页信息
    22. PageHelper.startPage(rv.getPage(), rv.getLimit());
    23. // 查询
    24. List<Requisition> list = requisitionService.findRequisitionList(rv);
    25. // 创建分页对象
    26. PageInfo<Requisition> pageInfo = new PageInfo<>(list);
    27. // 按接口要求返回数据
    28. DataGridViewResult data = new DataGridViewResult(pageInfo.getTotal(), pageInfo.getList());
    29. return data;
    30. }
    31. /**
    32. * 提交申请
    33. *
    34. * @param rt
    35. * @return
    36. */
    37. @ResponseBody
    38. @RequestMapping(value = "/apply/add")
    39. public String addPutinInfo(Requisition rt, HttpServletRequest request) {
    40. HashMap<String, Object> map = new HashMap<>();
    41. // 获取领用人
    42. String uname = (String) request.getSession().getAttribute("uname");
    43. rt.setRtaker(uname);
    44. // 生成时间戳,保证主键的唯一性
    45. Date date = new Date();
    46. String rid = String.valueOf(date.getTime());
    47. rt.setRid(rid);
    48. rt.setRstatus("申请中");
    49. rt.setRtype("申请发放");
    50. System.out.println(rt);
    51. boolean result = requisitionService.add(rt);
    52. if (result) {
    53. map.put("success", true);
    54. map.put("msg", "提交申请成功!");
    55. } else {
    56. map.put("success", false);
    57. map.put("msg", "提交申请失败,请稍后再试!");
    58. }
    59. return JSON.toJSONString(map);
    60. }
    61. /**
    62. * 撤销申请
    63. * @param rid
    64. * @return
    65. */
    66. @ResponseBody
    67. @RequestMapping(value = "/apply/revoke")
    68. public String revoke(@RequestParam("rid") String rid) {
    69. HashMap<String, Object> map = new HashMap<>();
    70. boolean result = requisitionService.revoke(rid);
    71. if (result) {
    72. map.put("success", true);
    73. map.put("msg", "撤销成功!");
    74. } else {
    75. map.put("success", false);
    76. map.put("msg", "撤销失败,请稍后重试!");
    77. }
    78. return JSON.toJSONString(map);
    79. }
    80. @RequestMapping(value = "/todo.html")
    81. public String todo(){
    82. return "/staff/todo.html";
    83. }
    84. /**
    85. * 待领取列表
    86. * @param rv
    87. * @return
    88. */
    89. @ResponseBody
    90. @RequestMapping(value = "/todo/list")
    91. public DataGridViewResult todoList(RequisitionVo rv,HttpServletRequest request){
    92. String uname = (String)request.getSession().getAttribute("uname");
    93. rv.setRtaker(uname);
    94. rv.setRstatus("待领取");
    95. // 设置分页信息
    96. PageHelper.startPage(rv.getPage(), rv.getLimit());
    97. // 查询
    98. List<Requisition> list = requisitionService.findRequisitionList(rv);
    99. // 创建分页对象
    100. PageInfo<Requisition> pageInfo = new PageInfo<Requisition>(list);
    101. // 按接口要求返回数据
    102. DataGridViewResult data = new DataGridViewResult(pageInfo.getTotal(), pageInfo.getList());
    103. return data;
    104. }
    105. }

    如果也想学习本系统,下面领取。回复:096springboot    

  • 相关阅读:
    用 Python 开发的 PDF 抽取Excel表格 2.0版
    C++基础——数组
    HUAWEI路由器DHCP+H3C路由器DHCP+锐捷路由器DHCP综合配置
    uni-app 经验分享,从入门到离职(五)——由浅入深 uni-app 数据缓存
    C++学习笔记
    英文科技论文写作与发表-格式和规范(第5章)
    【Effective Go】高效Go编程之格式化+代码注释+命名+分号+控制结构
    Mac 本地部署thinkphp8【配置环境】
    04.Pandas查询数据
    Aws Nat Gateway
  • 原文地址:https://blog.csdn.net/hanyunlong1989/article/details/125533394