基于javaweb的SpringBoot超市进销存系统设计和实现(java+springboot+ssm+mysql+html+thymeleaf+maven)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

550023202402

560023202402

570023202402

580023202402

590023202402

基于javaweb的SpringBoot超市进销存系统设计和实现(java+springboot+ssm+mysql+html+thymeleaf+maven)

一、项目简述

本系统主要实现的功能有: 用户管理,商品管理,销售管理,进货退货管理,仓库管 理等等功能。

二、项目运行

环境配置: Jdk1.8 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)

项目技术: Springboot+ SpringMVC + MyBatis + ThymeLeaf + JavaScript + JQuery + Ajax + maven等等

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
32
33
34
35
36



/**
* <p>
* 前端控制器
* </p>
*
*/
@RestController
@RequestMapping("/role")
public class RoleController {

@Autowired
private RoleService roleService;

@Autowired
private PermissionService permissionService;

/**
* 查询所有角色信息
* @param roleVO
* @return
*/
@SysLog("角色查询操作")
@RequestMapping("/roleList")
public DataGridViewResult roleList(RoleVO roleVO) {
//分页构造函数
IPage<Role> page = new Page<>(roleVO.getPage(), roleVO.getLimit());
QueryWrapper<Role> queryWrapper = new QueryWrapper<>();
queryWrapper.like(!StringUtils.isEmpty(roleVO.getRolename()), "rolename", roleVO.getRolename());
/**
* 翻页查询
*
* @param page 翻页对象
* @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

}

/**
* 类别批量删除
* @param ids
* @return
*/
@SysLog("类别删除操作")
@RequestMapping("/deleteList")
public Result deleteList(String ids) {
//将字符串拆分成数组
String[] idsStr = ids.split(",");
List<String> list = Arrays.asList(idsStr);
boolean bool = categoryService.removeByIds(list);
if(bool){
return Result.success(true,"200","删除成功!");
}
return Result.error(false,null,"删除失败!");
}

/**
* 添加类别信息
* @param category
* @return
*/
@SysLog("类别添加操作")
@PostMapping("/addcategory")
public Result addCategory(Category category){
boolean bool = categoryService.save(category);
if(bool){
return Result.success(true,"200","添加成功!");
}
return Result.error(false,null,"添加失败!");
}

/**
* 修改类别信息
* @param category
* @return
*/
@SysLog("类别修改操作")
@PostMapping("/updatecategory")
public Result updateCategory(Category category){

boolean bool = categoryService.updateById(category);
if(bool){
return Result.success(true,"200","修改成功!");
}
return Result.error(false,null,"修改失败!");
}

/**
* 删除单条数据
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
32
33
34
35
36
37
38
39
40
41
            .select("sum( money*buyquantity ) AS moneys,DATE_FORMAT( buytime, '%Y-%m' ) AS counttime")
.between("buytime",DateUtils.stepMonth(i),DateUtils.getMonth(i))
.groupBy("counttime")
.orderByDesc("counttime");

queryWrapper2
.select("sum( outprice ) AS moneys,DATE_FORMAT( outtime, '%Y-%m' ) AS counttime")
.between("outtime",DateUtils.stepMonth(i),DateUtils.getMonth(i))
.groupBy("counttime")
.orderByDesc("counttime");

Sale sales = saleService.getOne(queryWrapper);

Outsale outsale = outsaleService.getOne(queryWrapper2);

if(null!= sales){
list1.add(sales.getCounttime());
list2.add(sales.getMoneys());
if(outsale!=null){
list3.add(sales.getMoneys()-outsale.getMoneys());
list4.add(-outsale.getMoneys());
}else{
list3.add(sales.getMoneys());
list4.add(null);
}
}else {
list1.add(new SimpleDateFormat("yyyy-MM").format(DateUtils.getMonth(i)));
list2.add(null);
if(outsale!=null){
list3.add(-outsale.getMoneys());
list4.add(-outsale.getMoneys());
}else{
list3.add(null);
list4.add(null);
}
}
}

map.put("data1",list1);
map.put("data2",list2);
map.put("data3",list3);
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
private InportService inportService;

@Resource
private OutportService outportService;

@Autowired
private GoodsService goodsService;


@SysLog("查询统计销售报表")
@RequestMapping("/statisticsSales")
public DataGridViewResult statisticsSales(){
QueryWrapper<Sale> queryWrapper = new QueryWrapper<>();
queryWrapper
.select("gid","sum(buyquantity) total,sum(realnumber) actualtotal")
.groupBy("gid")
.orderByAsc("total")
.last("limit 5");
List<Sale> salesList = saleService.list(queryWrapper);
Map<String, Object> map = new HashMap<>();
List<String> list1 = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();
List<Integer> list3 = new ArrayList<>();

for (Sale sale : salesList) {
Goods goods = goodsService.getById(sale.getGid());
if (null != goods) {
list1.add(goods.getGname()+goods.getGnumbering());
list2.add(sale.getTotal());
list3.add(sale.getActualtotal());
}
}
map.put("data1",list1);
map.put("data2",list2);
map.put("data3",list3);
return new DataGridViewResult(map);


}

@SysLog("查询统计退货报表")
@RequestMapping("/statisticsinGoods")
public DataGridViewResult statisticsinGoods(){
QueryWrapper<Inport> queryWrapper = new QueryWrapper<>();
queryWrapper
.select("sum( number ) as countnumbers,DATE_FORMAT( inptime, '%Y-%m' ) AS counttime")
.between("inptime",DateUtils.stepMonth(5),new Date())
.groupBy("counttime")
.orderByAsc("counttime");
List<Inport> inportsList = inportService.list(queryWrapper);

Map<String, Object> map = new HashMap<>();
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 * @param username 用户名
* @param password 密码
* @param request
* @return
*/

@SysLog("登录操作")
@PostMapping("/login")
public Result login(String username, String password, String code,HttpServletRequest request) {
try {

if (!(request.getSession().getAttribute("code")+"").equalsIgnoreCase(code+"")) {
return Result.error(false, "400", "登录失败,验证码错误");
}


//获取当前登录主体对象
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
subject.login(token);
LoginUserVO userDTO = (LoginUserVO) subject.getPrincipal();
request.getSession().setAttribute("username", userDTO.getUser());
return Result.success(true, "200", "登录成功");
} catch (UnknownAccountException e) {
e.printStackTrace();
return Result.error(false, "400", "登录失败,用户名不存在");
}catch (IncorrectCredentialsException e) {
e.printStackTrace();
return Result.error(false, "400", "登录失败,密码错误");
}catch (AuthenticationException e) {
e.printStackTrace();
return Result.error(false, "400", "登录失败,账户禁用");
}
}

/**
* 得到登陆验证码
* @param response
* @param session
* @throws IOException
*/
@RequestMapping("/getCode")
public void getCode(HttpServletResponse response, HttpSession session) throws IOException {
//定义图形验证码的长和宽
LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(116, 36,4,5);
session.setAttribute("code",lineCaptcha.getCode());
try {
ServletOutputStream outputStream = response.getOutputStream();
lineCaptcha.write(outputStream);
outputStream.close();
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
private PermissionService permissionService;

@Autowired
private UserService userService;

@Autowired
private RoleService roleService;


/**
* 加载首页左侧菜单
*
* @param session
* @return
*/
@RequestMapping("/loadIndexLeftMenuTree")
public DataGridViewResult loadIndexLeftMenuTree(HttpSession session) {
//调用查询权限菜单列表
QueryWrapper<Permission> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("type", "menu");
User username = (User) session.getAttribute("username");
List<Permission> permissionList = new ArrayList<>();

if (username.getType() == 0) {
permissionList = permissionService.list(queryWrapper);
}
try {
//1.根据当前登录用户ID查询该用户拥有的角色列表
Set<Integer> currentUserRoleIds = userService.findRoleByUserId(username.getUid());
//2.创建集合保存每个角色下拥有的权限菜单ID
Set<Integer> pids = new HashSet<Integer>();
//3.循环遍历当前用户拥有的角色列表
for (Integer roleId : currentUserRoleIds) {
//4.根据角色ID查询每个角色下拥有的权限菜单
Set<Integer> permissionIds = roleService.findRolePermissionByRoleId(roleId);
//5.将查询出来的权限id放到集合中
pids.addAll(permissionIds);
}
//判断当前权限集合是否有数据
if (pids.size() > 0) {
//拼接查询条件
queryWrapper.in("id", pids);
//执行查询
permissionList = permissionService.list(queryWrapper);
}
} catch (Exception e) {
e.printStackTrace();
}
//创建集合 保存树节点
List<TreeNode> treeNodes = new ArrayList<>();


项目链接:
https://javayms.github.io?id=531422322105200le
https://javayms.pages.dev?id=531422322105200le