基于java+ssm+vue的劳务外包管理系统

项目介绍

互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对劳务外包信息管理混乱,出错率高,信息安全性差,劳动强度大,费时费力等问题,采用劳务外包管理系统可以有效管理,使信息管理能够更加科学和规范。

劳务外包管理系统在idea环境中,使用Java语言进行编码,使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务,本系统管理员管理用工单位,派遣员工,合同,黑名单,招聘信息,客户信息,统计员工在职信息与客户开发信息。业务员查看客户开发统计信息,查询供应商与客户。员工可以查询合同,档案,异动以及黑名单信息。

总之,劳务外包管理系统集中管理信息,有着保密性强,效率高,存储空间大,成本低等诸多优点。它可以降低信息管理成本,实现信息管理计算机化。

4.2 功能结构设计
在前面分析的管理员功能的基础上,进行接下来的设计工作,最终展示设计的管理员结构图(见下图)。管理员管理用工单位,派遣员工,合同,黑名单,招聘信息,客户信息,统计员工在职信息与客户开发信息。
在这里插入图片描述

在前面分析的业务员功能的基础上,进行接下来的设计工作,最终展示设计的业务员结构图(见下图)。业务员查看客户开发统计信息,查询供应商与客户。
在这里插入图片描述

在前面分析的员工功能的基础上,进行接下来的设计工作,最终展示设计的员工结构图(见下图)。员工可以查询合同,档案,异动以及黑名单信息。
在这里插入图片描述

开发环境

编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,jdk1.8,maven
支持定做:java/php/python/android/小程序/vue/爬虫/c#/asp.net

系统实现

5.1 管理员功能实现
5.1.1 招聘信息管理
管理员进入指定功能操作区之后可以管理招聘信息。其页面见下图。管理员可以增删改查招聘信息,管理员点击统计报表可以查看招聘统计信息。
在这里插入图片描述

图5.1 招聘信息管理页面

5.1.2 员工在职统计
管理员进入指定功能操作区之后可以查看员工在职统计信息。其页面见下图。管理员能够查看在职人员与离职人员的占比情况。
在这里插入图片描述

图5.2 员工在职统计页面

5.1.3 派遣员工管理
管理员进入指定功能操作区之后可以管理派遣员工信息。其页面见下图。管理员在本页面可以增删改查派遣员工信息。
在这里插入图片描述

图5.3 派遣员工管理页面

5.1.4 用工单位管理
管理员进入指定功能操作区之后可以管理用工单位信息。其页面见下图。管理员负责用工单位信息的增删改查。用工单位信息包括发票凭证,单位负责人等信息。
在这里插入图片描述

图5.4 用工单位管理页面

5.2 业务员功能实现
5.2.1 客户信息管理
业务员进入指定功能操作区之后可以查询客户信息。其页面见下图。业务员在当前页面可以根据所在公司查询客户信息,能够对客户的详细资料进行查看。
在这里插入图片描述

图5.5客户信息管理页面

5.2.2 客户开发统计
业务员进入指定功能操作区之后可以查看客户开发统计信息。其页面见下图。业务员查看已完成和未完成的客户占比信息。
在这里插入图片描述

图5.6 客户开发统计页面

5.2.3 供应商管理
业务员进入指定功能操作区之后可以查询供应商。其页面见下图。业务员根据供应商名称对供应商的信息进行查询,在本页面能够查看各个供应商的详细信息。
在这里插入图片描述

图5.7 供应商管理页面

5.3 员工功能实现
5.3.1 黑名单管理
员工进入指定功能操作区之后可以查询黑名单。其页面见下图。员工根据姓名查询黑名单信息,黑名单信息包括姓名,拉黑时间。
在这里插入图片描述

图5.8 黑名单管理页面

5.3.2 异动管理
员工进入指定功能操作区之后可以查看异动信息。其页面见下图。员工查询异动信息,查看调动的职位和部门信息。
在这里插入图片描述

图5.9 异动管理页面

5.3.3 合同管理
员工进入指定功能操作区之后可以查看合同信息。其页面见下图。员工查询合同,下载合同文件,查看合同有效期和到期日期等信息。
在这里插入图片描述

图5.10 合同管理页面

核心代码

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.HeimingdanguanliEntity;
import com.entity.view.HeimingdanguanliView;

import com.service.HeimingdanguanliService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 黑名单管理
 * 后端接口
 * @author 
 * @email 
 * @date 
 */
@RestController
@RequestMapping("/heimingdanguanli")
public class HeimingdanguanliController {
    @Autowired
    private HeimingdanguanliService heimingdanguanliService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,HeimingdanguanliEntity heimingdanguanli, 
		HttpServletRequest request){

        EntityWrapper<HeimingdanguanliEntity> ew = new EntityWrapper<HeimingdanguanliEntity>();
		PageUtils page = heimingdanguanliService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, heimingdanguanli), params), params));
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("st")
    public R list(@RequestParam Map<String, Object> params,HeimingdanguanliEntity heimingdanguanli, 
		HttpServletRequest request){
        EntityWrapper<HeimingdanguanliEntity> ew = new EntityWrapper<HeimingdanguanliEntity>();
		PageUtils page = heimingdanguanliService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, heimingdanguanli), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("sts")
    public R list( HeimingdanguanliEntity heimingdanguanli){
       	EntityWrapper<HeimingdanguanliEntity> ew = new EntityWrapper<HeimingdanguanliEntity>();
      	ew.allEq(MPUtil.allEQMapPre( heimingdanguanli, "heimingdanguanli")); 
        return R.ok().put("data", heimingdanguanliService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(HeimingdanguanliEntity heimingdanguanli){
        EntityWrapper< HeimingdanguanliEntity> ew = new EntityWrapper< HeimingdanguanliEntity>();
 		ew.allEq(MPUtil.allEQMapPre( heimingdanguanli, "heimingdanguanli")); 
		HeimingdanguanliView heimingdanguanliView =  heimingdanguanliService.selectView(ew);
		return R.ok("查询黑名单管理成功").put("data", heimingdanguanliView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        HeimingdanguanliEntity heimingdanguanli = heimingdanguanliService.selectById(id);
        return R.ok().put("data", heimingdanguanli);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        HeimingdanguanliEntity heimingdanguanli = heimingdanguanliService.selectById(id);
        return R.ok().put("data", heimingdanguanli);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("ve")
    public R save(@RequestBody HeimingdanguanliEntity heimingdanguanli, HttpServletRequest request){
    	heimingdanguanli.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(heimingdanguanli);

        heimingdanguanliService.insert(heimingdanguanli);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody HeimingdanguanliEntity heimingdanguanli, HttpServletRequest request){
    	heimingdanguanli.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(heimingdanguanli);

        heimingdanguanliService.insert(heimingdanguanli);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody HeimingdanguanliEntity heimingdanguanli, HttpServletRequest request){
        //ValidatorUtils.validateEntity(heimingdanguanli);
        heimingdanguanliService.updateById(heimingdanguanli);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        heimingdanguanliService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<HeimingdanguanliEntity> wrapper = new EntityWrapper<HeimingdanguanliEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = heimingdanguanliService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	


}

论文参考

在这里插入图片描述

目 录
第1章 绪论 1
1.1 课题背景 1
1.2 课题意义 1
1.3 研究内容 2
第2章 开发环境与技术 3
2.1 MYSQL数据库 3
2.2 JSP技术 3
2.3 SSM框架 4
第3章 系统分析 5
3.1 可行性分析 5
3.1.1 技术可行性 5
3.1.2 经济可行性 5
3.1.3 操作可行性 5
3.2 系统流程 6
3.2.1 操作流程 6
3.2.2 登录流程 6
3.2.3 删除信息流程 7
3.2.4 添加信息流程 8
3.3 性能需求 8
3.4 功能需求 9
第4章 系统设计 12
4.1 设计原则 12
4.2 功能结构设计 12
4.3 数据库设计 15
4.3.1 数据库概念设计 15
4.3.2 数据库物理设计 18
第5章 系统实现 24
5.1 管理员功能实现 24
5.1.1 招聘信息管理 24
5.1.2 员工在职统计 24
5.1.3 派遣员工管理 25
5.1.4 用工单位管理 26
5.2 业务员功能实现 26
5.2.1 客户信息管理 26
5.2.2 客户开发统计 27
5.2.3 供应商管理 27
5.3 员工功能实现 28
5.3.1 黑名单管理 28
5.3.2 异动管理 28
5.3.3 合同管理 29
第6章 系统测试 30
6.1 功能测试 30
6.1.1 登录功能测试 30
6.1.2 修改密码功能测试 31
6.2 测试结果 31
结 论 32
致 谢 33
参考文献 34

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qq_3306428634

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

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

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

打赏作者

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

抵扣说明:

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

余额充值