汽车售后服务管理系统在Eclipse环境中,使用Java语言进行编码,使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务,本系统管理员管理员工,管理材料,管理材料出入库订单,管理公告以及维修类型信息。员工对材料进行入库,出库,管理维修预约信息。用户新增维修预约信息,查看维修进度,查看材料信息,查看公告。
总之,汽车售后服务管理系统集中管理信息,有着保密性强,效率高,存储空间大,成本低等诸多优点。它可以降低信息管理成本,实现信息管理计算机化。
2.1 MYSQL数据库
本课题所开发的应用程序在数据操作方面是不可预知的,是经常变动的,没有办法直接把数据写在文档里,这样不仅仅不安全,也不能实现应用程序的功能。如果要能实现应用程序所需要的数据存储功能,就避免不了要进行专业数据库存储软件的选择。基本上应用程序实现的功能不算太复杂,市面上任何一个关系型数据库软件都可以实现。参考自己的学习进度和操作习惯来讲,Oracle数据库是适合的,但是所需要的的安装软件很大,并且有好多不需要的功能都是开启的状态,十分消耗电脑资源,所以没有选择Oracle数据库,而SQL Server数据库虽然学过,但是安装的时候因为电脑上可能有其他的软件存在,经常性的出问题,而安装问题不好解决就需要重新安装操作系统,这样对已经存在的软件来讲又是一种时间上的浪费。只有MySQL数据库,安装包小,安装速度快,操作简单,哪怕安装出问题也好解决,不用重装操作系统,也不影响电脑上运行的其他软件,消耗资源也少,最重要的是在功能方面完全的符合设计需要,所以最后选择了MySQL数据库作为应用软件开发需要的数据库。
2.2 JSP技术
在动态网站的兴起之初,作为高级编程语言的Java自然不会放弃这个领域的蛋糕。Sun公司推出了Servlet作为输出动态网站的一种技术标准,虽然不怎么受当时程序员的喜爱,但是当初也没有太多的选择,随后几个月PHP语言问世,不考虑性能和效率如何,起码在书写网页所需要的动态代码块和静态代码块方面进行了区分,让书写效率和可读效率大大的提升,所以很多Java程序员以及刚入行的初级程序员都选择了PHP语言作为自己职业的发展方向,Sun公司为了维护Java语言在高级编程语言上的江湖地位,防止PHP继续抢走市场份额占有率,Sun公司联合Apache基金会研发了一个关于Java动态网页的一个新型的技术标准,这就是JSP技术。JSP吸取了PHP语言在页面书写上面的所有优点,但是又背靠Java EE的庞大后台,又能实现很多通过Java组件就能实现的功能,在JSP页面上可以直接引用那些组件,让JSP更加的强壮丰富。保证了Java技术纵向的可持续发展,并且在动态网站开发领域终于站稳了脚跟,其他PHP开发人员可以很快的转移到JSP进行开发,不考虑一些特殊组件或者功能的开发,只从动态页面的开发上来讲,完全实现了PHP程序和JSP程序的几乎无成本的转换,JSP技术就这样的发展了起来。
2.3 SSM框架
SSM框架不是一个框架的名称,而是三个框架的首字母缩写,分别是Spring框架、SpringMVC框架、MyBatis框架。是目前Java开发者中学习的首选框架。
Spring框架继承了JavaEE和EJB框架的优点,在依赖注入方面去掉了臃肿的配置,在面向切面方面也简化了代码数量,提高了代码品质。依赖注解进行配置,让所有的依赖都可以通过程序的自动配置和寻找,减少了代码写作数量,提高了代码阅读性。
SpringMVC框架与Spring只是一个公司的,在底层代码结构上可以复用,但是最主要的功能是对数据提交请求进行过滤,并且对数据的返回进行过滤,不限于页面是JSP技术,也可以是其他的技术,更容易大型开发的集合技术。
MyBatis框架摒弃了Hibernate框架的配置臃肿方面,有时候Hibernate框架业务比较复杂的时候,代码量反而增加,性能下降,无法对底层的数据库语句优化,而MyBatis框架则有效的解决了这个方面,可以通过Java语句,对数据库操作语句进行优化,代码更简洁,执行效率更高,并且可以生产一些模块化代码,解决了开发过程中容易出现的实体映射方面的操作。
package com.controller;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.StringUtil;
import java.lang.reflect.InvocationTargetException;
import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.InOutOrderListEntity;
import com.service.InOutOrderListService;
import com.entity.view.InOutOrderListView;
import com.service.GoodsService;
import com.entity.GoodsEntity;
import com.service.InOutOrderService;
import com.entity.InOutOrderEntity;
import com.service.YonghuService;
import com.service.YuangongService;
import com.utils.PageUtils;
import com.utils.R;
/**
* 出入库订单详情
* 后端接口
* @author
* @email
*/
@RestController
@Controller
@RequestMapping("/inOutOrderList")
public class InOutOrderListController {
private static final Logger logger = LoggerFactory.getLogger(InOutOrderListController.class);
@Autowired
private InOutOrderListService inOutOrderListService;
@Autowired
private TokenService tokenService;
@Autowired
private DictionaryService dictionaryService;
//级联表service
@Autowired
private GoodsService goodsService;
@Autowired
private InOutOrderService inOutOrderService;
@Autowired
private YonghuService yonghuService;
@Autowired
private YuangongService yuangongService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
String role = String.valueOf(request.getSession().getAttribute("role"));
if(StringUtil.isEmpty(role)){
return R.error(511,"权限为空");
}
else if("用户".equals(role)){
params.put("yonghuId",request.getSession().getAttribute("userId"));
}
else if("员工".equals(role)){
params.put("yuangongId",request.getSession().getAttribute("userId"));
}
params.put("orderBy","id");
PageUtils page = inOutOrderListService.queryPage(params);
//字典表数据转换
List<InOutOrderListView> list =(List<InOutOrderListView>)page.getList();
for(InOutOrderListView c:list){
//修改对应字典表字段
dictionaryService.dictionaryConvert(c);
}
return R.ok().put("data", page);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
InOutOrderListEntity inOutOrderList = inOutOrderListService.selectById(id);
if(inOutOrderList !=null){
//entity转view
InOutOrderListView view = new InOutOrderListView();
BeanUtils.copyProperties( inOutOrderList , view );//把实体数据重构到view中
//级联表
GoodsEntity goods = goodsService.selectById(inOutOrderList.getGoodsId());
if(goods != null){
BeanUtils.copyProperties( goods , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
view.setGoodsId(goods.getId());
}
//级联表
InOutOrderEntity inOutOrder = inOutOrderService.selectById(inOutOrderList.getInOutOrderId());
if(inOutOrder != null){
BeanUtils.copyProperties( inOutOrder , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
view.setInOutOrderId(inOutOrder.getId());
}
//修改对应字典表字段
dictionaryService.dictionaryConvert(view);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到数据");
}
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody InOutOrderListEntity inOutOrderList, HttpServletRequest request){
logger.debug("save方法:,,Controller:{},,inOutOrderList:{}",this.getClass().getName(),inOutOrderList.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
if(StringUtil.isEmpty(role)){
return R.error(511,"权限为空");
}
inOutOrderList.setCreateTime(new Date());
inOutOrderListService.insert(inOutOrderList);
return R.ok();
}
/**
* 后端修改
*/
@RequestMapping("/update")
public R update(@RequestBody InOutOrderListEntity inOutOrderList, HttpServletRequest request){
logger.debug("update方法:,,Controller:{},,inOutOrderList:{}",this.getClass().getName(),inOutOrderList.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
if(StringUtil.isEmpty(role)){
return R.error(511,"权限为空");
}
inOutOrderListService.updateById(inOutOrderList);//根据id更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Integer[] ids){
logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
inOutOrderListService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 前端列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
String role = String.valueOf(request.getSession().getAttribute("role"));
if(StringUtil.isEmpty(role)){
return R.error(511,"权限为空");
}
else if("用户".equals(role)){
params.put("yonghuId",request.getSession().getAttribute("userId"));
}
else if("员工".equals(role)){
params.put("yuangongId",request.getSession().getAttribute("userId"));
}
// 没有指定排序字段就默认id倒序
if(StringUtil.isEmpty(String.valueOf(params.get("orderBy")))){
params.put("orderBy","id");
}
PageUtils page = inOutOrderListService.queryPage(params);
//字典表数据转换
List<InOutOrderListView> list =(List<InOutOrderListView>)page.getList();
for(InOutOrderListView c:list){
//修改对应字典表字段
dictionaryService.dictionaryConvert(c);
}
return R.ok().put("data", page);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
InOutOrderListEntity inOutOrderList = inOutOrderListService.selectById(id);
if(inOutOrderList !=null){
//entity转view
InOutOrderListView view = new InOutOrderListView();
BeanUtils.copyProperties( inOutOrderList , view );//把实体数据重构到view中
//级联表
GoodsEntity goods = goodsService.selectById(inOutOrderList.getGoodsId());
if(goods != null){
BeanUtils.copyProperties( goods , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
view.setGoodsId(goods.getId());
}
//级联表
InOutOrderEntity inOutOrder = inOutOrderService.selectById(inOutOrderList.getInOutOrderId());
if(inOutOrder != null){
BeanUtils.copyProperties( inOutOrder , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
view.setInOutOrderId(inOutOrder.getId());
}
//修改对应字典表字段
dictionaryService.dictionaryConvert(view);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到数据");
}
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody InOutOrderListEntity inOutOrderList, HttpServletRequest request){
logger.debug("add方法:,,Controller:{},,inOutOrderList:{}",this.getClass().getName(),inOutOrderList.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
if("用户".equals(role)){
// InOutListEntity inOutListEntity = inOutListService.selectById(inOutOrderList.getInOutListId());
// if(inOutListEntity == null){
// return R.error(511,"查不到该商品");
// }
// Double inOutListNewMoney = inOutListEntity.getInOutListNewMoney();
// if(inOutListNewMoney == null){
// return R.error(511,"商品价格不能为空");
// }
//
// Integer userId = (Integer) request.getSession().getAttribute("userId");
// YonghuEntity yonghuEntity = yonghuService.selectById(userId);
// if(yonghuEntity == null){
// return R.error(511,"用户不能为空");
// }
// if(yonghuEntity.getNewMoney() == null){
// return R.error(511,"用户金额不能为空");
// }
// double balance = yonghuEntity.getNewMoney() - inOutListEntity.getInOutListNewMoney();//余额
// if(balance<0){
// return R.error(511,"余额不够支付");
// }
inOutOrderList.setCreateTime(new Date());
inOutOrderListService.insert(inOutOrderList);//根据id更新
// yonghuEntity.setNewMoney(balance);
// yonghuService.updateById(yonghuEntity);
return R.ok();
}else{
return R.error(511,"您没有权限支付订单");
}
}
}