• 基于Springboot实现汽车4S店销售管理系统


    作者主页:编程指南针

    作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师

    主要内容: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监控

    四,核心代码展示

    1. package com.gk.carshopsys.controller;
    2. import com.github.pagehelper.PageInfo;
    3. import com.gk.carshopsys.annotation.Log;
    4. import com.gk.carshopsys.pojo.Admin;
    5. import com.gk.carshopsys.service.AdminService;
    6. import org.springframework.beans.factory.annotation.Autowired;
    7. import org.springframework.stereotype.Controller;
    8. import org.springframework.stereotype.Service;
    9. import org.springframework.ui.Model;
    10. import org.springframework.web.bind.annotation.*;
    11. import org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap;
    12. import javax.servlet.http.HttpSession;
    13. import java.lang.reflect.Array;
    14. import java.sql.Date;
    15. import java.util.Arrays;
    16. import java.util.HashMap;
    17. import java.util.List;
    18. import java.util.Map;
    19. @Controller
    20. public class AdminController {
    21. @Autowired
    22. private AdminService adminService;
    23. //初始页面跳转登录页
    24. @RequestMapping("/")
    25. public String tologin(){
    26. return "login";
    27. };
    28. //跳转登录页
    29. @RequestMapping("/login")
    30. public String login(){
    31. return "login";
    32. };
    33. //主页跳转
    34. @RequestMapping("/index")
    35. public String toindex(){return "index";}
    36. //登录页响应页面跳转
    37. @PostMapping ("/login.action")
    38. public String adminlogin(@RequestParam("user") String user,
    39. @RequestParam("username") String username,
    40. @RequestParam("password") String password, Model model, HttpSession session){
    41. Admin admin=adminService.loginAdmin(username,password);
    42. if(admin!=null){
    43. session.setAttribute("loginUser",username);
    44. return "redirect:/index";
    45. }else{
    46. model.addAttribute("msg", "密码或者账号有误,请重新输入");
    47. return "login";
    48. }
    49. } ;
    50. //退出登录
    51. @RequestMapping("/logout")
    52. public String logout(HttpSession session){
    53. session.invalidate();
    54. return "redirect:/login";
    55. };
    56. //管理员用户列表跳转
    57. @RequestMapping("/adminlist")
    58. public String toadminlist(){
    59. return "adminlist";
    60. };
    61. //返回管理员用户列表
    62. @Log("查询管理员")
    63. @RequestMapping("/adminlist/query")
    64. @ResponseBody
    65. public List findAdmin(@RequestBody Map param){
    66. String username = param.get("username");
    67. String id_s = param.get("id");
    68. if (id_s!=null && !id_s.equals("")){
    69. try{
    70. Integer id = Integer.parseInt(id_s);
    71. return adminService.findAdminByIdAndUsername(id,username);
    72. }catch (ClassCastException e){
    73. return adminService.findAdminByIdAndUsername(null,username);
    74. }
    75. }else {
    76. return adminService.findAdminByIdAndUsername(null,username);
    77. }
    78. };
    79. //管理员用户添加
    80. //RedirectAttributesModelMap类防止重定向后model丢失
    81. @Log("添加管理员")
    82. @PostMapping("/adminlist/add")
    83. public String adminlistadd(@RequestParam("add_adminname") String username,
    84. @RequestParam("add_password") String password,RedirectAttributesModelMap model){
    85. int result = adminService.addAdmin(username,password);
    86. if(result==-1){
    87. model.addFlashAttribute("addmsg","插入失败,用户名已存在,请重新插入");
    88. return "redirect:/adminlist";
    89. }
    90. if(result==1){
    91. model.addFlashAttribute("addmsg","插入成功");
    92. }else{
    93. model.addFlashAttribute("addmsg","插入未知错误");
    94. }
    95. return "redirect:/adminlist";
    96. };
    97. // 管理员用户更新
    98. @Log("修改管理员")
    99. @PostMapping("/adminlist/upadte")
    100. public String adminlistupadte(@RequestParam("update_id") Integer id,
    101. @RequestParam("update_adminname") String username,
    102. @RequestParam("update_password") String password,RedirectAttributesModelMap model){
    103. int result=adminService.updateAdmin(id,username,password);
    104. if(result==-1){
    105. model.addFlashAttribute("updatemsg","修改失败,用户名已存在,请重新修改");
    106. return "redirect:/adminlist";
    107. }
    108. if (result==1){
    109. model.addFlashAttribute("updatemsg","修改成功");
    110. }else {
    111. model.addFlashAttribute("updatemsg","修改失败,未知错误");
    112. }
    113. return "redirect:/adminlist";
    114. };
    115. //管理员用户批量删除
    116. @Log("删除管理员")
    117. @ResponseBody
    118. @RequestMapping("/adminlist/del")
    119. public Map adminlistdel(@RequestBody List ids){
    120. int result = adminService.delAdmin(ids);
    121. Map map = new HashMap<>();
    122. map.put("code",result);
    123. return map;
    124. }
    125. }
    1. package com.gk.carshopsys.controller;
    2. import com.alibaba.excel.EasyExcel;
    3. import com.gk.carshopsys.annotation.Log;
    4. import com.gk.carshopsys.pojo.Car;
    5. import com.gk.carshopsys.pojo.Cust;
    6. import com.gk.carshopsys.service.CarService;
    7. import com.gk.carshopsys.utils.CarDataListener;
    8. import com.gk.carshopsys.utils.CustDataListener;
    9. import com.gk.carshopsys.utils.ExcelUtils;
    10. import org.springframework.beans.factory.annotation.Autowired;
    11. import org.springframework.stereotype.Controller;
    12. import org.springframework.web.bind.annotation.*;
    13. import org.springframework.web.multipart.MultipartFile;
    14. import org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap;
    15. import javax.servlet.http.HttpServletResponse;
    16. import java.io.IOException;
    17. import java.util.HashMap;
    18. import java.util.List;
    19. import java.util.Map;
    20. @Controller
    21. public class CarController {
    22. @Autowired
    23. private CarService carService;
    24. //Excel参数
    25. private HashMap param;
    26. //excel传参
    27. @PostMapping("/carlist/excelparamset")
    28. @ResponseBody
    29. public void excelset(@RequestBody HashMap params){
    30. param= params;
    31. }
    32. //excel下载
    33. @Log("导出汽车库存")
    34. @GetMapping("/carlist/excelexport")
    35. @ResponseBody
    36. public String excelexport(HttpServletResponse response) throws Exception {
    37. //导出的参数
    38. String id_s = param.get("id");
    39. String carname = param.get("carname");
    40. String brand = param.get("brand");
    41. String color = param.get("color");
    42. String type = param.get("type");
    43. String configuration = param.get("configuration");
    44. String low_price = param.get("low_price");//需要转型
    45. String hight_price = param.get("hight_price");//需要转型
    46. Car car = new Car();
    47. if(id_s!=null && !id_s.equals("")){
    48. try {
    49. Long id = Long.valueOf(id_s);
    50. car.setId(id);
    51. }catch (ClassCastException e){
    52. }finally {
    53. car.setBrand(brand);
    54. car.setCarname(carname);
    55. car.setColor(color);
    56. car.setType(type);
    57. car.setConfiguration(configuration);
    58. }
    59. }
    60. car.setBrand(brand);
    61. car.setCarname(carname);
    62. car.setColor(color);
    63. car.setType(type);
    64. car.setConfiguration(configuration);
    65. ExcelUtils.export2Web(response, "汽车库存表", "汽车库存信息",Car.class,carService.findCar(car,low_price,hight_price));
    66. return "success";
    67. }
    68. // easyexcel上传文件
    69. @Log("导入汽车库存")
    70. @PostMapping("/carlist/excelimport")
    71. public String upload(MultipartFile file, RedirectAttributesModelMap model) throws IOException {
    72. EasyExcel.read(file.getInputStream(), Car.class, new CarDataListener(carService)).sheet().doRead();
    73. return "redirect:/carlist";
    74. }
    75. //批量删除车型
    76. @Log("删除汽车库存")
    77. @ResponseBody
    78. @RequestMapping("/carlist/del")
    79. public Map carlistdel(@RequestBody List ids){
    80. int result = carService.delCar(ids);
    81. Map map = new HashMap<>();
    82. map.put("code",result);
    83. return map;
    84. }
    85. @Log("更新汽车库存")
    86. @RequestMapping("/carlist/update")
    87. public String carUpdate(@RequestParam("update_id") Long id,
    88. @RequestParam("update_brand") String brand,
    89. @RequestParam("update_carname") String carname,
    90. @RequestParam("update_price") Long price,
    91. @RequestParam("update_color") String color,
    92. @RequestParam("update_type") String type,
    93. @RequestParam("update_quantity") Long quantity,
    94. @RequestParam("update_configuration") String configuration,
    95. RedirectAttributesModelMap model){
    96. Car car = new Car(id,brand,carname,price,color,type,quantity,configuration);
    97. int result =carService.updateCar(car);
    98. if(result==1){
    99. model.addFlashAttribute("addmsg","修改成功");
    100. }else {
    101. model.addFlashAttribute("addmsg","修改失败");
    102. }
    103. return "redirect:/carlist";
    104. }
    105. //查询车辆库存
    106. @Log("查询汽车库存")
    107. @RequestMapping("/carlist/query")
    108. @ResponseBody
    109. public List queryCar(@RequestBody HashMap params){
    110. String id_s = params.get("id");
    111. String carname = params.get("carname");
    112. String brand = params.get("brand");
    113. String color = params.get("color");
    114. String type = params.get("type");
    115. String configuration = params.get("configuration");
    116. String low_price = params.get("low_price");//需要转型
    117. String hight_price = params.get("hight_price");//需要转型
    118. Car car = new Car();
    119. if(id_s!=null && !id_s.equals("")){
    120. try {
    121. Long id = Long.valueOf(id_s);
    122. car.setId(id);
    123. }catch (ClassCastException e){
    124. }finally {
    125. car.setBrand(brand);
    126. car.setCarname(carname);
    127. car.setColor(color);
    128. car.setType(type);
    129. car.setConfiguration(configuration);
    130. }
    131. }
    132. car.setBrand(brand);
    133. car.setCarname(carname);
    134. car.setColor(color);
    135. car.setType(type);
    136. car.setConfiguration(configuration);
    137. return carService.findCar(car,low_price,hight_price);
    138. }
    139. @Log("添加汽车库存")
    140. @RequestMapping("/carlist/add")
    141. public String carAdd(@RequestParam("add_brand") String brand,
    142. @RequestParam("add_carname") String carname,
    143. @RequestParam("add_price") Long price,
    144. @RequestParam("add_color") String color,
    145. @RequestParam("add_type") String type,
    146. @RequestParam("add_quantity") Long quantity,
    147. @RequestParam("add_configuration") String configuration,
    148. RedirectAttributesModelMap model){
    149. Car car = new Car(brand,carname,price,color,type,quantity,configuration);
    150. int result =carService.addCar(car);
    151. if(result==1){
    152. model.addFlashAttribute("addmsg","添加车型成功");
    153. }else {
    154. model.addFlashAttribute("addmsg","添加车型失败,未知错误");
    155. }
    156. return "redirect:/carlist";
    157. }
    158. //跳转车辆库存管理页面
    159. @RequestMapping("/carlist")
    160. public String tocarlist(){
    161. return "carlist";
    162. }
    163. }

    1. package com.gk.carshopsys.controller;
    2. import com.alibaba.excel.EasyExcel;
    3. import com.gk.carshopsys.annotation.Log;
    4. import com.gk.carshopsys.pojo.Car;
    5. import com.gk.carshopsys.pojo.CarOrder;
    6. import com.gk.carshopsys.pojo.CarOrderImport;
    7. import com.gk.carshopsys.pojo.Cust;
    8. import com.gk.carshopsys.service.CarOrderService;
    9. import com.gk.carshopsys.utils.CarDataListener;
    10. import com.gk.carshopsys.utils.CarOrderDataListener;
    11. import com.gk.carshopsys.utils.ExcelUtils;
    12. import org.springframework.beans.factory.annotation.Autowired;
    13. import org.springframework.stereotype.Controller;
    14. import org.springframework.web.bind.annotation.*;
    15. import org.springframework.web.multipart.MultipartFile;
    16. import org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap;
    17. import javax.servlet.http.HttpServletResponse;
    18. import java.io.IOException;
    19. import java.util.HashMap;
    20. import java.util.List;
    21. import java.util.Map;
    22. @Controller
    23. public class CarOrderController {
    24. @Autowired
    25. CarOrderService carOrderService;
    26. //Excel参数
    27. private HashMap param;
    28. //excel传参
    29. @PostMapping("/carorderlist/excelparamset")
    30. @ResponseBody
    31. public void excelset(@RequestBody HashMap params){
    32. param= params;
    33. }
    34. //excel下载
    35. @Log("导出汽车订单")
    36. @GetMapping("/carorderlist/excelexport")
    37. @ResponseBody
    38. public String excelexport(HttpServletResponse response) throws Exception {
    39. ExcelUtils.export2Web(response, "汽车订单表", "订单信息",CarOrder.class,carOrderService.findCarOrder(param));
    40. return "success";
    41. }
    42. // easyexcel上传文件
    43. @Log("导入汽车订单")
    44. @PostMapping("/carorderlist/excelimport")
    45. public String upload(MultipartFile file, RedirectAttributesModelMap model) throws IOException {
    46. EasyExcel.read(file.getInputStream(), CarOrderImport.class, new CarOrderDataListener(carOrderService)).sheet().doRead();
    47. return "redirect:/carorderlist";
    48. }
    49. @RequestMapping("/carorderlist")
    50. public String toCarOrder(){
    51. return "carorderlist";
    52. }
    53. @Log("查询汽车订单")
    54. @RequestMapping("/carorderlist/query")
    55. @ResponseBody
    56. public List quryCarOrderList(@RequestBody HashMap params){
    57. return carOrderService.findCarOrder(params);
    58. }
    59. @Log("添加汽车订单")
    60. @RequestMapping("/carorderlist/add")
    61. public String addCarOrder(@RequestParam("add_carid") Long carid,
    62. @RequestParam("add_custid") Long custid,
    63. @RequestParam("add_empnum") String empnum,
    64. @RequestParam("add_quantity") Integer quantity,
    65. @RequestParam("add_state") String state,
    66. @RequestParam("add_remarks") String remarks, RedirectAttributesModelMap model){
    67. int result = carOrderService.addCarOrder(carid,custid,empnum,quantity,state,remarks);
    68. if (result==-1){
    69. model.addFlashAttribute("addmsg","添加失败,车辆不存在");
    70. return "redirect:/carorderlist";
    71. }
    72. if (result==-2){
    73. model.addFlashAttribute("addmsg","添加失败,客户不存在");
    74. return "redirect:/carorderlist";
    75. }
    76. if (result==-3){
    77. model.addFlashAttribute("addmsg","添加失败,员工不存在");
    78. return "redirect:/carorderlist";
    79. }
    80. if (result==-4){
    81. model.addFlashAttribute("addmsg","添加失败,库存不足");
    82. return "redirect:/carorderlist";
    83. }
    84. if (result==1){
    85. model.addFlashAttribute("addmsg","添加订单成功");
    86. return "redirect:/carorderlist";
    87. }else{
    88. model.addFlashAttribute("addmsg","添加订单失败,未知错误");
    89. return "redirect:/carorderlist";
    90. }
    91. }
    92. @Log("更新汽车订单")
    93. @RequestMapping("/carorderlist/update")
    94. public String updateCarOrder(@RequestParam("update_id") Long id,
    95. @RequestParam("update_state") String state,
    96. @RequestParam("update_remarks") String remarks,
    97. @RequestParam("update_quantity") Long quantity,
    98. @RequestParam("update_carid") Long carid,RedirectAttributesModelMap model){
    99. CarOrder carOrder = new CarOrder();
    100. carOrder.setId(id);
    101. carOrder.setRemarks(remarks);
    102. carOrder.setCarid(carid);
    103. if(state.equals("取消订单")){
    104. carOrder.setState("已取消");
    105. }else{
    106. carOrder.setState(state);
    107. }
    108. int result = carOrderService.updateCarOrderById(carOrder,quantity);
    109. if (result==1){
    110. model.addFlashAttribute("addmsg","修改订单成功");
    111. return "redirect:/carorderlist";
    112. }else{
    113. model.addFlashAttribute("addmsg","修改订单失败,未知错误");
    114. return "redirect:/carorderlist";
    115. }
    116. }
    117. //批量删除订单
    118. //订单批量删除
    119. @Log("删除汽车订单")
    120. @ResponseBody
    121. @RequestMapping("/carorderlist/del")
    122. public Map carorderlistdel(@RequestBody List ids){
    123. int result = carOrderService.delCarOrder(ids);
    124. Map map = new HashMap<>();
    125. map.put("code",result);
    126. return map;
    127. }
    128. }

    1. package com.gk.carshopsys.controller;
    2. import com.alibaba.excel.EasyExcel;
    3. import com.gk.carshopsys.annotation.Log;
    4. import com.gk.carshopsys.pojo.Cust;
    5. import com.gk.carshopsys.pojo.Emp;
    6. import com.gk.carshopsys.service.CustService;
    7. import com.gk.carshopsys.utils.CustDataListener;
    8. import com.gk.carshopsys.utils.EmpDataListener;
    9. import com.gk.carshopsys.utils.ExcelUtils;
    10. import org.springframework.beans.factory.annotation.Autowired;
    11. import org.springframework.stereotype.Controller;
    12. import org.springframework.web.bind.annotation.*;
    13. import org.springframework.web.multipart.MultipartFile;
    14. import org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap;
    15. import javax.servlet.http.HttpServletResponse;
    16. import java.io.IOException;
    17. import java.util.HashMap;
    18. import java.util.List;
    19. import java.util.Map;
    20. @Controller
    21. public class CustController {
    22. @Autowired
    23. CustService custService;
    24. //Excel参数
    25. private HashMap param;
    26. //excel传参
    27. @PostMapping("/custlist/excelparamset")
    28. @ResponseBody
    29. public void excelset(@RequestBody HashMap params){
    30. param= params;
    31. }
    32. //excel下载
    33. @Log("导出客户")
    34. @GetMapping("/custlist/excelexport")
    35. @ResponseBody
    36. public String excelexport(HttpServletResponse response) throws Exception {
    37. //导出的参数
    38. String custid_s = param.get("custid");
    39. String custname = param.get("custname");
    40. String job = param.get("job");
    41. String address = param.get("address");
    42. Cust cust = new Cust();
    43. if (custid_s!=null && !custid_s.equals("")){
    44. try{
    45. Long custid=Long.parseLong(custid_s);
    46. cust.setid(custid);
    47. }catch (ClassCastException e){
    48. }finally {
    49. cust.setCust_name(custname);
    50. cust.setJob(job);
    51. cust.setAddress(address);
    52. ExcelUtils.export2Web(response, "客户表", "客户信息",Cust.class,custService.findCust(cust));
    53. return "success";
    54. }
    55. }else {
    56. cust.setCust_name(custname);
    57. cust.setJob(job);
    58. cust.setAddress(address);
    59. ExcelUtils.export2Web(response, "客户表", "客户信息",Cust.class,custService.findCust(cust));
    60. return "success";
    61. }
    62. }
    63. // easyexcel上传文件
    64. @Log("导入客户")
    65. @PostMapping("/custlist/excelimport")
    66. public String upload(MultipartFile file, RedirectAttributesModelMap model) throws IOException {
    67. EasyExcel.read(file.getInputStream(), Cust.class, new CustDataListener(custService)).sheet().doRead();
    68. return "redirect:/custlist";
    69. }
    70. //跳转客户管理页面
    71. @RequestMapping("/custlist")
    72. public String tocustlist(){
    73. return "custlist";
    74. }
    75. //返回查询客户列表
    76. @Log("查询客户")
    77. @RequestMapping("/custlist/query")
    78. @ResponseBody
    79. public List findcust(@RequestBody HashMap params){
    80. //接收的数据
    81. String custid_s = params.get("custid");
    82. String custname = params.get("custname");
    83. String job = params.get("job");
    84. String address = params.get("address");
    85. Cust cust = new Cust();
    86. if (custid_s!=null && !custid_s.equals("")){
    87. try{
    88. Long custid=Long.parseLong(custid_s);
    89. cust.setid(custid);
    90. }catch (ClassCastException e){
    91. }finally {
    92. cust.setCust_name(custname);
    93. cust.setJob(job);
    94. cust.setAddress(address);
    95. return custService.findCust(cust);
    96. }
    97. }else {
    98. cust.setCust_name(custname);
    99. cust.setJob(job);
    100. cust.setAddress(address);
    101. return custService.findCust(cust);
    102. }
    103. }
    104. // 添加客户
    105. @Log("添加客户")
    106. @PostMapping("/custlist/add")
    107. public String addcust(@RequestParam("add_custname") String name,
    108. @RequestParam("add_sex") String sex,
    109. @RequestParam("add_job") String job,
    110. @RequestParam("add_telphone") String telphone,
    111. @RequestParam("add_address") String address,
    112. RedirectAttributesModelMap model){
    113. Cust add_cust =new Cust(name,sex,job,telphone,address);
    114. int result = custService.addCust(add_cust);
    115. if(result==1){
    116. model.addFlashAttribute("addmsg","添加客户成功");
    117. return "redirect:/custlist";
    118. }else {
    119. model.addFlashAttribute("addmsg","添加客户失败,未知错误");
    120. return "redirect:/custlist";
    121. }
    122. }
    123. //更新修改客户
    124. @Log("更新客户")
    125. @PostMapping("/custlist/update")
    126. public String updatecust(@RequestParam("update_custid") Long id,
    127. @RequestParam("update_custname") String name,
    128. @RequestParam("update_sex") String sex,
    129. @RequestParam("update_job") String job,
    130. @RequestParam("update_telphone") String telphone,
    131. @RequestParam("update_address") String address,
    132. RedirectAttributesModelMap model){
    133. Cust update_cust =new Cust(id,name,sex,job,telphone,address);
    134. int result = custService.updateCust(update_cust);
    135. if(result==1){
    136. model.addFlashAttribute("updatemsg","修改客户成功");
    137. return "redirect:/custlist";
    138. }else {
    139. model.addFlashAttribute("updatemsg","修改客户失败,未知错误");
    140. return "redirect:/custlist";
    141. }
    142. }
    143. //批量删除客户
    144. //客户批量删除
    145. @Log("删除客户")
    146. @ResponseBody
    147. @RequestMapping("/custlist/del")
    148. public Map custlistdel(@RequestBody List ids){
    149. int result = custService.delCust(ids);
    150. Map map = new HashMap<>();
    151. map.put("code",result);
    152. return map;
    153. }
    154. }

    五,项目总结

          项目整体设计简洁大方,功能实用性强,前后端交互比较符合人性化需求,比较适合用做毕业设计和课程设计使用。

       

  • 相关阅读:
    Xcode10:library not found for -lstdc++.6.0.9 临时解决
    【云原生 • Kubernetes】kubernetes 核心技术 - 持久化存储
    UML活动图
    未来几年中,软件测试的几大趋势是什么?
    电子期刊制作神器,轻松打造专业级刊物
    负号重载C++
    3588. 排列与二进制
    Mybatis-plus自定义Sql语句进行操作 使用Select注解
    BSN六周年:迈向下一代互联网
    go监听程序关闭
  • 原文地址:https://blog.csdn.net/whirlwind526/article/details/126062977