IDEA+springboot + ssm +shiro+ easyui +mysql实现的进销存系统

IDEA+springboot + ssm +shiro+ easyui +mysql实现的进销存系统

  • 一、系统介绍
    • 1.环境配置
  • 二、系统展示
    • 1. 管理员登录
    • 2.首页
    • 3.修改密码
    • 4.系统日志
    • 5. 用户管理
    • 6. 角色管理
    • 7. 进货入库
    • 8.退货出库
    • 9.进货单据查询
    • 10.退货单据查询
    • 11.当前库存查询
    • 12.销售出库
    • 13.客户退货
    • 14. 销售单据查询
    • 15.客户退货查询
    • 16.当前库存查询
    • 17.商品报损
    • 18.商品报溢
    • 19.库存报警
    • 20.报损报溢查询
    • 21.当前库存查询
    • 22.供应商统计
    • 23.客户统计
    • 24.商品采购统计
    • 25.商品销售统计
    • 26.按日统计分析
    • 27.按月统计分析
    • 28.供应商管理
    • 29.客户管理
    • 30.商品管理
    • 31.期初库存
  • 三、部分代码
    • UserRepository.java
    • UserController .java
    • User.java
  • 四、其他
    • 获取源码


一、系统介绍

本系统实现了进销存系统,管理端实现了管理员登录、首页、修改密码、 系统日志、 用户管理、角色管理、
进货入库、退货出库、进货单据查询、退货单据查询、当前库存查询、销售出库、客户退货、销售单据查询、客户退货查询、当前库存查询、商品报损、商品报溢、库存报警、报损报溢查询、当前库存查询、供应商统计、客户统计、商品采购统计、商品销售统计、按日统计分析、按月统计分析、供应商管理、客户管理、商品管理、期初库存

1.环境配置

JDK版本:1.8
Mysql:5.7

二、系统展示

1. 管理员登录

在这里插入图片描述

登录用户名密码:admin 123

2.首页

在这里插入图片描述

3.修改密码

在这里插入图片描述

4.系统日志

在这里插入图片描述

5. 用户管理

在这里插入图片描述

6. 角色管理

在这里插入图片描述

7. 进货入库

在这里插入图片描述

8.退货出库

在这里插入图片描述

9.进货单据查询

在这里插入图片描述

10.退货单据查询

在这里插入图片描述

11.当前库存查询

在这里插入图片描述

12.销售出库

在这里插入图片描述

13.客户退货

在这里插入图片描述

14. 销售单据查询

在这里插入图片描述

15.客户退货查询

在这里插入图片描述

16.当前库存查询

在这里插入图片描述

17.商品报损

在这里插入图片描述

18.商品报溢

在这里插入图片描述

19.库存报警

在这里插入图片描述

20.报损报溢查询

在这里插入图片描述

21.当前库存查询

在这里插入图片描述

22.供应商统计

在这里插入图片描述

23.客户统计

在这里插入图片描述

24.商品采购统计

在这里插入图片描述

25.商品销售统计

在这里插入图片描述

26.按日统计分析

在这里插入图片描述

27.按月统计分析

在这里插入图片描述

28.供应商管理

在这里插入图片描述

29.客户管理

在这里插入图片描述

30.商品管理

在这里插入图片描述

31.期初库存

在这里插入图片描述

三、部分代码

UserRepository.java

package com.mf.repository;import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;import com.mf.entity.User;/*** 用户Repository接口* @author Administrator**/
public interface UserRepository extends JpaRepository<User, Integer>,JpaSpecificationExecutor<User>{/*** 根据用户名查找用户实体* @param userName* @return*/@Query(value="select * from t_user where user_name=?1",nativeQuery=true)public User findByUserName(String userName);
}

UserController .java

package com.mf.controller;import java.util.HashMap;
import java.util.List;
import java.util.Map;import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import javax.validation.Valid;import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.mf.entity.Log;
import com.mf.entity.Menu;
import com.mf.entity.Role;
import com.mf.entity.User;
import com.mf.service.LogService;
import com.mf.service.MenuService;
import com.mf.service.RoleService;
import com.mf.service.UserService;
import com.mf.util.StringUtil;/*** 用户Controller* @author Administrator**/
@Controller
@RequestMapping("/user")
public class UserController {@Resourceprivate UserService userService;@Resourceprivate RoleService roleService;@Resourceprivate MenuService menuService;@Resourceprivate LogService logService;/*** 用户登录判断* @param imageCode* @param user* @param bindingResult* @param session* @return*/@ResponseBody@RequestMapping("/login")public Map<String,Object> login(String imageCode,@Valid User user,BindingResult bindingResult,HttpSession session){Map<String,Object> map=new HashMap<String,Object>();if(StringUtil.isEmpty(imageCode)){map.put("success", false);map.put("errorInfo", "请输入验证码!");return map;}if(!session.getAttribute("checkcode").equals(imageCode)){map.put("success", false);map.put("errorInfo", "验证码输入错误!");return map;}if(bindingResult.hasErrors()){map.put("success", false);map.put("errorInfo", bindingResult.getFieldError().getDefaultMessage());return map;}Subject subject=SecurityUtils.getSubject();UsernamePasswordToken token=new UsernamePasswordToken(user.getUserName(), user.getPassword());try{subject.login(token);String userName=(String) SecurityUtils.getSubject().getPrincipal();User currentUser=userService.findByUserName(userName);session.setAttribute("currentUser", currentUser);List<Role> roleList=roleService.findByUserId(currentUser.getId());map.put("roleList", roleList);map.put("roleSize", roleList.size());map.put("success", true);logService.save(new Log(Log.LOGIN_ACTION,"用户登录"));return map;}catch(Exception e){e.printStackTrace();map.put("success", false);map.put("errorInfo", "用户名或者密码错误!");return map;}}/*** 保存角色信息* @param roleId* @param session* @return* @throws Exception*/@ResponseBody@RequestMapping("/saveRole")public Map<String,Object> saveRole(Integer roleId,HttpSession session)throws Exception{Map<String,Object> map=new HashMap<String,Object>();Role currentRole=roleService.findById(roleId);session.setAttribute("currentRole", currentRole);map.put("success", true);return map;}/*** 加载当前用户信息* @param session* @return* @throws Exception*/@ResponseBody@GetMapping("/loadUserInfo")public String loadUserInfo(HttpSession session)throws Exception{User currentUser=(User) session.getAttribute("currentUser");Role currentRole=(Role) session.getAttribute("currentRole");return "欢迎您:"+currentUser.getTrueName()+"&nbsp;[&nbsp;"+currentRole.getName()+"&nbsp;]";}/*** 加载权限菜单* @param session* @param parentId* @return* @throws Exception*/@ResponseBody@PostMapping("/loadMenuInfo")public String loadMenuInfo(HttpSession session,Integer parentId)throws Exception{Role currentRole=(Role) session.getAttribute("currentRole");return getAllMenuByParentId(parentId,currentRole.getId()).toString();}/*** 获取所有菜单信息* @param parentId* @param roleId* @return*/public JsonArray getAllMenuByParentId(Integer parentId,Integer roleId){JsonArray jsonArray=this.getMenuByParentId(parentId, roleId);for(int i=0;i<jsonArray.size();i++){JsonObject jsonObject=(JsonObject) jsonArray.get(i);if("open".equals(jsonObject.get("state").getAsString())){continue;}else{jsonObject.add("children", getAllMenuByParentId(jsonObject.get("id").getAsInt(), roleId));}}return jsonArray;}/*** 根据父节点和用户角色Id查询菜单* @param parentId* @param roleId* @return*/public JsonArray getMenuByParentId(Integer parentId,Integer roleId){List<Menu> menuList=menuService.findByParentIdAndRoleId(parentId, roleId);JsonArray jsonArray=new JsonArray();for(Menu menu:menuList){JsonObject jsonObject=new JsonObject();jsonObject.addProperty("id", menu.getId()); // 节点IdjsonObject.addProperty("text", menu.getName()); // 节点名称if(menu.getState()==1){jsonObject.addProperty("state", "closed"); // 根节点}else{jsonObject.addProperty("state", "open"); // 叶子节点}jsonObject.addProperty("iconCls", menu.getIcon()); // 节点图标JsonObject attributeObject=new JsonObject(); // 扩展属性attributeObject.addProperty("url", menu.getUrl()); // 菜单请求地址jsonObject.add("attributes", attributeObject); jsonArray.add(jsonObject);}return jsonArray;}
}

User.java

package com.mf.entity;import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;import org.hibernate.validator.constraints.NotEmpty;/*** 用户实体* @author Administrator**/
@Entity
@Table(name="t_user")
public class User {@Id@GeneratedValueprivate Integer id; // 编号@NotEmpty(message="请输入用户名!")@Column(length=50)private String userName; // 用户名@NotEmpty(message="请输入密码!")@Column(length=50)private String password; // 密码@Column(length=50)private String trueName; // 真实姓名@Column(length=1000)private String remarks; // 备注@Transientprivate String roles; // 所拥有的角色public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getTrueName() {return trueName;}public void setTrueName(String trueName) {this.trueName = trueName;}public String getRemarks() {return remarks;}public void setRemarks(String remarks) {this.remarks = remarks;}public String getRoles() {return roles;}public void setRoles(String roles) {this.roles = roles;}@Overridepublic String toString() {return "User [id=" + id + ", userName=" + userName + ", password=" + password + ", trueName=" + trueName+ ", remarks=" + remarks + ", roles=" + roles + "]";}}

四、其他

获取源码

点击以下链接获取源码。
IDEA+springboot + ssm +shiro+ easyui +mysql实现的进销存系统
IDEA+springboot+mybatis+shiro+bootstrap+Mysql网上书店管理系统
IDEA+springboot+mybatis+shiro+bootstrap+Mysql WMS仓库管理系统
IDEA+spring+spring mvc+mybatis+bootstrap+jquery+Mysql运动会管理系统源码
IDEA+SpringBoot+mybatis+bootstrap+jquery+Mysql车险理赔管理系统源码
IDEA+Spring Boot + MyBatis + Layui+Mysql垃圾回收管理系统源码
IDEA+SpringBoot+mybatis+SSM+layui+Mysql学生就业信息管理系统源码
IDEA+springboot+jpa+Layui+Mysql销售考评系统源码
IDEA+Spring + Spring MVC + MyBatis+Bootstrap+Mysql酒店管理系统源码
IDEA+spring boot+mybatis+spring mvc+bootstrap+Mysql停车位管理系统源码

Java+Swing+Mysql实现学生宿舍管理系统

Java+Swing+Txt实现自助款机系统

Java+Swing+Mysql自助存取款机系统

Java+Swing+mysql5实现学生成绩管理系统(带分页)

Java+Swing+Mysql实现超市商品管理系统源码

Java+Swing+Mysql实现通讯录管理系统源码

Java+Swing+Mysql实现图书管理系统源码

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

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

相关文章

hydra详解(仅供学习参考)

一、概述。 Hydra是一款非常强大的渗透工具&#xff0c;由著名的黑客组织THC开发的一款开源工具。 二、使用方法。 hybra基础语法&#xff1a; hydra 参数 IP 服务 参数&#xff1a; -l login 小写&#xff0c;指定用户名进行破解 -L file 大写&#xff0c;指定用户的用户名…

小程序主包超1.5MB分包处理流程优化方案

"subPackages": [// 分包1 {"root": "src, // 根目录"pages": [{"path": "views/business/index", // 页面路径"name": "business_index","aliasPath": "/business/index",&…

性能测试的定义和基本概念

1.性能测试的定义: 测试人员借助性能测试工具&#xff0c;模拟系统在不同的场景下&#xff0c;对应的性能指标是否达到预期 2.性能测试和功能测试的区别: 功能测试:依靠人工执行 性能测试:依靠工具完成 功能测试:不管在什么场景下&#xff0c;只要能够正常就可以 性能测…

群晖NAS:docker查询注册表失败解决方案 docker安装网心云、mysql等

群晖NAS&#xff1a;docker查询注册表失败解决方案 差不多2023年4月底开始的&#xff0c;docker内不能直接搜索注册表。据说是有人在库里放了一些有意思的东西&#xff0c;被和谐掉了&#xff0c;所以也别指望什么时候能解封。 网上很多案例&#xff0c;都不能用。还有奇葩的…

开发工具篇第25讲:阿里云MFA绑定Chrome浏览器Authenticator插件

开发工具篇第25讲&#xff1a;阿里云MFA绑定Chrome浏览器Authenticator插件 本文是开发工具篇第25讲&#xff0c;登录阿里云旗下产品时&#xff0c;需要使用mfa登录&#xff0c;每次如果要用手机看mfa码很麻烦&#xff0c; Chrome浏览器提供了一个快捷的登录方法&#xff0c;可…

汽车应用级MS35774/MS35774A低噪声 256 细分微步进电机驱动

MS35774/MS35774A 是一款高精度、低噪声的两相步进 电机驱动芯片&#xff0c;芯片内置功率MOSFET &#xff0c;长时间工作的平均电 流可以达到 1.4A &#xff0c;峰值电流 2A 。芯片集成了过温保护、欠压 保护、过流保护、短地保护、短电源保护功能。 主要特点 ◼ 2 相步进…

HTML学习 第一部分(前端学习)

参考学习网站: 网页简介 (w3schools.com) 我的学习思路是&#xff1a;网站实践视频。 视频很重要的&#xff0c;因为它会给你一种开阔思路的方式。你会想&#xff0c;噢&#xff01;原来还可以这样。这是书本或者网站教程 所不能教给你的。而且&#xff0c;对一些教程&#…

驱动程序设计 驱动程序函数、驱动控制LED闪烁 7.7

驱动函数 .read() .write() ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);驱动程序 /** 文件名称&#xff1a;mod.c* 创 建 者: memories* 创建日期&#xff1a;2023…

CAN转EtherNet/IP网关ethernet/ip协议

JM-EIP-CAN 是自主研发的一款 ETHERNET/IP 从站功能的通讯网关。该产品主要功能是将各种 CAN 总线和 ETHERNET/IP 网络连接起来。 本网关连接到 ETHERNET/IP 总线中做为从站使用&#xff0c;连接到 CAN 总线中根据节点号进行读写。 技术参数 ETHERNET/IP 技术参数 网关做为 E…

快速构建一个 GitLab + Jenkins + Harbor 的云原生 DevOps 环境

今天我们要搭建一条怎样的工具链呢&#xff1f;且看效果图&#xff1a; GitLab Jenkins Harbor Toolchain Workflow 首先我们需要完成 GitLab、Jenkins 和 Harbor 三个工具的部署&#xff1b; 接着我们需要在 GitLab 上创建一个代码库&#xff0c;并且在 Jenkins 上创建相应…

38. QT在工控机Linux系统上调试机器人注意事项

1. QtCreator项目编译目录问题 当使用QtCreator创建一个新项目之后,对于代码编译产生的最终文件保存路径一般也会确定下来,QtCreator会帮助我们在同级目录下创建保存路径。例如下图:带有蓝色框的文件夹为项目源码,左侧的文件夹即为项目编译后产生的文件夹 如果在某种情况…

3ds Max 建模基础教程:创建棕榈植物

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 嘿伙计们&#xff0c;在本教程中&#xff0c;我们将学习如何使用其花盆创建棕榈植物&#xff0c;首先我们将对花盆进行建模&#xff0c;然后设置叶子和纹理&#xff0c;我从谷歌搜索中找到了纹理&#xff0…