作者主页:编程指南针
作者简介:Java领域优质创作者、博客专家 、特邀作者、多年架构师设计经验、腾讯课堂常驻讲师
主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助
文末获取源码
项目编号:BS-XX-126
一,项目简介
本项目基于Springboot框架开发实现,主要针对汽车4S店的销售信息进行管理,名为4S管家,主要包含管理员用户和员工用户,主要实现的功能有汽车销售信息管理、配件销售订单管理、售后服务订单管理、库存管理、客户管理、员工管理、系统用户管理、日志管理、系统说明等。特色功能包含图形报表统计功能,数据导入导出功能等。
二,环境介绍
语言环境:Java: jdk1.8
数据库:Mysql: mysql5.7
应用服务器:Tomcat: tomcat8.5.31
开发工具:IDEA或eclipse
后台开发技术:Springboot+Mybatis
前端开发技术:Bootstrap+Jquery+Ajax
三,系统展示
系统登陆
仪表盘
汽车订单管理
配件订单管理
售后订单管理
汽车库存管理
配件库存管理
客户管理
员工管理
员工管理
日志管理
Druid监控
四,核心代码展示
package com.gk.carshopsys.controller;
import com.github.pagehelper.PageInfo;
import com.gk.carshopsys.annotation.Log;
import com.gk.carshopsys.pojo.Admin;
import com.gk.carshopsys.service.AdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap;
import javax.servlet.http.HttpSession;
import java.lang.reflect.Array;
import java.sql.Date;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class AdminController {
@Autowired
private AdminService adminService;
//初始页面跳转登录页
@RequestMapping("/")
public String tologin(){
return "login";
};
//跳转登录页
@RequestMapping("/login")
public String login(){
return "login";
};
//主页跳转
@RequestMapping("/index")
public String toindex(){return "index";}
//登录页响应页面跳转
@PostMapping ("/login.action")
public String adminlogin(@RequestParam("user") String user,
@RequestParam("username") String username,
@RequestParam("password") String password, Model model, HttpSession session){
Admin admin=adminService.loginAdmin(username,password);
if(admin!=null){
session.setAttribute("loginUser",username);
return "redirect:/index";
}else{
model.addAttribute("msg", "密码或者账号有误,请重新输入");
return "login";
}
} ;
//退出登录
@RequestMapping("/logout")
public String logout(HttpSession session){
session.invalidate();
return "redirect:/login";
};
//管理员用户列表跳转
@RequestMapping("/adminlist")
public String toadminlist(){
return "adminlist";
};
//返回管理员用户列表
@Log("查询管理员")
@RequestMapping("/adminlist/query")
@ResponseBody
public List<Admin> findAdmin(@RequestBody Map<String,String> param){
String username = param.get("username");
String id_s = param.get("id");
if (id_s!=null && !id_s.equals("")){
try{
Integer id = Integer.parseInt(id_s);
return adminService.findAdminByIdAndUsername(id,username);
}catch (ClassCastException e){
return adminService.findAdminByIdAndUsername(null,username);
}
}else {
return adminService.findAdminByIdAndUsername(null,username);
}
};
//管理员用户添加
//RedirectAttributesModelMap类防止重定向后model丢失
@Log("添加管理员")
@PostMapping("/adminlist/add")
public String adminlistadd(@RequestParam("add_adminname") String username,
@RequestParam("add_password") String password,RedirectAttributesModelMap model){
int result = adminService.addAdmin(username,password);
if(result==-1){
model.addFlashAttribute("addmsg","插入失败,用户名已存在,请重新插入");
return "redirect:/adminlist";
}
if(result==1){
model.addFlashAttribute("addmsg","插入成功");
}else{
model.addFlashAttribute("addmsg","插入未知错误");
}
return "redirect:/adminlist";
};
// 管理员用户更新
@Log("修改管理员")
@PostMapping("/adminlist/upadte")
public String adminlistupadte(@RequestParam("update_id") Integer id,
@RequestParam("update_adminname") String username,
@RequestParam("update_password") String password,RedirectAttributesModelMap model){
int result=adminService.updateAdmin(id,username,password);
if(result==-1){
model.addFlashAttribute("updatemsg","修改失败,用户名已存在,请重新修改");
return "redirect:/adminlist";
}
if (result==1){
model.addFlashAttribute("updatemsg","修改成功");
}else {
model.addFlashAttribute("updatemsg","修改失败,未知错误");
}
return "redirect:/adminlist";
};
//管理员用户批量删除
@Log("删除管理员")
@ResponseBody
@RequestMapping("/adminlist/del")
public Map<String,Integer> adminlistdel(@RequestBody List<Integer> ids){
int result = adminService.delAdmin(ids);
Map<String,Integer> map = new HashMap<>();
map.put("code",result);
return map;
}
}
package com.gk.carshopsys.controller;
import com.alibaba.excel.EasyExcel;
import com.gk.carshopsys.annotation.Log;
import com.gk.carshopsys.pojo.Car;
import com.gk.carshopsys.pojo.Cust;
import com.gk.carshopsys.service.CarService;
import com.gk.carshopsys.utils.CarDataListener;
import com.gk.carshopsys.utils.CustDataListener;
import com.gk.carshopsys.utils.ExcelUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class CarController {
@Autowired
private CarService carService;
//Excel参数
private HashMap<String,String> param;
//excel传参
@PostMapping("/carlist/excelparamset")
@ResponseBody
public void excelset(@RequestBody HashMap<String,String> params){
param= params;
}
//excel下载
@Log("导出汽车库存")
@GetMapping("/carlist/excelexport")
@ResponseBody
public String excelexport(HttpServletResponse response) throws Exception {
//导出的参数
String id_s = param.get("id");
String carname = param.get("carname");
String brand = param.get("brand");
String color = param.get("color");
String type = param.get("type");
String configuration = param.get("configuration");
String low_price = param.get("low_price");//需要转型
String hight_price = param.get("hight_price");//需要转型
Car car = new Car();
if(id_s!=null && !id_s.equals("")){
try {
Long id = Long.valueOf(id_s);
car.setId(id);
}catch (ClassCastException e){
}finally {
car.setBrand(brand);
car.setCarname(carname);
car.setColor(color);
car.setType(type);
car.setConfiguration(configuration);
}
}
car.setBrand(brand);
car.setCarname(carname);
car.setColor(color);
car.setType(type);
car.setConfiguration(configuration);
ExcelUtils.export2Web(response, "汽车库存表", "汽车库存信息",Car.class,carService.findCar(car,low_price,hight_price));
return "success";
}
// easyexcel上传文件
@Log("导入汽车库存")
@PostMapping("/carlist/excelimport")
public String upload(MultipartFile file, RedirectAttributesModelMap model) throws IOException {
EasyExcel.read(file.getInputStream(), Car.class, new CarDataListener(carService)).sheet().doRead();
return "redirect:/carlist";
}
//批量删除车型
@Log("删除汽车库存")
@ResponseBody
@RequestMapping("/carlist/del")
public Map<String,Integer> carlistdel(@RequestBody List<Integer> ids){
int result = carService.delCar(ids);
Map<String,Integer> map = new HashMap<>();
map.put("code",result);
return map;
}
@Log("更新汽车库存")
@RequestMapping("/carlist/update")
public String carUpdate(@RequestParam("update_id") Long id,
@RequestParam("update_brand") String brand,
@RequestParam("update_carname") String carname,
@RequestParam("update_price") Long price,
@RequestParam("update_color") String color,
@RequestParam("update_type") String type,
@RequestParam("update_quantity") Long quantity,
@RequestParam("update_configuration") String configuration,
RedirectAttributesModelMap model){
Car car = new Car(id,brand,carname,price,color,type,quantity,configuration);
int result =carService.updateCar(car);
if(result==1){
model.addFlashAttribute("addmsg","修改成功");
}else {
model.addFlashAttribute("addmsg","修改失败");
}
return "redirect:/carlist";
}
//查询车辆库存
@Log("查询汽车库存")
@RequestMapping("/carlist/query")
@ResponseBody
public List<Car> queryCar(@RequestBody HashMap<String,String> params){
String id_s = params.get("id");
String carname = params.get("carname");
String brand = params.get("brand");
String color = params.get("color");
String type = params.get("type");
String configuration = params.get("configuration");
String low_price = params.get("low_price");//需要转型
String hight_price = params.get("hight_price");//需要转型
Car car = new Car();
if(id_s!=null && !id_s.equals("")){
try {
Long id = Long.valueOf(id_s);
car.setId(id);
}catch (ClassCastException e){
}finally {
car.setBrand(brand);
car.setCarname(carname);
car.setColor(color);
car.setType(type);
car.setConfiguration(configuration);
}
}
car.setBrand(brand);
car.setCarname(carname);
car.setColor(color);
car.setType(type);
car.setConfiguration(configuration);
return carService.findCar(car,low_price,hight_price);
}
@Log("添加汽车库存")
@RequestMapping("/carlist/add")
public String carAdd(@RequestParam("add_brand") String brand,
@RequestParam("add_carname") String carname,
@RequestParam("add_price") Long price,
@RequestParam("add_color") String color,
@RequestParam("add_type") String type,
@RequestParam("add_quantity") Long quantity,
@RequestParam("add_configuration") String configuration,
RedirectAttributesModelMap model){
Car car = new Car(brand,carname,price,color,type,quantity,configuration);
int result =carService.addCar(car);
if(result==1){
model.addFlashAttribute("addmsg","添加车型成功");
}else {
model.addFlashAttribute("addmsg","添加车型失败,未知错误");
}
return "redirect:/carlist";
}
//跳转车辆库存管理页面
@RequestMapping("/carlist")
public String tocarlist(){
return "carlist";
}
}
package com.gk.carshopsys.controller;
import com.alibaba.excel.EasyExcel;
import com.gk.carshopsys.annotation.Log;
import com.gk.carshopsys.pojo.Car;
import com.gk.carshopsys.pojo.CarOrder;
import com.gk.carshopsys.pojo.CarOrderImport;
import com.gk.carshopsys.pojo.Cust;
import com.gk.carshopsys.service.CarOrderService;
import com.gk.carshopsys.utils.CarDataListener;
import com.gk.carshopsys.utils.CarOrderDataListener;
import com.gk.carshopsys.utils.ExcelUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class CarOrderController {
@Autowired
CarOrderService carOrderService;
//Excel参数
private HashMap<String,String> param;
//excel传参
@PostMapping("/carorderlist/excelparamset")
@ResponseBody
public void excelset(@RequestBody HashMap<String,String> params){
param= params;
}
//excel下载
@Log("导出汽车订单")
@GetMapping("/carorderlist/excelexport")
@ResponseBody
public String excelexport(HttpServletResponse response) throws Exception {
ExcelUtils.export2Web(response, "汽车订单表", "订单信息",CarOrder.class,carOrderService.findCarOrder(param));
return "success";
}
// easyexcel上传文件
@Log("导入汽车订单")
@PostMapping("/carorderlist/excelimport")
public String upload(MultipartFile file, RedirectAttributesModelMap model) throws IOException {
EasyExcel.read(file.getInputStream(), CarOrderImport.class, new CarOrderDataListener(carOrderService)).sheet().doRead();
return "redirect:/carorderlist";
}
@RequestMapping("/carorderlist")
public String toCarOrder(){
return "carorderlist";
}
@Log("查询汽车订单")
@RequestMapping("/carorderlist/query")
@ResponseBody
public List<CarOrder> quryCarOrderList(@RequestBody HashMap<String,String> params){
return carOrderService.findCarOrder(params);
}
@Log("添加汽车订单")
@RequestMapping("/carorderlist/add")
public String addCarOrder(@RequestParam("add_carid") Long carid,
@RequestParam("add_custid") Long custid,
@RequestParam("add_empnum") String empnum,
@RequestParam("add_quantity") Integer quantity,
@RequestParam("add_state") String state,
@RequestParam("add_remarks") String remarks, RedirectAttributesModelMap model){
int result = carOrderService.addCarOrder(carid,custid,empnum,quantity,state,remarks);
if (result==-1){
model.addFlashAttribute("addmsg","添加失败,车辆不存在");
return "redirect:/carorderlist";
}
if (result==-2){
model.addFlashAttribute("addmsg","添加失败,客户不存在");
return "redirect:/carorderlist";
}
if (result==-3){
model.addFlashAttribute("addmsg","添加失败,员工不存在");
return "redirect:/carorderlist";
}
if (result==-4){
model.addFlashAttribute("addmsg","添加失败,库存不足");
return "redirect:/carorderlist";
}
if (result==1){
model.addFlashAttribute("addmsg","添加订单成功");
return "redirect:/carorderlist";
}else{
model.addFlashAttribute("addmsg","添加订单失败,未知错误");
return "redirect:/carorderlist";
}
}
@Log("更新汽车订单")
@RequestMapping("/carorderlist/update")
public String updateCarOrder(@RequestParam("update_id") Long id,
@RequestParam("update_state") String state,
@RequestParam("update_remarks") String remarks,
@RequestParam("update_quantity") Long quantity,
@RequestParam("update_carid") Long carid,RedirectAttributesModelMap model){
CarOrder carOrder = new CarOrder();
carOrder.setId(id);
carOrder.setRemarks(remarks);
carOrder.setCarid(carid);
if(state.equals("取消订单")){
carOrder.setState("已取消");
}else{
carOrder.setState(state);
}
int result = carOrderService.updateCarOrderById(carOrder,quantity);
if (result==1){
model.addFlashAttribute("addmsg","修改订单成功");
return "redirect:/carorderlist";
}else{
model.addFlashAttribute("addmsg","修改订单失败,未知错误");
return "redirect:/carorderlist";
}
}
//批量删除订单
//订单批量删除
@Log("删除汽车订单")
@ResponseBody
@RequestMapping("/carorderlist/del")
public Map<String,Integer> carorderlistdel(@RequestBody List<Integer> ids){
int result = carOrderService.delCarOrder(ids);
Map<String,Integer> map = new HashMap<>();
map.put("code",result);
return map;
}
}
package com.gk.carshopsys.controller;
import com.alibaba.excel.EasyExcel;
import com.gk.carshopsys.annotation.Log;
import com.gk.carshopsys.pojo.Cust;
import com.gk.carshopsys.pojo.Emp;
import com.gk.carshopsys.service.CustService;
import com.gk.carshopsys.utils.CustDataListener;
import com.gk.carshopsys.utils.EmpDataListener;
import com.gk.carshopsys.utils.ExcelUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class CustController {
@Autowired
CustService custService;
//Excel参数
private HashMap<String,String> param;
//excel传参
@PostMapping("/custlist/excelparamset")
@ResponseBody
public void excelset(@RequestBody HashMap<String,String> params){
param= params;
}
//excel下载
@Log("导出客户")
@GetMapping("/custlist/excelexport")
@ResponseBody
public String excelexport(HttpServletResponse response) throws Exception {
//导出的参数
String custid_s = param.get("custid");
String custname = param.get("custname");
String job = param.get("job");
String address = param.get("address");
Cust cust = new Cust();
if (custid_s!=null && !custid_s.equals("")){
try{
Long custid=Long.parseLong(custid_s);
cust.setid(custid);
}catch (ClassCastException e){
}finally {
cust.setCust_name(custname);
cust.setJob(job);
cust.setAddress(address);
ExcelUtils.export2Web(response, "客户表", "客户信息",Cust.class,custService.findCust(cust));
return "success";
}
}else {
cust.setCust_name(custname);
cust.setJob(job);
cust.setAddress(address);
ExcelUtils.export2Web(response, "客户表", "客户信息",Cust.class,custService.findCust(cust));
return "success";
}
}
// easyexcel上传文件
@Log("导入客户")
@PostMapping("/custlist/excelimport")
public String upload(MultipartFile file, RedirectAttributesModelMap model) throws IOException {
EasyExcel.read(file.getInputStream(), Cust.class, new CustDataListener(custService)).sheet().doRead();
return "redirect:/custlist";
}
//跳转客户管理页面
@RequestMapping("/custlist")
public String tocustlist(){
return "custlist";
}
//返回查询客户列表
@Log("查询客户")
@RequestMapping("/custlist/query")
@ResponseBody
public List<Cust> findcust(@RequestBody HashMap<String,String> params){
//接收的数据
String custid_s = params.get("custid");
String custname = params.get("custname");
String job = params.get("job");
String address = params.get("address");
Cust cust = new Cust();
if (custid_s!=null && !custid_s.equals("")){
try{
Long custid=Long.parseLong(custid_s);
cust.setid(custid);
}catch (ClassCastException e){
}finally {
cust.setCust_name(custname);
cust.setJob(job);
cust.setAddress(address);
return custService.findCust(cust);
}
}else {
cust.setCust_name(custname);
cust.setJob(job);
cust.setAddress(address);
return custService.findCust(cust);
}
}
// 添加客户
@Log("添加客户")
@PostMapping("/custlist/add")
public String addcust(@RequestParam("add_custname") String name,
@RequestParam("add_sex") String sex,
@RequestParam("add_job") String job,
@RequestParam("add_telphone") String telphone,
@RequestParam("add_address") String address,
RedirectAttributesModelMap model){
Cust add_cust =new Cust(name,sex,job,telphone,address);
int result = custService.addCust(add_cust);
if(result==1){
model.addFlashAttribute("addmsg","添加客户成功");
return "redirect:/custlist";
}else {
model.addFlashAttribute("addmsg","添加客户失败,未知错误");
return "redirect:/custlist";
}
}
//更新修改客户
@Log("更新客户")
@PostMapping("/custlist/update")
public String updatecust(@RequestParam("update_custid") Long id,
@RequestParam("update_custname") String name,
@RequestParam("update_sex") String sex,
@RequestParam("update_job") String job,
@RequestParam("update_telphone") String telphone,
@RequestParam("update_address") String address,
RedirectAttributesModelMap model){
Cust update_cust =new Cust(id,name,sex,job,telphone,address);
int result = custService.updateCust(update_cust);
if(result==1){
model.addFlashAttribute("updatemsg","修改客户成功");
return "redirect:/custlist";
}else {
model.addFlashAttribute("updatemsg","修改客户失败,未知错误");
return "redirect:/custlist";
}
}
//批量删除客户
//客户批量删除
@Log("删除客户")
@ResponseBody
@RequestMapping("/custlist/del")
public Map<String,Integer> custlistdel(@RequestBody List<Integer> ids){
int result = custService.delCust(ids);
Map<String,Integer> map = new HashMap<>();
map.put("code",result);
return map;
}
}
五,项目总结
项目整体设计简洁大方,功能实用性强,前后端交互比较符合人性化需求,比较适合用做毕业设计和课程设计使用。