基于javaweb的SSM在线车队货车管理系统(java+ssm+jsp+bootstrap+mysql)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

100123022402

110123022402

120123022402

130123022402

140123022402

150123022402

基于javaweb的SSM在线车队货车管理系统(java+ssm+jsp+bootstrap+mysql)

项目介绍

本项目包含管理员、老板、司机三种角色; 老板角色包含以下功能: 老板登录,角色管理,用户管理,货车信息管理,运单信息管理,请假申请管理,费用报销管理,工资管理,查看工资报表,查看货车报表,新增建议等功能。

管理员角色包含以下功能: 管理员角色,角色管理,菜单管理,在线管理,日志管理,用户管理,货车信息管理,运单信息管理,请假申请管理,费用报销管理,工资信息管理,匿名建议管理,查看工资报表,查看货车报表,修改管理员资料等功能。

司机角色包含以下功能: 司机登录,货车信息管理,运单信息管理,请假申请管理,费用报销管理,工资管理,修改司机资料等功能。

环境需要

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. 前端:JSP+bootstrap+jQuery+css+javascript

使用说明

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
	pd = this.getPageData();
mv.setViewName("system/head/edit_email");
mv.addObject("pd", pd);
return mv;
}

/**去发送短信页面
* @return
* @throws Exception
*/
@RequestMapping(value="/goSendSms")
public ModelAndView goSendSms() throws Exception{
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
mv.setViewName("system/head/send_sms");
mv.addObject("pd", pd);
return mv;
}


/**发送短信
* @return
*/
@RequestMapping(value="/sendSms")
@ResponseBody
public Object sendSms(){
PageData pd = new PageData();
pd = this.getPageData();
Map<String,Object> map = new HashMap<String,Object>();
String msg = "ok"; //发送状态
int count = 0; //统计发送成功条数
int zcount = 0; //理论条数
List<PageData> pdList = new ArrayList<PageData>();
String PHONEs = pd.getString("PHONE"); //对方邮箱
String CONTENT = pd.getString("CONTENT"); //内容
String isAll = pd.getString("isAll"); //是否发送给全体成员 yes or no
String TYPE = pd.getString("TYPE"); //类型 1:短信接口1 2:短信接口2
String fmsg = pd.getString("fmsg"); //判断是系统用户还是会员 "appuser"为会员用户
if("yes".endsWith(isAll)){
try {
List<PageData> userList = new ArrayList<PageData>();
userList = "appuser".equals(fmsg) ? appuserService.listAllUser(pd):userService.listAllUser(pd);
zcount = userList.size();
try {
for(int i=0;i<userList.size();i++){
if(Tools.checkMobileNumber(userList.get(i).getString("PHONE"))){ //手机号格式不对就跳过
if("1".equals(TYPE)){
SmsUtil.sendSms1(userList.get(i).getString("PHONE"), CONTENT); //调用发短信函数1
}else{
SmsUtil.sendSms2(userList.get(i).getString("PHONE"), CONTENT); //调用发短信函数2
}
count++;
}else{
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
@ResponseBody
public Object refuse() throws Exception{
Map<String,Object> map = new LinkedHashMap<String,Object>();
String result = "";
PageData pd = new PageData();
pd = this.getPageData();

if("friend".equals(pd.getString("TYPE"))){ //同意好友申请
pd.put("USERNAME", Jurisdiction.getUsername()); //当前用户名

//修改消息状态
pd.put("CONTENT", "您拒绝了"+pd.getString("FNAME")+"申请好友");
pd.put("DTIME", Tools.date2Str(new Date())); //完成时间
pd.put("ISDONE", "yes");
sysmsgService.edit(pd);

//从对方好友列表中删除本人
friendsService.pullblack(pd);

//添加系统消息
pd.put("SYSMSG_ID", this.get32UUID()); //主键
pd.put("USERNAME", pd.getString("FUSERNAME")); //接收者用户名
pd.put("FROMUSERNAME", Jurisdiction.getUsername()); //发送者用户名(即当前用户)
pd.put("CTIME", Tools.date2Str(new Date())); //操作时间
pd.put("REMARK", ""); //留言
pd.put("TYPE", "friend"); //类型
pd.put("CONTENT", Jurisdiction.getU_name()+" 拒绝了你的好友申请"); //事件内容
pd.put("QGROUP_ID", ""); //申请加群是有值
pd.put("DREAD", "0"); //阅读状态 0 未读
sysmsgService.save(pd);
}else{ //拒绝群申请

PageData msgpd = new PageData();
msgpd = sysmsgService.findById(pd);

pd.put("USERNAME", pd.getString("FUSERNAME"));
if(null == iqgroupService.findByIdandQid(pd)){ //判断是否在此群了

//添加系统消息
pd.put("SYSMSG_ID", this.get32UUID()); //主键
pd.put("FROMUSERNAME", Jurisdiction.getUsername()); //发送者用户名(即当前用户)
pd.put("CTIME", Tools.date2Str(new Date())); //操作时间
pd.put("REMARK", ""); //留言
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
				session.setAttribute(Const.SESSION_USERROL, user);						//存入session	
}else{
user = userr;
}
String USERNAME = user.getUSERNAME();
Role role = user.getRole(); //获取用户角色
String roleRights = role!=null ? role.getRIGHTS() : ""; //角色权限(菜单权限)
String ROLE_IDS = user.getROLE_IDS();
session.setAttribute(USERNAME + Const.SESSION_ROLE_RIGHTS, roleRights); //将角色权限存入session
session.setAttribute(Const.SESSION_USERNAME, USERNAME); //放入用户名到session
session.setAttribute(Const.SESSION_U_NAME, user.getNAME()); //放入用户姓名到session
this.setAttributeToAllDEPARTMENT_ID(session, USERNAME); //把用户的组织机构权限放到session里面
List<Menu> allmenuList = new ArrayList<Menu>();
allmenuList = this.getAttributeMenu(session, USERNAME, roleRights, getArrayRoleRights(ROLE_IDS)); //菜单缓存
List<Menu> menuList = new ArrayList<Menu>();
menuList = this.changeMenuF(allmenuList, session, USERNAME, changeMenu); //切换菜单
if(null == session.getAttribute(USERNAME + Const.SESSION_QX)){
session.setAttribute(USERNAME + Const.SESSION_QX, this.getUQX(USERNAME)); //主职角色按钮权限放到session中
session.setAttribute(USERNAME + Const.SESSION_QX2, this.getUQX2(USERNAME)); //副职角色按钮权限放到session中
}
this.getRemortIP(USERNAME); //更新登录IP
mv.setViewName("system/index/main");
mv.addObject("user", user);
mv.addObject("SKIN", null == session.getAttribute(Const.SKIN)?user.getSKIN():session.getAttribute(Const.SKIN)); //用户皮肤
mv.addObject("menuList", menuList);
}else {
mv.setViewName("system/index/login"); //session失效后跳转登录页面
}
} catch(Exception e){
mv.setViewName("system/index/login");
logger.error(e.getMessage(), e);
}
pd.put("SYSNAME", Tools.readTxtFile(Const.SYSNAME)); //读取系统名称
mv.addObject("pd",pd);
return mv;
}

/**获取副职角色权限List
* @param ROLE_IDS
* @return
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

/**
* 类名称:ToolController 系统工具
* 创建人:admin Q1347845688
* 修改时间:2018年2月13日
* @version
*/
@Controller
@RequestMapping(value="/tool")
public class ToolController extends BaseController {
@Resource(name="userphotoService")
private UserPhotoManager userphotoService;

/**去接口测试页面
* @return
* @throws Exception
*/
@RequestMapping(value="/interfaceTest")
public ModelAndView editEmail() throws Exception{
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
mv.setViewName("system/tools/interfaceTest");
mv.addObject("pd", pd);
return mv;
}

/**
* 接口内部请求
* @param
* @throws UnsupportedEncodingException
* @throws Exception
*/
@RequestMapping(value="/severTest")
@ResponseBody
public Object severTest() throws UnsupportedEncodingException{
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
		picturesService.edit(pd);				//执行修改数据库
}
mv.addObject("msg","success");
mv.setViewName("save_result");
return mv;
}

/**去新增页面
* @return
*/
@RequestMapping(value="/goAdd")
public ModelAndView goAdd() throws Exception{
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
mv.setViewName("information/pictures/pictures_add");
mv.addObject("pd", pd);
return mv;
}

/**去修改页面
* @return
* @throws Exception
*/
@RequestMapping(value="/goEdit")
public ModelAndView goEdit() throws Exception{
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
pd = picturesService.findById(pd); //根据ID读取
mv.setViewName("information/pictures/pictures_edit");
mv.addObject("msg", "edit");
mv.addObject("pd", pd);
return mv;
}

/**批量删除
* @return
* @throws Exception
*/
@RequestMapping(value="/deleteAll")
@ResponseBody
public Object deleteAll() throws Exception {
PageData pd = new PageData();
Map<String,Object> map = new HashMap<String,Object>();
pd = this.getPageData();
if(Jurisdiction.buttonJurisdiction(menuUrl, "del")){
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
}

/**删除图片
* @param out
* @throws Exception
*/
@RequestMapping(value="/deltp")
public void deltp(PrintWriter out) throws Exception {
PageData pd = new PageData();
pd = this.getPageData();
String PATH = pd.getString("PATH");
if(Tools.notEmpty(pd.getString("PATH").trim())){ //图片路径
DelAllFile.delFolder(PathUtil.getClasspath() + pd.getString("PATH")); //删除硬盘中的图片
}
if(PATH != null){
qgroupService.delTp(pd); //删除数据库中图片数据
}
out.write("success");
out.close();
}

/**修改
* @param
* @throws Exception
*/
@RequestMapping(value="/edit")
public ModelAndView edit(
@RequestParam(value="tp",required=false) MultipartFile file,
@RequestParam(value="tpz",required=false) String tpz,
@RequestParam(value="QGROUP_ID",required=false) String QGROUP_ID,
@RequestParam(value="NAME",required=false) String NAME
)throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"修改Qgroup");
if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
pd.put("NAME", NAME); //群名
pd.put("QGROUP_ID", QGROUP_ID); //主键
if (null != file && !file.isEmpty()) {
String ffile = DateUtil.getDays(), fileName = "";
String filePath = PathUtil.getClasspath() + Const.FILEPATHIMG + ffile; //文件上传路径
fileName = FileUpload.fileUp(file, filePath, this.get32UUID()); //执行上传
pd.put("PHOTO", Const.FILEPATHIMG + ffile + "/" + fileName); //路径
}else{
pd.put("PHOTO", tpz);
}
qgroupService.edit(pd);
mv.addObject("msg","success");
mv.setViewName("save_result");
return mv;


项目链接:
https://javayms.github.io?id=471122572008200ub
https://javayms.pages.dev?id=471122572008200ub