赞
踩
基于JAVA+Vue+SpringBoot+MySQL的便利店物资管理系统,包含了供应商模块、商品档案模块、商品进货模块、商品销售模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,便利店物资管理系统基于角色的访问控制,给管理员、店员使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。
通过对便利店实际需求的研究,我将便利店仓库物资信息管理系统的功能模块分为系统登陆模块、便利店管理员模块、菜单权限模块、商品管理模块、商品进货模块、商品出库模块,以下将分别进行阐述。
登陆注册模块用于便利店仓库物资信息管理系统的登陆,用户输入登陆账号、密码和图形验证码即可完成登陆,登陆界面要当简洁美观,无需对用户进行培训即可投入使用。
便利店管理模块用于维护便利店工作人员的档案,包括对便利店员工的增加、删除、修改、编辑、导出操作。管理员的字段应包括登陆账号、登陆密码、姓名、性别、手机号、身份证号、家庭地址、备注信息等。
菜单权限模块用于管理每一个登陆角色拥有哪些菜单权限,如便利店管理员需要拥有全部菜单权限,而仓库管理员只需拥有进货菜单即可,无需看到用户管理模块。这个基于角色的访问控制,需要在菜单权限模块中设计和实现。
商品管理模块用于管理便利店中全部商品类型,如方便面、火腿肠等等。这些商品类型需要为进货模块和出库模块提供基础数据支持,商品档案的字段应当包括商品ID、商品名称、商品类型、商品供应商、型号、商品单价、现有数量、总价等字段,在商品管理模块中,管理员可以对商品档案进行增加、删除、修改、更新操作。
在商品档案的建立之后,仓库管理员可以对商品进行进货登记,增加商品的库存。仓库员需要先选择商品类型,然后输入进货发票号和入库数量,如有需要还可以输入备注信息,完成进货登记。进货模块的字段需要包括商品ID、商品名称、发票单号、商品型号、单价、入库数量、总价、备注信息。
商品入库之后,如果投入到便利店中,需要进行出库操作,出库也是由出库管理员完成。出库员先选择商品类型,此时可以看到商品剩余的库存量,接着从用户档案中选择出库领用人,最后输入出库数量,完成商品出库操作。出库单需要包括商品ID、商品名称、商品型号、商品单价、出库数量、总价、领用人、备注信息。
通过对便利店实际需求的需求分析,我将便利店仓库物资信息管理系统的架构分为六大模块,分别是系统登陆模块、便利店管理员模块、菜单权限模块、商品管理模块、商品进货模块、商品出库模块如下图所示。
系统开发的可行性的评估,主要是从三个方面进行的,分别是对现有系统的分析、对技术的可行性分析和社会因素的分析。
便利店仓库物资信息管理系统的设计与实现具有重要意义:用户管理商品更加方便快捷,只需注册账号进行登录,便可以在自己的电脑上进行出入库商品操作,可以根据需要修改自己的个人信息,用户也可以随时根据需要进行出入库,发送过程方便快捷;针对这一问题,便利店仓库物资信息管理系统有利于减少用户在出入库的操作时间,减轻出入库等待时间的占比,在一定程度上提高了用户的便利店工作效率。
该系统分析了设计初期各种技术体系结构的优缺点,并最终采用了广泛而高安全性J2EE技术。J2EE技术的重点是系统的外部可拓展性以及开发早期的标准化部署。因此,J2EE技术可以完全支持便利店仓库物资管理系统的研究和开发。面向对象的思想将以上所说作为研究对象,来研究、分析、探索这些事物之间的关系。一般情况下,问题域里的所有内容都可以一个一个地转换为软件系统中的对象。面向对象技术使系统更易于开发人员理解和使用,这使系统的用户可以了解研发的原理和过程。MySQL是关系数据库,并且MySQL体积小,速度快,并且是开源代码,因此它拥有广泛的应用。综上,开发技术可行,不存在工程难题。
计算机和网络技术在ERP领域的应用,能够有效的解决用户仓库货物清点难、货物杂乱多等问题,可以节省时间、合理分配资源等,所以便利店仓库物资管理系统是具有重要意义的。
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增供应商")
public Result<Supplier> insert(Supplier supplier){
iSupplierService.saveOrUpdate(supplier);
return new ResultUtil<Supplier>().setData(supplier);
}
@RequestMapping(value = "/update", method = RequestMethod.POST)
@ApiOperation(value = "编辑供应商")
public Result<Supplier> update(Supplier supplier){
iSupplierService.saveOrUpdate(supplier);
return new ResultUtil<Supplier>().setData(supplier);
}
@RequestMapping(value = "/insert", method = RequestMethod.POST) @ApiOperation(value = "新增商品入库单") public Result<CommodityIn> insert(CommodityIn commodityIn){ CommodityIn oldWarehousing = iCommodityInService.getById(commodityIn.getId()); double oldNumber = 0.0; if(oldWarehousing != null){ oldNumber = oldWarehousing.getNumber() == null ? 0.0 : Double.parseDouble(oldWarehousing.getNumber()); } // 入库,更新库存 Commodity assetsType = iCommodityService.getById(commodityIn.getAssetId()); if(assetsType != null){ // number = 现在仓库总数量 + 该入库单现增加数量 - 该入库单原有增加数量 double number = Double.parseDouble(assetsType.getNumber()) + Double.parseDouble(commodityIn.getNumber()) - oldNumber; assetsType.setNumber(number + ""); assetsType.setTotalPrice((Double.parseDouble(assetsType.getUnitPrice()) * number) + ""); // existNumber = 现在仓库存在数量 + 该入库单现增加数量 - 该入库单原有增加数量 double existNumber = Double.parseDouble(assetsType.getExistingNumber()) + Double.parseDouble(commodityIn.getNumber()) - oldNumber; if(existNumber < 0) { return ResultUtil.error("入库数量大于已出库数量!"); } assetsType.setExistingNumber(existNumber + ""); iCommodityService.saveOrUpdate(assetsType); } iCommodityInService.saveOrUpdate(commodityIn); return new ResultUtil<CommodityIn>().setData(commodityIn); }
@RequestMapping(value = "/insert", method = RequestMethod.POST) @ApiOperation(value = "新增商品出库单") public Result<CommodityOut> insert(CommodityOut commodityOut){ CommodityOut oldWarehouseOut = iCommodityOutService.getById(commodityOut.getId()); double oldNumber = 0.0; if(oldWarehouseOut != null){ oldNumber = Double.parseDouble(oldWarehouseOut.getNumber()); } // outNumber 要出库的数量 double outNumber = Double.parseDouble(commodityOut.getNumber()); Commodity oldAssetsType = iCommodityService.getById(commodityOut.getAssetId()); if(oldAssetsType != null){ // newNumber 出库后还有的数量 = 仓库原本还有的数量 - 出库单的出库数量 + 原有出库单的出库数量 Double newNumber = Double.parseDouble(oldAssetsType.getExistingNumber()) - outNumber + oldNumber; if(newNumber >= 0){ oldAssetsType.setExistingNumber(newNumber + ""); iCommodityService.saveOrUpdate(oldAssetsType); }else{ return ResultUtil.error("手慢啦!库存不足!"); } } iCommodityOutService.saveOrUpdate(commodityOut); return new ResultUtil<CommodityOut>().setData(commodityOut); }
@RequestMapping(value = "/buy", method = RequestMethod.GET) @ApiOperation(value = "购买单个商品") public Result<Commodity> buy(@RequestParam String id,@RequestParam float number){ Commodity commodity = iCommodityService.getById(id); if(commodity == null) { return ResultUtil.error("商品不存在"); } User currUser = securityUtil.getCurrUser(); double oldNumber = 0.0; double outNumber = number; Commodity oldAssetsType = iCommodityService.getById(id); if(oldAssetsType != null){ // newNumber 出库后还有的数量 = 仓库原本还有的数量 - 出库单的出库数量 + 原有出库单的出库数量 Double newNumber = Double.parseDouble(oldAssetsType.getExistingNumber()) - outNumber + oldNumber; if(newNumber >= 0){ oldAssetsType.setExistingNumber(newNumber + ""); iCommodityService.saveOrUpdate(oldAssetsType); }else{ return ResultUtil.error("手慢啦!库存不足!"); } } CommodityOut out = new CommodityOut(); out.setAssetId(commodity.getId()); out.setAssetName(commodity.getAssetName()); out.setRecipientsId(currUser.getId()); out.setRecipients(currUser.getNickname()); out.setNature(commodity.getNature()); out.setModel(commodity.getModel()); out.setUnitPrice(commodity.getUnitPrice()); out.setNumber(number + ""); out.setRemarks("买家主动购买"); iCommodityOutService.saveOrUpdate(out); return new ResultUtil<Commodity>().setData(iCommodityService.getById(id)); }
下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。