——————————DescriptionStart——————————
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明





基于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等等
——————————CodeStart——————————
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
| }
@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,"删除失败!"); }
@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,"添加失败!"); }
@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", "登录失败,账户禁用"); } }
@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;
@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 { Set<Integer> currentUserRoleIds = userService.findRoleByUserId(username.getUid()); Set<Integer> pids = new HashSet<Integer>(); for (Integer roleId : currentUserRoleIds) { Set<Integer> permissionIds = roleService.findRolePermissionByRoleId(roleId); 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<>();
|
——————————PayStart——————————
项目链接:
https://javayms.github.io?id=531422322105200le
https://javayms.pages.dev?id=531422322105200le