基于Springboot+Vue开发建筑工地用料管理系统
Posted 编程指南针
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Springboot+Vue开发建筑工地用料管理系统相关的知识,希望对你有一定的参考价值。
作者主页:编程指南针
作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师
主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助
文末获取源码
项目编号:BS-XX-121
一,项目简介
本项目基于Springboot+Vue开发实现一个建筑工地用料管理系统,基于前后端分离的方式来开发实现,符合现在主流的开发方式。主要功能模块包含:
材料管理:材料类型的增删改查处理
供货商管理:供货商的增删改查处理
生产商管理:材料生产商的增删改查处理
采购管理:包含采购审核、我的采购信息管理
库存管理:材料库存信息管理,新增材料后根据采购计划来进行导入库存
报价管理:导入供货商的材料报价清单EXCEL表格,也可以导出EXCEL
工地管理:包含建筑工地的基本信息管理和用料详情管理
系统管理:包含角色、权限和用户管理
另带有背景音乐在线播放功能
基本业务流程:先添加库存材料信息---》导入供应商报价清单---》生成采购计划(库存中操作点击采购)---》采购审批----》采购入库---》工具用料
二,环境介绍
语言环境:Java: jdk1.8
数据库:mysql: mysql5.7
应用服务器:Tomcat: tomcat8.5.31
开发工具:IDEA或eclipse
后端开发技术:Springboot+Mybatis+SpringSecurity
前端开发技术:Vue+Element
三,系统展示
管理员登陆:
材料管理:
生产商和供应商管理
采购管理:采购审核
采购管理:我的采购信息管理
库存管理:先新增材料,再点采购根据报价清单生成采购计划,审核后入库
报价管理:
工地管理:
工地用料详情:
系统管理
权限分配:
操作员管理
四,核心代码展示
package com.znz.server.controller;
import com.znz.server.common.constant.Constants;
import com.znz.server.entity.Admin;
import com.znz.server.entity.RespBean;
import com.znz.server.entity.Role;
import com.znz.server.service.IAdminService;
import com.znz.server.service.IRoleService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 操作员信息
*
* @author znz
* @since 2021-03-06
*/
@Api(value = "操作员控制器", tags = "操作员管理")
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
@RequestMapping("/system/admin")
public class AdminController
private final IAdminService adminService;
private final IRoleService roleService;
@ApiOperation(value = "获取所有操作员")
@GetMapping("/")
public List<Admin> getAllAdmins(String keywords)
return adminService.getAllAdmins(keywords);
@ApiOperation(value = "更新操作员")
@PutMapping("/")
public RespBean updateAdmin(@RequestBody Admin admin)
if (adminService.updateById(admin))
return RespBean.success(Constants.SUCCESS);
return RespBean.error(Constants.FAIL);
@ApiOperation(value = "删除操作员")
@DeleteMapping("/id")
public RespBean deleteAdmin(@PathVariable Integer id)
if (adminService.removeById(id))
return RespBean.success(Constants.SUCCESS);
return RespBean.success(Constants.FAIL);
@ApiOperation(value = "获取所有角色")
@GetMapping("/roles")
public List<Role> getAllRoles()
return roleService.list();
@ApiOperation(value = "更新操作员角色")
@PutMapping("/role")
public RespBean updateAdminRole(Integer adminId, Integer[] rids)
return adminService.updateAdminRole(adminId, rids);
package com.znz.server.controller;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.znz.server.common.core.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.IOException;
/**
* 图片验证码
* @Author znz
* @Date 21-3-6 下午8:59
* @Version 1.0
*/
@Api(value = "验证码控制器", tags = "验证码管理")
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
public class CaptchaController extends BaseController
private final DefaultKaptcha defaultKaptcha;
/**
* 生成验证码
* @param request
* @param response
*/
@ApiOperation(value = "验证码")
@GetMapping(value = "/captcha", produces = "image/jpeg")
public void captcha(HttpServletRequest request, HttpServletResponse response)
// 定义response输出类型为image/jpeg类型
response.setDateHeader("Expires", 0);
// Set standard HTTP/1.1 no-cache headers.
response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
// Set IE extended HTTP/1.1 no-cache headers (use addHeader).
response.addHeader("Cache-Control", "post-check=0, pre-check=0");
// Set standard HTTP/1.0 no-cache header.
response.setHeader("Pragma", "no-cache");
// return a jpeg
response.setContentType("image/jpeg");
// 获取验证码文本内容
String text = defaultKaptcha.createText();
logger.info("验证码内容: ", text);
// 方便登录验证时用request获取,参考AdminServiceImpl#login()
request.getSession().setAttribute("captcha", text);
// 生成图形验证码
BufferedImage image = defaultKaptcha.createImage(text);
ServletOutputStream outputStream = null;
try
outputStream = response.getOutputStream();
// 输出流输出图片, 格式为jpg
ImageIO.write(image, "jpg", outputStream);
outputStream.flush();
catch (IOException e)
e.printStackTrace();
finally
if (null != outputStream)
try
outputStream.close();
catch (IOException e)
e.printStackTrace();
package com.znz.server.controller;
import com.znz.server.annotation.ApiLog;
import com.znz.server.common.constant.Constants;
import com.znz.server.entity.Admin;
import com.znz.server.entity.AdminLoginParam;
import com.znz.server.entity.RespBean;
import com.znz.server.service.IAdminService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.security.Principal;
/**
* 登录验证
* @Author znz
* @Date 21-3-6 下午5:03
* @Version 1.0
*/
@Api(value = "登录控制器", tags = "登录管理")
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
public class LoginController
private final IAdminService adminService;
@ApiLog
@ApiOperation(value = "登录之后返回token")
@PostMapping("/login")
public RespBean login(@RequestBody AdminLoginParam adminLoginParam, HttpServletRequest request)
return adminService.login(adminLoginParam.getUsername(), adminLoginParam.getPassword(), adminLoginParam.getCode(),request);
@ApiLog
@ApiOperation(value = "获取当前登录用户信息")
@GetMapping("/admin/info")
public Admin getAdminInfo(Principal principal)
if (null == principal)
return null;
String username = principal.getName();
Admin admin = adminService.getAdminByUserName(username);
admin.setPassword(null);
// 设置用户角色
admin.setRoles(adminService.getRoles(admin.getId()));
return admin;
@ApiOperation(value = "退出登录")
@PostMapping("/logout")
public RespBean logout()
return RespBean.success(Constants.LOGOUT);
package com.znz.server.controller;
import com.znz.server.common.Result;
import com.znz.server.common.constant.Constants;
import com.znz.server.entity.MaterialCategory;
import com.znz.server.entity.RespBean;
import com.znz.server.entity.RespPageBean;
import com.znz.server.service.IMaterialCategoryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
/**
* 材料分类Controller
* @author znz
* @since 2021-03-10
*/
@Api(value = "材料分类控制器", tags = "材料分类管理")
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
@RequestMapping("/material/materialCategory/mc")
public class MaterialCategoryController
private final IMaterialCategoryService materialCategoryService;
@ApiOperation(value = "条件分页")
@GetMapping("/")
public RespPageBean getMaterialCategoryPage(String materialCategoryName,
@RequestParam(defaultValue = "1") Integer pageIndex,
@RequestParam(defaultValue = "10") Integer pageSize)
return materialCategoryService.findMaterialCategoryByPage(materialCategoryName, pageIndex, pageSize);
@ApiOperation(value = "新增")
@PostMapping("/")
public RespBean addMaterialCategory(@RequestBody MaterialCategory materialCategory)
/** 日期处理 */
materialCategory.setCreateDate(LocalDateTime.now());
if (materialCategoryService.save(materialCategory))
return RespBean.success(Constants.ADD_SUCCESS);
return RespBean.error(Constants.ADD_FAIL);
@ApiOperation(value = "更新")
@PutMapping("/")
public RespBean updateMaterialCategory(@RequestBody MaterialCategory materialCategory)
if (materialCategoryService.updateById(materialCategory))
return RespBean.success(Constants.UPDATE_SUCCESS);
return RespBean.error(Constants.UPDATE_FAIL);
@ApiOperation(value = "根据id删除")
@DeleteMapping("/id")
public RespBean deleteMaterialCategory(@PathVariable Integer id)
if (materialCategoryService.removeById(id))
return RespBean.success(Constants.DELETE_SUCCESS);
return RespBean.error(Constants.DELETE_FAIL);
@ApiOperation(value = "批量删除")
@DeleteMapping("/")
public RespBean deleteMaterialCategories(Integer[] ids)
if (materialCategoryService.removeByIds(Arrays.asList(ids)))
return RespBean.success(Constants.DELETE_SUCCESS);
return RespBean.error(Constants.DELETE_FAIL);
@ApiOperation(value = "查询列表")
@GetMapping("/list")
public Result list()
return new Result("1001", Constants.SELECT_SUCCESS, materialCategoryService.list());
五,项目总结
项目界面清晰,通过AJAX进行异步交互,非常适合毕业使用。
以上是关于基于Springboot+Vue开发建筑工地用料管理系统的主要内容,如果未能解决你的问题,请参考以下文章
计算机毕业设计之java+springboot基于vue的医院信管系统