• Java项目:SSM企业工资管理系统


    作者主页:夜未央5788

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

    文末获取源码

    项目介绍

    本项目包含管理员与普通员工两种角色,

    管理员角色包含以下功能:

    管理员登录,员工管理,部门管理,岗位管理,职称管理,工龄奖金管理,工资项管理,考勤管理,工资查询,统计图表等功能。

    员工角色包含以下功能:

    员工登录,个人信息管理,考勤管理,工资详情等功能。
    PS:在折线图的工资展示分析模块,需要先结算某一个月的工资然后在折线图的地方查询才可以出来图哦

    环境需要

    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 5.7版本;

    6.是否Maven项目:是;

    技术栈

    1. 后端:Spring+SpringMVC+Mybatis

    2. 前端:HTML+CSS+JavaScript+LayUI+jquery+bootstrap

    使用说明

    1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;

    2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;

    若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;

    3. 将项目中dbconfig.properties配置文件中的数据库配置改为自己的配置;
    4. 运行项目,输入localhost:8080/ssm_esms 登录
    注:tomcat中需配置路径为/ssm_esms,否则会有异常
    管理员账号/密码:admin/admin

    用户账号/密码:18080833/123456

    运行截图

    管理员端

     

     

     

     

     

    员工页面

     

     

     

     

    代码相关

    工资管理控制器

    1. @Controller
    2. public class RankBonusController {
    3. @Autowired
    4. private IRankBonusService service;
    5. //@Qualifier("rankBonusService")
    6. public void setiRankBonusService(IRankBonusService iRankBonusService) {
    7. this.service = iRankBonusService;
    8. }
    9. //插入数据
    10. @RequestMapping("/insertRankBonus.do")
    11. @ResponseBody
    12. public String doInsertRankBonus(int bonus,String name){
    13. if(service.CountByName(name)>0){
    14. return "exist";
    15. }
    16. if(!name.equals("")&& bonus>=0){
    17. RankBonus rb= new RankBonus();
    18. rb.setRankName(name);
    19. rb.setRbBonus(bonus);
    20. service.addRankBonus(rb);
    21. return "ok";
    22. }
    23. else{
    24. return "no";
    25. }
    26. }
    27. //查询出所有记录
    28. @RequestMapping("/findAll.do")
    29. public String doFindAll(@RequestParam(value="pn",defaultValue = "1") Integer pn, Model model){
    30. // 引入PageHelper分页插件
    31. // 在查询之前只需要调用,传入页码,以及每页的大小
    32. int pageSize = 10;
    33. PageHelper.startPage(pn, pageSize);
    34. // startPage后面紧跟的这个查询就是一个分页查询
    35. List rbs = service.findAll();
    36. System.out.println(rbs+"=================================");
    37. /*for (RankBonus rb:rbs) {
    38. System.out.println(rb.getRankName());
    39. }*/
    40. // 使用pageInfo包装查询后的结果,只需要将pageInfo交给页面就行了。
    41. // 封装了详细的分页信息,包括有我们查询出来的数据,传入连续显示的页数
    42. PageInfo page = new PageInfo(rbs, 5);
    43. //ModelAndView modelAndView = new ModelAndView();
    44. // modelAndView.setViewName("admin/rank-list.jsp");
    45. // modelAndView.addObject("pageInfo",page);
    46. model.addAttribute("pageInfo", page);
    47. return "admin/rank-list.jsp";
    48. }
    49. @RequestMapping("/findRankBonusList.do")
    50. @ResponseBody
    51. public RankBonusPages findSelective(
    52. @RequestParam(value="page", defaultValue="1")int pageNum,
    53. @RequestParam(value="limit", defaultValue="10") int limit,
    54. @RequestParam(value="rb_name", defaultValue="") String rb_name) throws Exception {
    55. /*return rb_name;*/
    56. List list;
    57. //模糊查询,有多少个条件就接收多少个字段
    58. RankBonus rb = new RankBonus();
    59. rb.setRankName(rb_name);
    60. //pageNum:起始页面 pageSize:每页的大小
    61. PageHelper.startPage(pageNum,limit);
    62. //查找条件,一定要紧跟在startPage后
    63. list = service.findSelective(rb);
    64. PageInfo pageResult = new PageInfo(list);
    65. //设置前台需要的数据
    66. RankBonusPages rankBonusPages = new RankBonusPages();
    67. rankBonusPages.setCode(0);
    68. rankBonusPages.setMsg("");
    69. rankBonusPages.setCount((int) pageResult.getTotal());
    70. rankBonusPages.setData(pageResult.getList());
    71. return rankBonusPages;
    72. }
    73. //根据id删除数据
    74. @RequestMapping("rankBonusDelete.do")
    75. @ResponseBody
    76. public String doDelete(int id){
    77. if(service.CountByRbid(id)>0){
    78. return "exist";
    79. }
    80. if(service.moveRankBonus(id)==true)
    81. return "ok";
    82. else{
    83. return "no";}
    84. }
    85. //更新记录
    86. @RequestMapping("/updateRankBonus.do")
    87. @ResponseBody
    88. public String doUpdate(int id,String rank,int bonus){
    89. RankBonus rankBonus=service.findByName(rank);
    90. if(rankBonus!=null&& !rankBonus.getRbId().equals(id)){
    91. return "exist";
    92. }
    93. RankBonus rb=new RankBonus();
    94. rb.setRbId(id);
    95. rb.setRbBonus(bonus);
    96. rb.setRankName(rank);
    97. if(service.modifyRankName(rb)==true)
    98. return "ok";
    99. else
    100. return "no";
    101. }
    102. }

    工资查询管理控制器

    1. @Controller
    2. public class SalaryController {
    3. @Autowired
    4. private SalaryServiceImpl salaryService = null;
    5. @RequestMapping("salarySettlementByAcount.do")
    6. @ResponseBody
    7. public Map salarySettlementByAcount(String eAccount, String date) {
    8. Map stringMap = new HashMap();
    9. try {
    10. salaryService.insertSalaryByAcountAndDate(eAccount, date);
    11. stringMap.put("msg", "工资结算完成");
    12. return stringMap;
    13. } catch (CustomException e) {
    14. stringMap.put("msg", e.getMessage());
    15. return stringMap;
    16. }
    17. }
    18. @RequestMapping("salarySettlementAll.do")
    19. @ResponseBody
    20. public Map salarySettlementAll(String date) {
    21. Map stringMap = new HashMap();
    22. try {
    23. salaryService.insertSalaryAllByDate(date);
    24. stringMap.put("msg", "工资结算完成");
    25. return stringMap;
    26. } catch (CustomException e) {
    27. stringMap.put("msg", e.getMessage());
    28. return stringMap;
    29. }
    30. }
    31. // 删除工资项目
    32. @RequestMapping("deleteSalaryByEid.do")
    33. @ResponseBody
    34. public int deleteSalaryByEid(@RequestParam(value = "arr")int[] ids) {
    35. salaryService.deleteSalaryByEid(ids);
    36. return 1;
    37. }
    38. // 发放工资项目
    39. @RequestMapping("issueSalaryByEid.do")
    40. @ResponseBody
    41. public void issueSalaryByEid(@RequestParam(value = "arr")int[] ids) {
    42. salaryService.updateSalaryBySid(ids);
    43. }
    44. @RequestMapping(value = "selectSalaryByEaccountDIdDate.do",
    45. produces = "application/json;charset=utf-8")
    46. @ResponseBody
    47. public String selectSalaryByEaccountDIdDate(@RequestParam(value = "page", defaultValue = "1") int pageNum,
    48. @RequestParam(value = "limit", defaultValue = "5") int limit,
    49. String eAccount, Integer dId, String sTime) {
    50. /**
    51. * @Author: 方宏泰
    52. * @Description: 工资查询
    53. * @Date: 12:37 2020/02/11
    54. * @Param: [pageNum , limit, eAccount, dId, sTime]
    55. * @Return: java.lang.String
    56. **/
    57. SalaryPages salaryPages = salaryService.selectSalaryByEaccountDIdDate(pageNum, limit, eAccount, dId, sTime);
    58. //使用fastjson以字符串形式返回数据
    59. JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM";
    60. return JSON.toJSONString(salaryPages, SerializerFeature.WriteDateUseDateFormat);
    61. }
    62. @RequestMapping(value = "selectSalaryByEaccountDIdDateState.do",
    63. produces = "application/json;charset=utf-8")
    64. @ResponseBody
    65. public String selectSalaryByEaccountDIdDateState(@RequestParam(value = "page", defaultValue = "1") int pageNum,
    66. @RequestParam(value = "limit", defaultValue = "5") int limit,
    67. String eAccount, Integer dId, String sTime) {
    68. SalaryPages salaryPages = salaryService.selectSalaryByEaccountDIdDateState(pageNum, limit, eAccount, dId, sTime);
    69. //使用fastjson以字符串形式返回数据
    70. JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM";
    71. return JSON.toJSONString(salaryPages, SerializerFeature.WriteDateUseDateFormat);
    72. }
    73. @RequestMapping(value = "updateSalaryByEidAndRissuePay.do")
    74. @ResponseBody
    75. public void updateSalaryByEidAndRissuePay(int sId, double rissuePay) {
    76. salaryService.updateSalaryByEidAndRissuePay(sId, rissuePay);
    77. }
    78. }

     

    如果也想学习本系统,下面领取。关注并回复:108ssm 

  • 相关阅读:
    Node.js实现WebSocket
    Keil使用与编程
    Java面试之JavaWeb常用框架(offer 拿来吧你)
    C++ 20 协程(三)
    B-Tree 索引和 Hash 索引的对比
    Redis学习笔记3:基于springboot的lettuce redis客户端validateConnection连接有效性检查
    【C#】项目中添加png文件时,设置其“生成操作”(Build Action)属性
    华虹半导体冲刺科创板上市:简称为华虹宏力,拟募资180亿元
    win10错误代码0x80070005解决方法
    初识贝塞尔(bezier)曲线
  • 原文地址:https://blog.csdn.net/hanyunlong1989/article/details/126613669