Java项目:06 Springboot的进销存管理系统

作者主页:舒克日记

简介:Java领域优质创作者、Java项目、学习资料、技术互助

文中获取源码

进销存管理系统

介绍

进销存系统是为了对企业生产经营中进货、出货、批发销售、付款等全程进行(从接获订单合同开
始,进入物料采购、入库、领用到产品完工入库、交货、回收货款、支付原材料款等)跟踪(每一步都
提供详尽准确的数据)、管理(有效辅助企业解决业务管理、分销管理、存货管理、营销计划的执行和
监控、统计信息的收集等方面的业务问题)而设计的整套方案。

软件环境

Springboot+MybatisPlus+SpringMvc+Freemarker+Maven

软件架构

1、 基础资料 往来单位资料 货品资料 员工信息 仓库资料 计量单位 账户信息 公司信息 用户可以快速、直观地 查询所需要的数据资料。

2、 系统管理 操作员管理 系统设置 数据初始化 系统管理是整个系统的门户,在系统的安全性上起到了不可估 量的作用。各种信息要求尽量全面详细,使管理变得更轻松更有效。

3、 采购管理 新增采购订单 采购订单查询 新增采购单 采购单查询 采购退货 采购明细表 货品采购汇总表 供应商采购汇总表 采购订单完成情况 采购覆盖企业采购的各个环节。企业通过虚拟的在线货品目 录,迅速而实时的访问货品信息;通过价格和品质的比较,选定产品供应商。

4、 销售管理 新增销售订单 销售订单查询 新增销售单 销售单查询 销售退货 销售明细表 货品销售汇总表 客户销售汇总表 销售订单完成情况 销售覆盖企业销售的各个环节。通过销售订单录入与变更,跟 踪管理商品销售情况;根据货品报价和销售数量自动开出销售发票,根据发货单产生结算凭证和 收货单。

5、 库存管理 新增入库单 新增出库单 仓库调拨 库存盘点 期末提供了货品盘点、货品调价以及业务审核等 期末业务处理功能,业务期末结算为财务期末结算做了必要的铺垫作用。

6、 财务管理 付款单 收款单 其他收入 其他支出 账户查询 应付账款表-单据 应付账款表-往来单位 应收账款 表-单据 应收账款表-往来单位

运行指导

idea导入源码空间站顶目教程说明(Vindows版)-ssm篇:

http://mtw.so/5MHvZq

源码地址:http://codegym.top

安装教程

环境是JDK8

使用说明

密码都是密文加密 ,初始密码都为123456。

系统效果

系统登录

系统登录

采购入库

输入图片说明

商品管理

输入图片说明

初期库存管理

输入图片说明

商品统计销售

输入图片说明

商品分类

输入图片说明

代码

CaptchaCodeFilter

package com.lzj.admin.filter;


import com.fasterxml.jackson.databind.ObjectMapper;
import com.lzj.admin.model.CaptchaImageModel;
import com.lzj.admin.model.RespBean;
import com.lzj.admin.utils.StringUtil;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.authentication.session.SessionAuthenticationException;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.ServletRequestBindingException;
import org.springframework.web.bind.ServletRequestUtils;
import org.springframework.web.context.request.ServletWebRequest;
import org.springframework.web.filter.OncePerRequestFilter;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.Objects;

/**
 * 验证码过滤器 用于验证验证码是否有误
 * Security的过滤器 基于AOP的原理 在登录验证前切入验证码验证
 * @author TianTian
 * @date 2022/1/8 11:06
 */
@Component
public class CaptchaCodeFilter extends OncePerRequestFilter {
    //利用这个对象向前端传输对象 新技术 不了解
    private static ObjectMapper objectMapper = new ObjectMapper();

    /**
     * 过器实现
     * @param request
     * @param response
     * @param filterChain
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
            //判断请求地址是否为login
        if (StringUtil.equals(request.getRequestURI(),"/login")){
            try {
                this.validata(new ServletWebRequest(request));
            } catch (AuthenticationException e) {
                response.setContentType("application/json;charset=UTF-8");
               response.getWriter().write((objectMapper.writeValueAsString(RespBean.error("验证码错误"))));
               return;//这里非常关键 如果不返回的话会继续执行登录验证 导致前端会收到两个Json对象
            }
        }

        filterChain.doFilter(request,response);
    }

    /**
     * 验证方法实现
     * @param request
     * @throws ServletRequestBindingException
     */
    private void validata(ServletWebRequest request) throws ServletRequestBindingException {
        HttpSession session = request.getRequest().getSession();
        //获取请求中参数值
        String captchaCode = ServletRequestUtils.getStringParameter(request.getRequest(), "captchaCode");
        //验证前端字符串是否为空
        if(StringUtil.isEmpty(captchaCode)){
            throw new SessionAuthenticationException("验证码为空");
        }
        //获取Session中存放的验证码包装类
        CaptchaImageModel captcha_key = (CaptchaImageModel) session.getAttribute("captcha_key");
        //获取验证码图片中字符串
        String code = captcha_key.getCode();
        if(Objects.isNull(captcha_key)){
            throw new SessionAuthenticationException("验证码不存在");
        }
        if (captcha_key.isExpired())
        {
            throw new SessionAuthenticationException("验证码超时");
        }

        if (!StringUtil.equals(captchaCode,code)){
            throw new SessionAuthenticationException("验证码不正确");
        }
    }
}

CustomerReturnListController

package com.lzj.admin.controller;


import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.lzj.admin.model.RespBean;
import com.lzj.admin.pojo.CustomerReturnList;
import com.lzj.admin.pojo.CustomerReturnListGoods;
import com.lzj.admin.pojo.SaleList;
import com.lzj.admin.pojo.SaleListGoods;
import com.lzj.admin.query.CustomerReturnListQuery;
import com.lzj.admin.service.CustomerReturnListService;

import com.lzj.admin.service.UserService;
import com.lzj.admin.utils.AssertUtil;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import java.security.Principal;
import java.util.List;
import java.util.Map;

/**
 * 客户退货单控制器
 * @author TianTian
 * @date 2022/1/19 22:58
 */
@Controller
@RequestMapping("/customerReturn")
public class CustomerReturnListController {


    @Resource
    private CustomerReturnListService customerReturnListService;


    @Resource
    private UserService userService;

    /**
     * 客户退货主页
     * @return
     */
    @RequestMapping("index")
    public String index(Model model){
        model.addAttribute("customerReturnNumber",customerReturnListService.getNextCustomerReturnNumber());
        return "customerReturn/customer_return";
    }

    @RequestMapping("save")
    @ResponseBody
    public RespBean save(CustomerReturnList customerReturnList, String goodsJson, Principal principal){
        String userName = principal.getName();
        customerReturnList.setUserId(userService.findForName(userName).getId());
        Gson gson = new Gson();
        List<CustomerReturnListGoods> slgList = gson.fromJson(goodsJson,new TypeToken<List<CustomerReturnListGoods>>(){}.getType());
        customerReturnListService.saveCustomerReturnList(customerReturnList,slgList);
        return RespBean.success("商品退货入库成功!");
    }


    /**
     * 退货单查询页
     * @return
     */
    @RequestMapping("searchPage")
    public String searchPage(){
        return "customerReturn/customer_return_search";
    }


    /**
     * 退货单列表
     * @param customerReturnListQuery
     * @return
     */
    @RequestMapping("list")
    @ResponseBody
    public Map<String,Object> customerReturnList(CustomerReturnListQuery customerReturnListQuery){
        return customerReturnListService.customerReturnList(customerReturnListQuery);
    }
    /**
     * 删除进货单记录
     * @param id
     * @return
     */
    @RequestMapping("delete")
    @ResponseBody
    public RespBean delete(Integer id){
        customerReturnListService.deleteCustomerReturn(id);
        return RespBean.success("删除成功");
    }




}

  • 19
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
很抱歉,作为人工智能语言模型,我无法提供完整的基于SpringBoot进销存管理系统代码。不过,我可以为您提供一些基于SpringBoot进销存管理系统的基本结构和实现思路。 1. 数据库设计 进销存管理系统的核心是数据,因此数据库的设计至关重要。在设计数据库的时候,需要考虑以下几个问题: - 如何存储商品信息(包括商品名称、条码、品牌、规格、单位等)? - 如何存储订单信息(包括订单号、下单时间、收货地址、付款金额等)? - 如何存储库存信息(包括商品库存数量)? - 如何存储销售信息(包括销售数量、销售金额等)? - 如何存储采购信息(包括采购数量、采购金额等)? 一般来说,可以使用关系型数据库(如MySQL、Oracle、SQL Server等)来存储这些数据。以下是一个简单的数据库表结构: - 商品表(product):id, name, barcode, brand, spec, unit, stock - 订单表(order):id, orderno, ordertime, address, amount - 销售表(sale):id, productid, saletime, count, amount - 采购表(purchase):id, productid, purchasetime, count, amount 2. Java后端开发 在SpringBoot项目中,需要完成以下几个模块的开发: - 产品管理模块:实现商品的增删改查等功能。 - 订单管理模块:实现订单的查询、创建、修改、删除等功能。 - 库存管理模块:实现库存查询和修改等功能。 - 销售管理模块:实现销售查询和增加等功能。 - 采购管理模块:实现采购查询和新增等功能。 具体实现过程需要使用SpringBoot的核心功能(如控制器、服务、存储库等)进行开发。以产品管理模块为例,需要实现以下几个接口: - 查询商品接口:根据条件查询商品列表。 - 新增商品接口:添加新的商品信息。 - 修改商品接口:修改已有的商品信息。 - 删除商品接口:删除指定的商品信息。 3. 前端开发 前端开发部分主要负责页面设计和用户交互功能的实现。可以使用前端框架(如Vue.js、React等)来进行开发。 在前端开发中,需要按照实际需求设计并实现以下页面: - 产品管理页面:展示、搜索和编辑商品信息。 - 订单管理页面:展示、搜索和编辑订单信息。 - 库存管理页面:展示当前商品库存情况和修改库存数量。 - 销售管理页面:展示销售记录和新增销售记录。 - 采购管理页面:展示采购记录和新增采购记录。 4. 部署与上线 进销存管理系统的部署与上线,需要考虑以下几个问题: - 选择合适的云服务器并进行购买。 - 配置环境(如Java、MySQL等)并安装部署项目。 - 设置监控和日志收集,确保系统的稳定性和安全性。 - 保证代码及部署过程的可追溯性(如使用版本控制工具)。 总之,这只是一个简要的SpringBoot进销存管理系统实现思路。具体实现过程及代码编写则需要更深入的技术知识和经验。希望我的回答能够帮助到您。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

舒克日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值