基于SpringBoot+MySql+JQuery+Bootstarp实现进销存管理系统

6 篇文章 0 订阅
6 篇文章 0 订阅

基于SpringBoot+BootStrap实现的进销存管理系统

系统介绍

作为一个进销存管理系统,最根本的功能还是实现采购管理、销售管理和库存管理等基本功能的增删改查。在基础功能也针对进货、销售和库存等做了少部分统计功能;同时支持商品、客户的资料管理和系统用户管理,登陆时可选择用户角色。

功能架构

系统功能架构图

系统架构
   本系统设计采用的是MAVEN + SPRING BOOT+ JPA 的架构来搭建的项目。用这三个技术搭建项目框架,可以快速完成,省去许多简单繁杂的步骤,对于我们快速开发是有非常大的优势的。

相关技术点

前端:系统前端采用jsp + JavaScript + css的组合技术开发,使用了jQuery和bootstrap框架。
后端:SpringBoot
数据库:MySQL5.6
开发运行环境:IDEA、SpringBoo内置Tomcat、JDK1.8

功能截图

    系统目前主要实现了采购管理、销售管理、库存管理、资料管理、系统用户管理等功能。由于篇幅有限,只贴出部分功能的运行截图。
  1. 登录系统登陆
  2. 采购入库采购入库
  3. 出库商品出库
  4. 发货发货
  5. 销售统计销售统计
  6. 资料管理资料管理
  7. 用户管理用户管理

部分源码

  1. 查询Controller
package com.xu.web;

import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;

import com.xu.bean.Customer;
import com.xu.bean.Goods;
import com.xu.bean.Suppliers;
import com.xu.exception.ServiceException;
import com.xu.service.QueryService;

@Controller
@RequestMapping("/query")
@SessionAttributes(value={"goods","name","count","map"})
public class QueryController {

	@Resource
	private QueryService queryService;
	/**
	 * 跳转到商品查询首页
	 * @return
	 */
	@RequestMapping("/goodes")
	public String gotoQueryGoods(){
		
		return "queryGoods";
	}
	
	/**
	 * 跳转到客户查询首页
	 * @return
	 */
	@RequestMapping("/customers")
	public String gotoQueryCustomer(){
		
		return "queryCustomer";
	}
	
	/**
	 * 跳转到供应商查询首页
	 * @return
	 */
	@RequestMapping("/supplierss")
	public String gotoQuerySuppliers(){
		
		return "querySuppliers";
	}
	
	/**
	 * 跳转到商品订单查询首页
	 * @return
	 */
	@RequestMapping("/goodsOrder")
	public String gotoQueryGoodsOrder(){
		
		return "querySaleOrder";
	}
	
	/**
	 * 跳转到商品订单查询首页
	 * @return
	 */
	@RequestMapping("/allgoodsOrder")
	public String gotoQueryAllGoodsOrder(){
		
		return "queryAllSaleOrder";
	}
	
	/**
	 * 销售统计
	 * @param request
	 * @param model
	 * @return
	 */
	@RequestMapping("/queryAllOrder")
	public String queryAllOrders(HttpServletRequest request,Model model){
		String min = request.getParameter("logmin");
		String max = request.getParameter("logmax");
		try {
			Map<String,Long> map = queryService.findAllOrderCount(min,max);
			model.addAttribute("map", map);
		} catch (ServiceException e) {
			
			e.printStackTrace();
		}
		return "queryAllSaleOrder";
	}
	
	/**
	 * 查询某种商品在某个时间段的销量
	 * @param request
	 * @param model
	 * @return
	 */
	@RequestMapping("/queryOrder")
	public String queryGoodsOrders(HttpServletRequest request,Model model){
		String min = request.getParameter("logmin");
		String max = request.getParameter("logmax");
		String orderName = request.getParameter("orderName");
		try {
			Long count = queryService.findGoodsOrderByTimeAndName(min,max,orderName);
			model.addAttribute("name",orderName);
			model.addAttribute("count", count);
		} catch (ServiceException e) {
			e.printStackTrace();
		}
		return "querySaleOrder";
	}
	
	/**
	 * 查询商品
	 * @param request
	 * @param model
	 * @return
	 */
	@RequestMapping("/queryGoods")
	public String querygoods(HttpServletRequest request,Model model){
		String name = request.getParameter("goodName");
		try {
			Goods goods = queryService.findGoodsByName(name);
			model.addAttribute("goods",goods);
		} catch (ServiceException e) {
			
			e.printStackTrace();
		}
		return "queryGoods";
	}
	
	/**
	 * 查询客户
	 * @param request
	 * @param model
	 * @return
	 */
	@RequestMapping("/queryEmployee")
	public String querycustomer(HttpServletRequest request,Model model){
		String name = request.getParameter("customerName");
		try {
			Customer customer = queryService.findCustomerByName(name);
			model.addAttribute("customer",customer);
		} catch (ServiceException e) {
			
			e.printStackTrace();
		}
		return "queryCustomer";
	}
	
	/**
	 * 查询供应商
	 * @param request
	 * @param model
	 * @return
	 */
	@RequestMapping("/querySuppliers")
	public String querysuppliers(HttpServletRequest request,Model model){
		String name = request.getParameter("suppliersName");
		try {
			Suppliers suppliers = queryService.findSuppliersByName(name);
			model.addAttribute("suppliers",suppliers);
		} catch (ServiceException e) {
			
			e.printStackTrace();
		}
		return "querySuppliers";
	}
}

  1. 销售Service
package com.xu.service.imp;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import com.xu.bean.SaleItem;
import com.xu.bean.SaleOrder;
import com.xu.dao.GoodsRepository;
import com.xu.dao.SaleItemRepository;
import com.xu.dao.SaleOrderRepository;
import com.xu.dao.StockRepository;
import com.xu.exception.ServiceException;
import com.xu.service.SaleService;

@Service
public class SaleServiceImp implements SaleService{

	@Resource
	private SaleOrderRepository saleOrderRepository;
	@Resource
	private SaleItemRepository saleItemRepository;
	@Resource
	private StockRepository stockRepository;
	@Resource
	private GoodsRepository goodsRepository;
	@Override
	public List<SaleOrder> findSaleOrderByPage(int pageNum) throws ServiceException {
		Pageable pageable = new PageRequest(pageNum, 10);
		Page<SaleOrder> page =saleOrderRepository.findAll(pageable);
		List<SaleOrder> list = new ArrayList<SaleOrder>();
		for(SaleOrder p:page){
			list.add(p);
		}
		return list;
	}
	@Override
	public Long findSaleOrderCount() throws ServiceException {
		
		return saleOrderRepository.count();
	}
	@Override
	public Long getTotalPage() throws ServiceException {
		long count = findSaleOrderCount();
		Long totalPage;
		if(count%10==0){
			totalPage = count/10;
		}else{
			totalPage = count/10 +1;
		}
		return totalPage;
		
	}
	@Override
	public int addSaleOrder(SaleOrder saleOrder, List<SaleItem> itemList) throws ServiceException {
		Double total =0D;
		for(SaleItem item:itemList){
			Double price = item.getPrice();
			Long count = item.getCount();
			Double i = price * count;
			total += i;
		}
		saleOrder.setCustomerId(itemList.get(0).getCustomerId());
		saleOrder.setTotal(total);
		SaleOrder saleOrder2 = saleOrderRepository.save(saleOrder);
		for(SaleItem item:itemList){
			item.setSaleOrderId(saleOrder2.getId());
			saleItemRepository.save(item);
		}
		return 1;
	}
	@Override
	public List<SaleItem> delPurchaseItemByPurchaseId(Long orderId) throws ServiceException {
		List<SaleItem> saleItem = saleItemRepository.findSaleItemByOrderId(orderId);
		saleItemRepository.delete(orderId);
		return saleItem;
	}
	@Override
	public SaleOrder delOrderByPurchaseId(Long orderId) throws ServiceException {
		SaleOrder saleOrder = saleOrderRepository.findOne(orderId);
		saleOrderRepository.delete(orderId);
		return saleOrder;
	}
	@Override
	public String findFlagByOrderId(Long orderId) throws ServiceException {
		
		return saleOrderRepository.findFlagByOrderId(orderId);
	}
	@Override
	public List<SaleItem> findSaleOrderByOrderId(Long orderId) throws ServiceException {
		
		return saleItemRepository.findSaleItemByOrderId(orderId);
	}
	@Override
	public int updateFlagByOrderId(String string, Long orderId) throws ServiceException {
		saleOrderRepository.updateFlagByOrderId(string,orderId);
		
		return 1;
	}
	@Override
	public int updateStockBySaleReturnOrder(List<SaleItem> saleItem) throws ServiceException {
		for(SaleItem si:saleItem){
			Long goodsId = goodsRepository.findGoodsIdByGoodsName(si.getName());
			Long count = stockRepository.findCountByGoodsId(goodsId);
			stockRepository.updateStockCountByGoodsId(count+si.getCount(),goodsId);
		}
		return 0;
	}
}

3.首页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html lang="en">
<base href="<%=basePath%>" />
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
  <meta name="keywords" content="admin, dashboard, bootstrap, template, flat, modern, theme, responsive, fluid, retina, backend, html5, css, css3">
  <meta name="description" content="">
  <meta name="author" content="ThemeBucket">
<title>首页</title>
<link rel="Bookmark" href="favicon.ico" >
<link rel="Shortcut Icon" href="favicon.ico" />
<link rel="stylesheet" type="text/css" href="static/h-ui/css/H-ui.min.css" />
<link rel="stylesheet" type="text/css" href="static/h-ui.admin/css/H-ui.admin.css" />
<link rel="stylesheet" type="text/css" href="lib/Hui-iconfont/1.0.8/iconfont.css" />
<link rel="stylesheet" type="text/css" href="static/h-ui.admin/skin/default/skin.css" id="skin" />
<link rel="stylesheet" type="text/css" href="static/h-ui.admin/css/style.css" />
<!--/meta 作为公共模版分离出去-->

</head>
<body>
<!--_header 作为公共模版分离出去-->
<header class="navbar-wrapper">
	<div class="navbar navbar-fixed-top">
		<div class="container-fluid cl"> <span class="logo navbar-logo f-l mr-10 hidden-xs" ><a href="/sys/gotoIndex" class="logo navbar-logo f-l mr-10 hidden-xs">进销存管理系统</a></span>
			<span class="logo navbar-slogan f-l mr-10 hidden-xs">1.0</span> 
			<a aria-hidden="false" class="nav-toggle Hui-iconfont visible-xs" href="javascript:;">&#xe667;</a>
			<nav id="Hui-userbar" class="nav navbar-nav navbar-userbar hidden-xs">
				<ul class="cl">
					<li>超级管理员</li>
					<li class="dropDown dropDown_hover"> <a href="#" class="dropDown_A">${user.name} <i class="Hui-iconfont">&#xe6d5;</i></a>
						<ul class="dropDown-menu menu radius box-shadow">
							<li><a href="/log/gotoInformation">个人信息</a></li>
							<li><a href="log/in">切换账户</a></li>
							<li><a href="log/out">退出</a></li>
				</ul>
			</li>
					<li id="Hui-msg"> <a href="/log/getMessage" title="消息"><span class="badge badge-danger">${messageCount}</span><i class="Hui-iconfont" style="font-size:18px">&#xe68a;</i></a> </li>
					<li id="Hui-skin" class="dropDown right dropDown_hover"> <a href="javascript:;" class="dropDown_A" title="换肤"><i class="Hui-iconfont" style="font-size:18px">&#xe62a;</i></a>
						<ul class="dropDown-menu menu radius box-shadow">
							<li><a href="javascript:;" data-val="default" title="默认(黑色)">默认(黑色)</a></li>
							<li><a href="javascript:;" data-val="blue" title="蓝色">蓝色</a></li>
							<li><a href="javascript:;" data-val="green" title="绿色">绿色</a></li>
							<li><a href="javascript:;" data-val="red" title="红色">红色</a></li>
							<li><a href="javascript:;" data-val="yellow" title="黄色">黄色</a></li>
							<li><a href="javascript:;" data-val="orange" title="橙色">橙色</a></li>
				</ul>
			</li>
		</ul>
	</nav>
</div>
</div>
</header>
<!--/_header 作为公共模版分离出去-->

<!--_menu 作为公共模版分离出去-->
<aside class="Hui-aside">
	
	<div class="menu_dropdown bk_2">
		<dl id="menu-article">
			<dt><i class="Hui-iconfont">&#xe616;</i> 采购管理<i class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i></dt>
			<dd>
				<ul>
					<li><a href="purchase/pur" title="采购订单">采购订单</a></li>
					<li><a href="purchase/forwordAddStock" title="收货入库">收货入库</a></li>
					<li><a href="returnPurchase/turn" title="采购退货">采购退货</a></li>
				</ul>
			</dd>
		</dl>
		<dl id="menu-picture">
			<dt><i class="Hui-iconfont">&#xe613;</i> 库存管理<i class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i></dt>
			<dd>
				<ul>
					<li><a href="stock-add.html" title="商品入库">商品入库</a></li>
					<li><a href="stock/out" title="商品出库">商品出库</a></li>
					<li><a href="stock/stockquery" title="库存查询">库存查询</a></li>
					<li><a href="stock/area" title="商品移库">商品移库</a></li>
					<li><a href="stock/allStock" title="库存盘点">库存盘点</a></li>
				</ul>
			</dd>
		</dl>
		<dl id="menu-product">
			<dt><i class="Hui-iconfont">&#xe620;</i> 销售管理<i class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i></dt>
			<dd>
				<ul>
					<li><a href="sale/gotosale" title="销售订单">销售订单</a></li>
					<li><a href="sale/gotooutsale" title="发货出库">发货出库</a></li>
					<li><a href="salereturn/forwordSaleReturn" title="销售退货">销售退货</a></li>
				</ul>
			</dd>
		</dl>
		<dl id="menu-comments">
			<dt><i class="Hui-iconfont">&#xe622;</i> 查询统计<i class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i></dt>
			<dd>
				<ul>
					<li><a href="/query/goodes" title="商品查询">商品查询</a></li>
					<li><a href="/query/supplierss" title="供应商查询">供应商查询</a></li>
					<li><a href="/query/customers" title="客户查询">客户查询</a></li>
					<li><a href="/query/goodsOrder" title="销售查询">销售查询</a></li>
					<li><a href="/query/allgoodsOrder" title="销售统计">销售统计</a></li>
				</ul>
	</dd>
</dl>
		<dl id="menu-member">
			<dt><i class="Hui-iconfont">&#xe60d;</i> 资料管理<i class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i></dt>
			<dd>
				<ul>
					<li><a href="/sys/goods" title="商品资料">商品资料</a></li>
					<li><a href="/sys/gotoSuppliers" title="供应商资料">供应商资料</a></li>
					<li><a href="/sys/gotoCustomer" title="客户资料">客户资料</a></li>					
		</ul>
	</dd>
</dl>
		<dl id="menu-admin">
			<dt><i class="Hui-iconfont">&#xe62d;</i> 系统管理<i class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i></dt>
			<dd>
				<ul>
					<li><a href="/sys/gotoEmployee" title="用户管理">用户管理</a></li>
					<li><a href="/backups/gotuBackup" title="备份与恢复">备份与恢复</a></li>
		</ul>
	</dd>
</dl>
</div>
</aside>
<div class="dislpayArrow hidden-xs"><a class="pngfix" href="javascript:void(0);" onClick="displaynavbar(this)"></a></div>
<!--/_menu 作为公共模版分离出去-->

<section class="Hui-article-box">
	<nav class="breadcrumb"><i class="Hui-iconfont"></i> <a href="/" class="maincolor">首页</a> 
		<span class="c-999 en">&gt;</span>
		<span class="c-666">我的桌面</span> 
		<a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a></nav>
	<div class="Hui-article">
		<article class="cl pd-20">
			<p class="f-20 text-success">欢迎使用H-ui.admin
				<span class="f-14">v2.3</span>
				后台模版!</p>
			<p>登录次数:18 </p>
			<p>上次登录IP222.35.131.79.1  上次登录时间:2014-6-14 11:19:55</p>
			<table class="table table-border table-bordered table-bg">
				<thead>
					<tr>
						<th colspan="7" scope="col">信息统计</th>
			</tr>
					<tr class="text-c">
						<th>统计</th>
						<th>资讯库</th>
						<th>图片库</th>
						<th>产品库</th>
						<th>用户</th>
						<th>管理员</th>
			</tr>
		</thead>
				<tbody>
					<tr class="text-c">
						<td>总数</td>
						<td>92</td>
						<td>9</td>
						<td>0</td>
						<td>8</td>
						<td>20</td>
			</tr>
					<tr class="text-c">
						<td>今日</td>
						<td>0</td>
						<td>0</td>
						<td>0</td>
						<td>0</td>
						<td>0</td>
			</tr>
					<tr class="text-c">
						<td>昨日</td>
						<td>0</td>
						<td>0</td>
						<td>0</td>
						<td>0</td>
						<td>0</td>
			</tr>
					<tr class="text-c">
						<td>本周</td>
						<td>2</td>
						<td>0</td>
						<td>0</td>
						<td>0</td>
						<td>0</td>
			</tr>
					<tr class="text-c">
						<td>本月</td>
						<td>2</td>
						<td>0</td>
						<td>0</td>
						<td>0</td>
						<td>0</td>
			</tr>
		</tbody>
	</table>
			<table class="table table-border table-bordered table-bg mt-20">
				<thead>
					<tr>
						<th colspan="2" scope="col">服务器信息</th>
			</tr>
		</thead>
				<tbody>
					<tr>
						<th width="30%">服务器计算机名</th>
						<td><span id="lbServerName">http://127.0.0.1/</span></td>
			</tr>
					<tr>
						<td>服务器IP地址</td>
						<td>192.168.1.1</td>
			</tr>
					<tr>
						<td>服务器域名</td>
						<td>www.h-ui.net</td>
			</tr>
					<tr>
						<td>服务器端口 </td>
						<td>80</td>
			</tr>
					<tr>
						<td>服务器IIS版本 </td>
						<td>Microsoft-IIS/6.0</td>
			</tr>
					<tr>
						<td>本文件所在文件夹 </td>
						<td>D:\WebSite\HanXiPuTai.com\XinYiCMS.Web\</td>
			</tr>
					<tr>
						<td>服务器操作系统 </td>
						<td>Microsoft Windows NT 5.2.3790 Service Pack 2</td>
			</tr>
					<tr>
						<td>系统所在文件夹 </td>
						<td>C:\WINDOWS\system32</td>
			</tr>
					<tr>
						<td>服务器脚本超时时间 </td>
						<td>30000</td>
			</tr>
					<tr>
						<td>服务器的语言种类 </td>
						<td>Chinese (People's Republic of China)</td>
			</tr>
					<tr>
						<td>.NET Framework 版本 </td>
						<td>2.050727.3655</td>
			</tr>
					<tr>
						<td>服务器当前时间 </td>
						<td>2014-6-14 12:06:23</td>
			</tr>
					<tr>
						<td>服务器IE版本 </td>
						<td>6.0000</td>
			</tr>
					<tr>
						<td>服务器上次启动到现在已运行 </td>
						<td>7210分钟</td>
			</tr>
					<tr>
						<td>逻辑驱动器 </td>
						<td>C:\D:\</td>
			</tr>
					<tr>
						<td>CPU 总数 </td>
						<td>4</td>
			</tr>
					<tr>
						<td>CPU 类型 </td>
						<td>x86 Family 6 Model 42 Stepping 1, GenuineIntel</td>
			</tr>
					<tr>
						<td>虚拟内存 </td>
						<td>52480M</td>
			</tr>
					<tr>
						<td>当前程序占用内存 </td>
						<td>3.29M</td>
			</tr>
					<tr>
						<td>Asp.net所占内存 </td>
						<td>51.46M</td>
			</tr>
					<tr>
						<td>当前Session数量 </td>
						<td>8</td>
			</tr>
					<tr>
						<td>当前SessionID </td>
						<td>gznhpwmp34004345jz2q3l45</td>
			</tr>
					<tr>
						<td>当前系统用户名 </td>
						<td>NETWORK SERVICE</td>
			</tr>
		</tbody>
	</table>
</article>
		<footer class="footer">
			<p>
				Copyright &copy;2017 xuks  版权所有<br>ICP000007,京公网安备11000002000016</p>
	    </footer>
</div>
</section>

<!--_footer 作为公共模版分离出去-->
<script type="text/javascript" src="lib/jquery/1.9.1/jquery.min.js"></script> 
<script type="text/javascript" src="lib/layer/2.4/layer.js"></script>
<script type="text/javascript" src="static/h-ui/js/H-ui.js"></script> 
<script type="text/javascript" src="static/h-ui.admin/js/H-ui.admin.page.js"></script> 
<!--/_footer /作为公共模版分离出去-->

<!--请在下方写此页面业务相关的脚本-->
<script type="text/javascript">

</script>
<!--/请在上方写此页面业务相关的脚本-->


</body>
</html>

最后

如果感兴趣,可以扫码咨询
公众号二维码

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值