1、项目概要

4S维修系统是针对汽车维修店的一个java系统,主要是对客户的操作实现简单化,客户也可以使用微信登录的方式进行操作,将客户信息导入使功能需求更便捷。

2、系统功能

员工管理:将公司所有员工以及客户均可录入其中,可以修改,删除,查询信息。

@RequestMapping("/index")
public String index(Model model) {List<Department> departments = departmentService.selectDepaName();model.addAttribute("depaNames", departments);return "employee";
}/*** 员工列表数据* List<Employee></>*/
@RequestMapping("/list")
@ResponseBody
public NewPageResult list(EmployeeQuery qo) {return employeeService.selectForNewList(qo);
}@RequestMapping("/remove")
@ResponseBody
public AjaxResult remove(Long[] ids) {try {for (Long id:ids) {System.out.println(id);employeeService.deleteByPrimaryKey(id);}return AjaxResult.success();} catch (Exception e) {e.printStackTrace();return AjaxResult.error("删除失败,请联系程序员!");}
}@RequestMapping("/saveOrUpdate")
@ResponseBody
public AjaxResult saveOrUpdate(Employee employee) {try {if (employee.getId() == null) {employeeService.insert(employee);} elseemployeeService.updateByPrimaryKey(employee);return AjaxResult.success();} catch (Exception e) {e.printStackTrace();return AjaxResult.error("保存失败,请联系程序员!");}
}

部门管理:   可以对部门进行添加,修改,删除。

录入导出:可以将excel表格中的数据一键录入到系统,或者将系统数据导出到excel之中,

方便公司存储信息,大量节省了录入时间以及极大提高录入准确性,录入失败的信息会进行提示。

维修管理:对每一个客户的维修信息进行管理。也可以编辑明细信息。

try {customer.setDepartment(null);Department department = new Department();department.setId(customer.getDepartmentId());customer.setDepartment(department);//判断是否有id,有就是修改,没有就是添加if (customer.getId() != null) {//修改iCustomerService.updateByPrimaryKey(customer);} else {//添加iCustomerService.insert(customer);}return AjaxResult.success();} catch (Exception e) {e.printStackTrace();return AjaxResult.error("操作失败:" + e.getMessage());}}return null;
}

支付管理:对所有用户都有多种支付方式的选择,支持多方支付。

还车模块:工作人员可以在此看到用户的地址信息,讲维修汽车送至指定位置,在此操作确定还车,病录入操作人员的信息。

@RequestMapping("/index")
public String index() {return "returnCar/returnCar";
}
@RequestMapping("/address")
public String address(String dizhi,Model model) {model.addAttribute("dizhi", dizhi);return "returnCar/mapdemo";
}
@RequestMapping("/delete")
@ResponseBody//json
public AjaxResult delete(Long id, String remarks) {try {SettlementOrder order = settlementOrderService.selectByPrimaryKey(id);if (order.getState()<1){Date dNow = new Date( );SimpleDateFormat ft =new SimpleDateFormat ("yyyy.MM.dd hh:mm:ss ");order.setRemarks("时间:"+ft.format(dNow)+";备注:"+remarks);order.setState(2);int i = settlementOrderService.updateByPrimaryKey(order);return AjaxResult.success();}return AjaxResult.error("删除失败:该状态不是已结算状态");} catch (Exception e) {e.printStackTrace();return AjaxResult.error("删除失败:" + e.getMessage());}
}

订单管理:对每一个不同的用户有不同的订单信息,可以在此进行结算操作,对此处的订单有一个整合信息,总结当前页面的金额信息。

try {SettlementOrder order = settlementOrderService.selectByPrimaryKey(id);if (order.getState()< 1){Date dNow = new Date( );SimpleDateFormat ft =new SimpleDateFormat ("yyyy.MM.dd hh:mm:ss ");order.setRemarks("时间:"+ft.format(dNow)+";备注:"+remarks);order.setState(1);settlementOrderService.updateByPrimaryKey(order);iCustomerService.updateState(id);return AjaxResult.success();}return AjaxResult.error("删除失败:该状态不是已结算状态");
} catch (Exception e) {e.printStackTrace();return AjaxResult.error("删除失败:" + e.getMessage());
}

配件管理:维修人员需要对维修的车辆进行配件的进货以及上新,就可以在此操作,将各种配件的购买费用,购买时间,上新费用时间进行更新。

登录模块:登录时可以直接进行用户名+密码登录,如果是新用户,在同一个地方可以实现注册+登录双操作,引入来微信登录模块,用户可以绑定微信来进行登录,如果是未识别的微信会出现新界面,提示绑定微信或者注册新用户。

登录的关键代码:

Employee employee1 = employeeService.selectEmployeeByUsername(username);
if (employee1==null) {String password1 = MD5Util.createMd5(password);Employee employee = new Employee();employee.setUserName(username);employee.setPassword(password1);employee.setDepartmentId(7L);employeeService.insert(employee);
}UsernamePasswordToken token = new UsernamePasswordToken(username, password);
Subject subject = SecurityUtils.getSubject();
if(!subject.isAuthenticated()){subject.login(token);
}
//当用户登录成功之后,你应该放到session中
Employee employee = ((Employee) subject.getPrincipal());
UserContext.setSesssion(employee);

在此实现的未识别账号注册,并默认为客户账号。

微信的绑定:

if(openId!=null){Employee employee1 = employeeService.selectEmployeeByUsername(username);if (employee1==null) {return new AjaxResult(false,"账号或密码错误");}UsernamePasswordToken token = new UsernamePasswordToken(username, password);Subject subject = SecurityUtils.getSubject();if(!subject.isAuthenticated()){subject.login(token);}employeeService.updateEmployeeOpenId(openId,username);//当用户登录成功之后,你应该放到session中Employee employee = ((Employee) subject.getPrincipal());UserContext.setSesssion(employee);return new AjaxResult();
}

如果有个微信专属的openID的话就是微信扫描登录账户。

同时给微信用户提供来注册界面:

if(openId!=null){Employee employee1 = employeeService.selectEmployeeByUsername(username);if (employee1!=null) {return new AjaxResult(false,"用户已存在");}String password1 = MD5Util.createMd5(password);Employee employee = new Employee();employee.setUserName(username);employee.setPassword(password1);employee.setDepartmentId(7L);employee.setOpenId(openId);employeeService.insert(employee);UsernamePasswordToken token = new UsernamePasswordToken(username, password);Subject subject = SecurityUtils.getSubject();if(!subject.isAuthenticated()){subject.login(token);}//当用户登录成功之后,你应该放到session中Employee employee2 = ((Employee) subject.getPrincipal());UserContext.setSesssion(employee2);return new AjaxResult();
}、

当然也是在微信扫描为未识别用户的时候生效。

微信登录:

String getTokenUrl="https://api.weixin.qq.com/sns/oauth2/access_token?" +"appid=wxd853562a0548a7d0&secret=4a5d5615f93f24bdba2ba8534642dbb6&code="+code+"&grant_type=authorization_code";
String tokenResultStr = HttpClientUtil.doGet(getTokenUrl);
Map<String,String> tokenResultMap = JSON.parseObject(tokenResultStr,Map.class);
String tokenString = tokenResultMap.get("access_token");
String openId = tokenResultMap.get("openid");String userInfoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token="+tokenString+"&openid="+openId+"";
String userResultStr = HttpClientUtil.doGet(userInfoUrl);
Map<String,String> userResultMap = JSON.parseObject(userResultStr,Map.class);
String nickname = userResultMap.get("nickname");
Employee employee = employeeService.selectEmployeeByWechat(openId);
if(employee==null){//都返回正确且存在就登录,正确不存在就去另一个页面。req.getSession().setAttribute("openId", openId);return "wechat_user";
}
UserContext.setSesssion(employee);
return "main";

微信扫描被识别为包含用户是将执行此处,达到登录的效果。

权限模块:此次的权限模块做的相对少量,包含有动态菜单的展示,以及无权限的操作的按钮隐藏。

权限的关键代码:

List<Menu> parents = new ArrayList<>();
//查询出来的数据全部都是二级菜单
List<Menu> menus = permissionMapper.findPermissionByLogin(username); //二级菜单[角色管理,菜单管理,权限管理,导入管理,部门管理,员工管理]
for (Menu menu : menus) {//拿到一级菜单Long pid = menu.getPid();if (pid!=null) {Menu parent = permissionMapper.selectByPid(pid);if(!parents.contains(parent)){//如果不包含一级菜单则添加进去parents.add(parent);}//父菜单添加子菜单parent.getChildren().add(menu);}

将后台获取到的Menu的Map数据转换成String的Map数据,达到给前台返回json的效果。

3、负责的主要模块

负责登录模块+权限模块。

4、所用技术

SSM+layerUI

5、项目难点

1、整体网页的外观导入的js和当前项目需要的功能js冲突,不能达到想要的效果,或者出现界面错误。

解决:部分js继续选择引用,是在会出现冲突的js代码采用自己重写该段js达到效果的完成和实现。

<meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, shrink-to-fit=no' name='viewport' />
<!--     Fonts and icons     -->
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700,200" rel="stylesheet" />
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css" />
<!-- CSS Files -->
<link href="/static/plugins/login_plugins/assets/css/bootstrap.min.css" rel="stylesheet" />
<link href="/static/plugins/login_plugins/assets/css/now-ui-kit.css?v=1.1.0" rel="stylesheet" />
<!-- CSS Just for demo purpose, don't include it in your project -->
<link href="/static/plugins/login_plugins/assets/css/demo.css" rel="stylesheet" />
<script type="text/javascript" src="/static/js/wechat.js"></script><%@include file="/WEB-INF/views/common/header.jsp"%>
<link rel="canonical" href="" />
<!--  Social tags      -->
<meta name="keywords" content="">
<meta name="description" content="">
<script type="text/javascript">if(window != top){top.location.href = window.location.href};function on() {$('#loginForm').form('submit', {url:"/login",onSubmit: function(){return $("#loginForm").form("validate");},success:function(data){var result = $.parseJSON(data);if(result.success){//表示登录成功//跳转到主界面window.location.href = "/main";}else{$.messager.alert("错误", result.msg, "error");}}});};
</script><style type="text/css">.black_overlay{display: none;position: absolute;top: 0%;left: 0%;width: 100%;height: 100%;background-color: black;z-index:1001;-moz-opacity: 0.8;opacity:.80;filter: alpha(opacity=88);}.white_content {display: none;position: absolute;height: 480px;width:360px;margin-top: 230px;margin-left: 780px;padding: 20px;border: 10px solid black;background-color: white;z-index:1002;overflow: auto;}#zxd_x{width:20px; height:20px;text-align:center;font-size:16px;color:red;position:absolute;right:20px; top:0px;cursor:pointer;}
</style>

导入的同时还要自己写。

2、各模块之间的相互整合,经常出现各种各样的BUG导致很多功能的冲突。

解决:各成员之间的各种互动以及互相排查,力克BUG。

6、项目收获

对mybaties的了解加深,对java和前端代码的了解认识加深,对layerUI的学习理解加深,对多人开发的认识更加深刻。

转载于:https://my.oschina.net/u/4083631/blog/3074440

4S维修系统项目总结相关推荐

  1. AFPM100消防设备电源监控系统在国航重庆分公司维修基地项目中的应用-安科瑞华楠

    [摘要]:AFPM100消防设备电源状态监控器是AFPM消防设备电源监控系统的核心,监控设备通过RS485总线与多台传感器相连,构成集散式消防设备电源监控系统,实时监控消防设备电源的工作状态.本文通过 ...

  2. AFPM100消防设备电源监控系统在国航重庆分公司维修基地项目中的应用-安科瑞苏月婷

    江苏安科瑞电气制造有限公司 [摘要]:AFPM100消防设备电源状态监控器是AFPM消防设备电源监控系统的核心,监控设备通过RS485总线与多台传感器相连,构成集散式消防设备电源监控系统,实时监控消防 ...

  3. 4S维修管理系统(RPMS)总结

    介绍: 项目的名称是"4S维修店系统",是一个为了满足从车辆出现事故,到维修店进行修理完成后的一系列操作使用,从填写表单(维修表单:客户的基本信息,车辆出现的问题,是否需要进行上门 ...

  4. 基于Java毕业设计校园网络维修系统源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计校园网络维修系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计校园网络维修系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 开 ...

  5. 基于web的家电维修系统/家电维修管理系统

    摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息.为了迎合时代需求,优化管理效率,各种各样的系统管理应运而生,各行各业相继进入信息管理时代,家 ...

  6. 网络报修信息管理代码java_javaweb在线报修维修系统、java+ssh+mysql实现

    需求分析 基于SSH技术(struts2,spring,hibernate)实现一个在线报修维修系统, 支持管理员, 维修人员, 普通用户这些角色, 每个角色动态具有相应的功能权限, 能够进行维修人员 ...

  7. 计算机毕业设计ssm+vue基本微信小程序的手机预约维修系统

    项目介绍 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势:对于电脑维修预约当然也不能排除在外,随着网络技术的不断成熟,带动了电脑维修预约,它彻底改变了过去传统的 ...

  8. java计算机毕业设计校园网络维修系统源码+数据库+系统+lw文档+部署

    java计算机毕业设计校园网络维修系统源码+数据库+系统+lw文档+部署 java计算机毕业设计校园网络维修系统源码+数据库+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  9. java毕业设计智慧维修系统Mybatis+系统+数据库+调试部署

    java毕业设计智慧维修系统Mybatis+系统+数据库+调试部署 java毕业设计智慧维修系统Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开 ...

最新文章

  1. c++之openGL在VS中的配置及简单图形绘制
  2. codeblocks使用指南
  3. 当年嵌入式系统为什么选了Linux,而没有选Windows?
  4. python web为什么不火-pythonweb为什么不火-问答-阿里云开发者社区-阿里云
  5. 人工智能论坛_浙江大学人工智能论坛在北京召开
  6. Android自定义app图标,自定义app图标(Icon) - Cordova中文网
  7. 修改服务器ssh登录超时时间
  8. PyTorch:MNIST数据集手写数字识别
  9. python降维之时间类型数据的处理_python学习笔记之使用sklearn进行PCA数据降维
  10. raft算法学习(一):角色概念以及选举过程
  11. RTS与CTS的含义
  12. c++重载、覆盖和隐藏
  13. 去除右键菜单中图形属性、图形选项
  14. InstallShield Crack,虚拟应用程序构建可靠
  15. 读书笔记 | 财务会计理论(第7版 William R.Scott)(中)
  16. 信息孤岛的形成与治理
  17. Vue CLI脚手架安装及使用
  18. Orz这个词的复杂意思[z]
  19. cadence常见技巧和错误。。。
  20. 与android虚拟机传输文件,android 在本机和虚拟机设备之间复制文件

热门文章

  1. 学生成绩信息管理系统c语言,C语言写的学生成绩管理系统V4.0
  2. mysql 从库数据损坏_MySQL数据库中数据损坏恢复全过程
  3. 于丹 论语心得讲稿_人生之道
  4. 自动发送QQ消息功能的原理及实现
  5. 共享打印机显示服务器错误代码,使用共享打印机 出现错误代码0x00000709的解决办法...
  6. STM32开发板动态二维码显示
  7. 全球被动元件领导厂商 - 国巨公司近日又再度荣获SUNGROW阳光电源所颁发-2021年度优秀供应商奖。
  8. Ubuntu中root及用户账户问题
  9. 医疗织梦html5模版,html5响应式医院医疗健康保健网站模板(自适应手机)
  10. Android Q 适配指南