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*/@Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {//判断请求地址是否为loginif (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 {@Resourceprivate CustomerReturnListService customerReturnListService;@Resourceprivate UserService userService;/*** 客户退货主页* @return*/@RequestMapping("index")public String index(Model model){model.addAttribute("customerReturnNumber",customerReturnListService.getNextCustomerReturnNumber());return "customerReturn/customer_return";}@RequestMapping("save")@ResponseBodypublic 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")@ResponseBodypublic Map<String,Object> customerReturnList(CustomerReturnListQuery customerReturnListQuery){return customerReturnListService.customerReturnList(customerReturnListQuery);}/*** 删除进货单记录* @param id* @return*/@RequestMapping("delete")@ResponseBodypublic RespBean delete(Integer id){customerReturnListService.deleteCustomerReturn(id);return RespBean.success("删除成功");}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/619930.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅析Linux进程地址空间

前言 现代处理器基本都支持虚拟内存管理&#xff0c;在开启虚存管理时&#xff0c;程序只能访问到虚拟地址&#xff0c;处理器的内存管理单元&#xff08;MMU&#xff09;会自动完成虚拟地址到物理地址的转换。基于虚拟内存机制&#xff0c;操作系统可以为每个运行中的进程创建…

ros2+gazebo(ign)激光雷达+摄像头模拟

虽然ign不能模拟雷达&#xff0c;但是摄线头是可以模拟的。 好了现在都不用模拟了&#xff0c;ign摄线头也模拟不了。 ros2ign gazebo无法全部模拟摄线头和雷达。 只能有这样2个解决方法&#xff1a; 方法1&#xff1a;使用ros2 gazebo11 方案2&#xff1a;使用ros2买一个实…

一系列实用工具、编程工具和学习网站推荐

其他工具&#xff1a; 十分钟临时邮箱&#xff1a;https://www.linshi-email.com/Chrome极简插件&#xff1a;https://chrome.zzzmh.cn/#/indexPc桌面静态壁纸&#xff1a;https://ss.netnr.com/wallpaperProcessOn在线画图&#xff1a;https://www.processon.com/ 编程工具&a…

【问题探讨】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研究

目录 主要内容 模型研究 结果一览 下载链接 主要内容 该模型以环境保护成本和运行成本为双目标构建了微电网优化调度模型&#xff0c;模型目标函数和约束条件复现文献《基于改进粒子群算法的微电网多目标优化调度》&#xff0c;程序的特点是采用非支配排序的蜣螂…

Redis缓存使用问题

数据一致性 只要使用到缓存,无论是本地内存做缓存还是使用 redis 做缓存,那么就会存在数据同步的问题。 以 Tomcat 向 MySQL 中写入和删改数据为例,来解释数据的增删改操作具体是如何进行的。 我们分析一下几种解决方案, 1、先更新缓存,再更新数据库 2、先更新数据库,…

2023年第十四届中国数据库技术大会(DTCC2023):核心内容与学习收获(附大会核心PPT下载)

随着信息化时代的深入发展&#xff0c;数据库技术作为支撑信息化应用的核心技术&#xff0c;其重要性日益凸显。本次大会以“数据价值&#xff0c;驱动未来”为主题&#xff0c;聚焦数据库领域的前沿技术与最新动态&#xff0c;吸引了数千名业界专家、企业代表和数据库技术爱好…

橘子学Spring01之spring的那些工厂和门面使用

一、Spring的工厂体系 我们先来说一下spring的工厂体系(也称之为容器)&#xff0c;得益于大佬们对于单一职责模式的坚决贯彻&#xff0c;在十几年以来spring的发展路上&#xff0c;扩展出来大量的工厂类&#xff0c;每一个工厂类都承担着自己的功能(其实就是有对应的方法实现)…

阿里云云服务器u1实例和e实例有什么区别?

阿里云服务器u1和e实例有什么区别&#xff1f;ECS通用算力型u1实例是企业级独享型云服务器&#xff0c;ECS经济型e实例是共享型云服务器&#xff0c;所以相比较e实例&#xff0c;云服务器u1性能更好一些。e实例为共享型云服务器&#xff0c;共享型实例采用非绑定CPU调度模式&am…

监督学习 - 岭回归(Ridge Regression)

什么是机器学习 岭回归&#xff08;Ridge Regression&#xff09;是一种线性回归的扩展&#xff0c;它通过在损失函数中添加正则化项&#xff08;L2范数&#xff09;来解决线性回归中可能存在的过拟合问题。正则化项有助于限制模型的参数&#xff0c;使其不过分依赖于训练数据…

面试题目1

文章目录 1、安装系统的方法2、总线型3、OSL参考模型&#xff08;网络七层模型&#xff09;4、计算机系统的组成5、计算机硬件 1、安装系统的方法 U盘安装 硬盘安装 刻光盘安装 PE系统中安装 网络安装 2、总线型 所有设备都连接到公共总线上&#xff0c;结点间使用广播通信方…

Go语言实现各种hash算法

Go语言实现各种hash算法 1、各种hash算法的实现 package mainimport ("crypto""crypto/md5""crypto/sha1""crypto/sha256""crypto/sha512""encoding/hex""fmt""hash""golang.org/x/cr…

补充前端访问静态资源的一个错误

注意&#xff0c;前端访问时带上本地服务端的host&#xff0c;例如http://localhost:8080&#xff0c; 后端改写的代码如下,注意file后面一定是三个‘/’&#xff0c;不然的化虽然能解析&#xff0c;但访问不到。 Configuration public class LocalPathWebMvcConfigurer exte…

C++ 具名要求-全库范围的概念 -包含分配信息的类类型(Allocator)

此页面中列出的具名要求&#xff0c;是 C 标准的规范性文本中使用的具名要求&#xff0c;用于定义标准库的期待。 某些具名要求在 C20 中正在以概念语言特性进行形式化。在那之前&#xff0c;确保以满足这些要求的模板实参实例化标准库模板是程序员的重担。若不这么做&#xf…

LeetCode264. 丑数 II(相关话题:多重指针动态规划)

题目描述 给你一个整数 n &#xff0c;请你找出并返回第 n 个 丑数 。丑数 就是质因子只包含 2、3 和 5 的正整数。 示例 1&#xff1a; 输入&#xff1a;n 10 输出&#xff1a;12 解释&#xff1a;[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的序列。示例 2&am…

【Sharding-Sphere 整合SpringBoot】

Sharding-Jdbc在3.0后改名为Sharding-Sphere。Sharding-Sphere相关资料&#xff0c;请自行网上查阅&#xff0c;这里仅仅介绍了实战相关内容&#xff0c;算是抛砖引玉。 Sharding-Sphere 整合SpringBoot 一、项目准备二、项目实战1. pom.xml及application.yml2. OrderInfoCont…

串行Nor Flash的结构和参数特性

文章目录 引言1、Nor Flash的结构2、Nor Flash的类别3.标准Serial Nor Flash的特征属性1.Wide Range VCC Flash2.Permanent Lock3.Default Lock Protection4.Standard Serial Interface5.Multi-I/O6.Multi-I/O Duplex (DTR)7.XIP&#xff08;片上执行&#xff09; 4.标准Serial…

前端架构师需要具备哪些能力?

我们先看看前端架构师的招聘要求。 公司一 工作职责 1、参与项目需求分析评审&#xff0c;负责核心功能详细设计&#xff1b; 2、参与技术调研&#xff0c;负责解决开发过程中的技术难点问题&#xff1b; 3、协助制定前端开发规范&#xff0c;核心代码开发&#xff1b; 4、负…

Java内置锁:深度解析Lock接口中lock方法和lockInterruptibly方法

Java11中的Lock接口提供lock()和lockInterruptibly()两种锁定方法&#xff0c;用于获取锁&#xff0c;但处理线程中断时有所不同&#xff0c;lock()使线程等待直到锁释放&#xff0c;期间无视中断&#xff1b;而lockInterruptibly()在等待中若收到中断请求&#xff0c;会立即响…

倍福PLC控制器开发环境介绍

倍福PLC控制器是一款功能强大、易于使用的可编程逻辑控制器&#xff0c;广泛应用于各种工业自动化控制系统中。为了充分发挥倍福PLC控制器的功能&#xff0c;需要使用合适的开发环境。下面将介绍倍福PLC控制器的开发环境&#xff0c;主要包括软件安装与配置、工程创建与管理、编…

“超人练习法”系列08:ZPD 理论

01 先认识一个靓仔 看过 Lev Vygotsky 这个人的书吗&#xff1f;他是一位熟练心理学家&#xff0c;对人们习得技能的方式非常感兴趣&#xff0c;但他 37 岁的时候就因肺炎英年早逝了。 他认为社会环境对学习有关键性的作用&#xff0c;认为社会因素与个人因素的整合促成了学习…