——————————DescriptionStart——————————
运行环境
Java≥8、MySQL≥5.7、Node.js≥14
开发工具
后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可
❗没学过node.js的不要搞前后端分离项目
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明






基于javaweb的SpringBoot进销存管理系统(前后端分离+java+vue+springboot+ssm+mysql+maven+redis)
一、项目简述
本系统功能包括: 库存管理,入库管理,出库管理,往来管理,基础资料, 系统管理,消息中心,系统监控等等。
二、项目运行
环境配置: Jdk1.8 + Mysql + HBuilderX ( Webstorm也 行)+ Eclispe ( IntelliJ IDEA ,Eclispe,MyEclispe , Sts都支持)。
项目技术: Springboot + Maven + Mybatis-plus+ Vue + Redis + Shiro + Druid + logback 组成,B/S模萤;,其他:fastjson, poi, Swagger-ui, quartz, lombok (简化代码)等
——————————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 37 38 39 40 41 42 43 44
| @Override public String getDatabaseType() throws SQLException { if(oConvertUtils.isNotEmpty(DB_TYPE)){ return DB_TYPE; } DataSource dataSource = SpringContextUtils.getApplicationContext().getBean(DataSource.class); return getDatabaseTypeByDataSource(dataSource); }
@Override @Cacheable(value = CacheConstant.SYS_DICT_CACHE,key = "#code") public List<DictModel> queryDictItemsByCode(String code) { return sysDictService.queryDictItemsByCode(code); }
@Override public List<DictModel> queryTableDictItemsByCode(String table, String text, String code) { return sysDictService.queryTableDictItemsByCode(table, text, code); }
@Override public List<DictModel> queryAllDepartBackDictModel() { return sysDictService.queryAllDepartBackDictModel(); }
@Override public List<JSONObject> queryAllDepart(Wrapper wrapper) { return JSON.parseArray(JSON.toJSONString(sysDepartService.list(wrapper))).toJavaList(JSONObject.class); }
@Override public void sendSysAnnouncement(String fromUser, String toUser, String title, String msgContent) { this.sendSysAnnouncement(fromUser, toUser, title, msgContent, CommonConstant.MSG_CATEGORY_2); }
@Override public void sendSysAnnouncement(String fromUser, String toUser, String title, String msgContent, String setMsgCategory) { SysAnnouncement announcement = new SysAnnouncement(); announcement.setTitile(title); announcement.setMsgContent(msgContent); announcement.setSender(fromUser); announcement.setPriority(CommonConstant.PRIORITY_M); announcement.setMsgType(CommonConstant.MSG_TYPE_UESR);
|
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
| file.mkdirs(); } String orgName = mf.getOriginalFilename(); orgName = CommonUtils.getFileName(orgName); if(orgName.indexOf(".")!=-1){ fileName = orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.indexOf(".")); }else{ fileName = orgName+ "_" + System.currentTimeMillis(); } String savePath = file.getPath() + File.separator + fileName; File savefile = new File(savePath); FileCopyUtils.copy(mf.getBytes(), savefile); String dbpath = null; if(oConvertUtils.isNotEmpty(bizPath)){ dbpath = bizPath + File.separator + fileName; }else{ dbpath = fileName; } if (dbpath.contains("\\")) { dbpath = dbpath.replace("\\", "/"); } return dbpath; } catch (IOException e) { log.error(e.getMessage(), e); } return ""; }
|
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
|
/** * <p> * 菜单权限表 前端控制器 * </p> * */ @Slf4j @RestController @RequestMapping("/sys/permission") public class SysPermissionController {
@Autowired private ISysPermissionService sysPermissionService;
@Autowired private ISysRolePermissionService sysRolePermissionService;
@Autowired private ISysPermissionDataRuleService sysPermissionDataRuleService;
@Autowired private ISysDepartPermissionService sysDepartPermissionService;
/** * 加载数据节点 * * @return */ @RequestMapping(value = "/list", method = RequestMethod.GET) public Result<List<SysPermissionTree>> list() { long start = System.currentTimeMillis(); Result<List<SysPermissionTree>> result = new Result<>(); try { LambdaQueryWrapper<SysPermission> query = new LambdaQueryWrapper<SysPermission>(); query.eq(SysPermission::getDelFlag, CommonConstant.DEL_FLAG_0); query.orderByAsc(SysPermission::getSortNo); List<SysPermission> list = sysPermissionService.list(query); List<SysPermissionTree> treeList = new ArrayList<>(); getTreeList(treeList, list, null); result.setResult(treeList); result.setSuccess(true); log.info("======获取全部菜单数据=====耗时:" + (System.currentTimeMillis() - start) + "毫秒"); } catch (Exception e) { log.error(e.getMessage(), e);
|
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
| List<String> userIds = userList.stream().map(SysUser::getId).collect(Collectors.toList()); if(userIds!=null && userIds.size()>0){ Map<String,String> useDepNames = sysUserService.getDepNamesByUserIds(userIds); userList.forEach(item->{ item.setOrgCode(useDepNames.get(item.getId())); }); }
try { result.setSuccess(true); result.setResult(userList); return result; } catch (Exception e) { log.error(e.getMessage(), e); result.setSuccess(false); return result; } }
@RequestMapping(value = "/exportXls") public ModelAndView exportXls(SysUser sysUser,HttpServletRequest request) { QueryWrapper<SysUser> queryWrapper = QueryGenerator.initQueryWrapper(sysUser, request.getParameterMap()); ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); String selections = request.getParameter("selections"); if(!oConvertUtils.isEmpty(selections)){ queryWrapper.in("id",selections.split(",")); } List<SysUser> pageList = sysUserService.list(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
| user.setCreateTime(new Date()); String salt = oConvertUtils.randomGen(8); String passwordEncode = PasswordUtil.encrypt(username, password, salt); user.setSalt(salt); user.setUsername(username); user.setRealname(username); user.setPassword(passwordEncode); user.setEmail(email); user.setPhone(phone); user.setStatus(CommonConstant.USER_UNFREEZE); user.setDelFlag(CommonConstant.DEL_FLAG_0); user.setActivitiSync(CommonConstant.ACT_SYNC_0); sysUserService.addUserWithRole(user,"ee8626f80f7c2619917b6236f3a7f02b"); result.success("注册成功"); } catch (Exception e) { result.error500("注册失败"); } return result; }
@GetMapping("/querySysUser") public Result<Map<String, Object>> querySysUser(SysUser sysUser) { String phone = sysUser.getPhone(); String username = sysUser.getUsername(); Result<Map<String, Object>> result = new Result<Map<String, Object>>(); Map<String, Object> map = new HashMap<String, Object>(); if (oConvertUtils.isNotEmpty(phone)) { SysUser user = sysUserService.getUserByPhone(phone); if(user!=null) { map.put("username",user.getUsername()); map.put("phone",user.getPhone()); result.setSuccess(true); result.setResult(map); return result; } } if (oConvertUtils.isNotEmpty(username)) { SysUser user = sysUserService.getUserByName(username);
|
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
| @ApiOperation(value="收款单-通过id查询", notes="收款单-通过id查询") @GetMapping(value = "/queryById") public Result<?> queryById(@RequestParam(name="id",required=true) String id) { FinReceipt finReceipt = finReceiptService.getById(id); if(finReceipt==null) { return Result.error("未找到对应数据"); } return Result.ok(finReceipt);
}
@AutoLog(value = "收款明细集合-通过id查询") @ApiOperation(value="收款明细集合-通过id查询", notes="收款明细-通过id查询") @GetMapping(value = "/queryFinReceiptEntryByMainId") public Result<?> queryFinReceiptEntryListByMainId(@RequestParam(name="id",required=true) String id) { List<FinReceiptEntry> finReceiptEntryList = finReceiptEntryService.selectByMainId(id); return Result.ok(finReceiptEntryList); }
@RequestMapping(value = {"/exportXls", "/exportXls/{receiptType}"}) public ModelAndView exportXls(HttpServletRequest request, FinReceipt finReceipt) { QueryWrapper<FinReceipt> queryWrapper = QueryGenerator.initQueryWrapper(finReceipt, request.getParameterMap()); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
List<FinReceipt> queryList = finReceiptService.list(queryWrapper); String selections = request.getParameter("selections"); List<FinReceipt> finReceiptList = new ArrayList<FinReceipt>(); if(oConvertUtils.isEmpty(selections)) { finReceiptList = queryList; }else { List<String> selectionList = Arrays.asList(selections.split(",")); finReceiptList = queryList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList());
|
——————————PayStart——————————
项目链接:
https://javayms.github.io?id=301222062008200xb
https://javayms.pages.dev?id=301222062008200xb