文末获取源码
开发语言:Java
框架:SSM
技术:Jsp
JDK版本:JDK1.8
服务器:tomcat7
数据库:mysql 5.7/8.0
数据库工具:Navicat11
开发软件:eclipse/myeclipse/idea
Maven包:Maven3.3.9
浏览器:谷歌浏览器
一、前言介绍
目前许多人仍将传统的纸质工具作为信息管理的主要工具,而网络技术的应用只是起到辅助作用。在对网络工具的认知程度上,较为传统的office软件等仍是人们使用的主要工具,而相对全面且专业的智能仓储系统 的信息管理软件仍没有得到大多数人的了解或认可。本选题则旨在通过标签分类管理等方式,实现管理员;个人中心、公告信息管理、员工管理、供应商管理、商品分类管理、供应商货物管理、货物采购管理、商品信息管理、商品入库管理、商品出库管理、在线沟通管理、货物盘点管理,供应商;个人中心、供应商货物管理、货物采购管理、在线沟通管理,员工;个人中心、公告信息管理、供应商管理、供应商货物管理、货物采购管理、商品信息管理、商品入库管理、商品出库管理、在线沟通管理,等信息管理功能,从而达到对智能仓储系统信息的高效管理。
二、项目设计目标与原则
1、关于智能仓储系统 的基本要求
(1)功能要求:个人中心、公告信息管理、员工管理、供应商管理、商品分类管理、供应商货物管理、货物采购管理、商品信息管理、商品入库管理、商品出库管理、在线沟通管理、货物盘点管理等功能模块。
(2)性能:在不同操作系统上均能无差错实现在不同类型的用户登入相应界面后能不出差错、方便地进行预期操作。
(3)安全与保密要求:用户都必须通过注册、登录才能进入系统。
(4)环境要求:支持Windows系列、Vista系统等多种操作系统使用。
2、开发目标
智能仓储系统 的主要开发目标如下:
(1)实现管理系统信息关系的系统化、规范化和自动化;
(2)减少维护人员的工作量以及实现用户对信息的控制和管理;
(3)方便查询信息及管理信息等;
(4)通过网络操作,提高改善处理问题和操作人员工作的效率;
(5)考虑到用户多样性特点,要求界面和操作简便易懂。
3、设计原则
本智能仓储系统采用JSP技术,Mysql数据库开发,充分保证了系统稳定性、完整性。
智能仓储系统的设计与实现的设计思想如下:
操作简单方便、系统界面安全良好、简单明了的页面布局、方便查询相关信息。即时可见:对智能仓储系统信息的处理将立马在对应地点可以查询到,从而实现“即时发布、即时见效”的系统功能。
4、系统体系结构
智能仓储系统的结构图
登录系统结构图,如图
智能仓储系统结构图,如图
三、系统详细设计
管理员功能模块
管理员登录,通过填写用户名、密码等信息,输入完成后选择登录即可进入智能仓储系统 ,如图
智能仓储系统 ,在智能仓储系统可以查看个人中心、公告信息管理、员工管理、供应商管理、商品分类管理、供应商货物管理、货物采购管理、商品信息管理、商品入库管理、商品出库管理、在线沟通管理、货物盘点管理等内容,如图
员工管理
通过填写员工工号、密码、员工姓名、性别、头像、手机、邮箱等信息进行查看、修改、删除操作,如图
供应商管理
在供应商管理页面可以查看供应商账号、密码、供应商名称、图片、联系人、联系电话、联系地址等信息进行修改、删除、查看,如图
商品分类管理
在商品分类管理页面可以查看分类等信息进行查看、修改、删除,如图
商品信息管理
在商品信息管理页面可以查看商品名称、分类、图片、数量、品牌、规格、进价、售价等信息进行查看、修改、删除,如图
货物盘点管理
在货物盘点管理页面可以查看商品名称、盘点月份、数量、盘点数量、差异数量、差异说明、盘点日期等信息进行查看、修改、删除,如图
商品入库管理
在商品入库管理页面可以查看商品名称、分类、品牌、规格、数量、进价、总金额、备注、登记日期、员工工号、员工姓名等信息进行查看、修改、删除,如图
商品出库管理
在商品出库管理页面可以查看商品名称、分类、品牌、规格、数量、售价、总金额、备注、登记日期、员工工号、员工姓名等信息进行查看、修改、删除,如图
员工功能模块
公告信息管理,在公告信息管理页面通过填写公告标题、图片、内容、发布日期等信息进行查看、修改、删除如图
商品信息管理
在商品信息管理页面可以查看商品名称、分类、图片、数量、品牌、规格、进价、售价等信息进行查看、修改、删除,如图
商品出库管理
在商品出库管理页面可以查看商品名称、分类、品牌、规格、数量、售价、总金额、备注、登记日期、员工工号、员工姓名等信息进行查看、修改、删除,如图
商品入库管理
在商品入库管理页面可以查看商品名称、分类、品牌、规格、数量、进价、总金额、备注、登记日期、员工工号、员工姓名等信息进行查看、修改、删除,如图
供应商功能模块
货物采购管理
在货物采购管理页面通过填写商品名称、分类、图片、规格、单价、数量、采购金额、供应商账号、供应商名称、采购日期、员工工号、员工姓名等信息进行查看、修改、删除如图
在线沟通管理
在在线沟通管理页面可以查看标题、沟通内容、沟通时间、员工工号、员工姓名、供应商账号、供应商名称、是否审核、审核回复等信息进行查看、修改、删除,如图
四、部分核心代码
上传文件
@RequestMapping("/upload")public R upload(@RequestParam("file") MultipartFile file, String type,HttpServletRequest request) throws Exception {if (file.isEmpty()) {throw new EIException("上传文件不能为空");}String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);String fileName = new Date().getTime()+"."+fileExt;File dest = new File(request.getSession().getServletContext().getRealPath("/upload")+"/"+fileName);file.transferTo(dest);if(StringUtils.isNotBlank(type) && type.equals("1")) {ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));if(configEntity==null) {configEntity = new ConfigEntity();configEntity.setName("faceFile");configEntity.setValue(fileName);} else {configEntity.setValue(fileName);}configService.insertOrUpdate(configEntity);}return R.ok().put("file", fileName);}
商品出库
/*** 商品出库* 后端接口* @author * @email * @date -02-22 14:49:31*/@RestController@RequestMapping("/shangpinchuku")public class ShangpinchukuController {@Autowiredprivate ShangpinchukuService shangpinchukuService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,ShangpinchukuEntity shangpinchuku, HttpServletRequest request){String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("yuangong")) {shangpinchuku.setYuangonggonghao((String)request.getSession().getAttribute("username"));}EntityWrapper<ShangpinchukuEntity> ew = new EntityWrapper<ShangpinchukuEntity>();PageUtils page = shangpinchukuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, shangpinchuku), params), params));request.setAttribute("data", page);return R.ok().put("data", page);}/*** 前端列表*/@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,ShangpinchukuEntity shangpinchuku, HttpServletRequest request){EntityWrapper<ShangpinchukuEntity> ew = new EntityWrapper<ShangpinchukuEntity>();PageUtils page = shangpinchukuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, shangpinchuku), params), params));request.setAttribute("data", page);return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( ShangpinchukuEntity shangpinchuku){EntityWrapper<ShangpinchukuEntity> ew = new EntityWrapper<ShangpinchukuEntity>();ew.allEq(MPUtil.allEQMapPre( shangpinchuku, "shangpinchuku")); return R.ok().put("data", shangpinchukuService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(ShangpinchukuEntity shangpinchuku){EntityWrapper< ShangpinchukuEntity> ew = new EntityWrapper< ShangpinchukuEntity>();ew.allEq(MPUtil.allEQMapPre( shangpinchuku, "shangpinchuku")); ShangpinchukuView shangpinchukuView = shangpinchukuService.selectView(ew);return R.ok("查询商品出库成功").put("data", shangpinchukuView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){ShangpinchukuEntity shangpinchuku = shangpinchukuService.selectById(id);return R.ok().put("data", shangpinchuku);}/*** 前端详情*/@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){ShangpinchukuEntity shangpinchuku = shangpinchukuService.selectById(id);return R.ok().put("data", shangpinchuku);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody ShangpinchukuEntity shangpinchuku, HttpServletRequest request){shangpinchuku.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(shangpinchuku);shangpinchukuService.insert(shangpinchuku);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody ShangpinchukuEntity shangpinchuku, HttpServletRequest request){shangpinchuku.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(shangpinchuku);shangpinchukuService.insert(shangpinchuku);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody ShangpinchukuEntity shangpinchuku, HttpServletRequest request){//ValidatorUtils.validateEntity(shangpinchuku);shangpinchukuService.updateById(shangpinchuku);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){shangpinchukuService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 提醒接口*/@RequestMapping("/remind/{columnName}/{type}")public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if(map.get("remindstart")!=null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if(map.get("remindend")!=null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<ShangpinchukuEntity> wrapper = new EntityWrapper<ShangpinchukuEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("yuangong")) {wrapper.eq("yuangonggonghao", (String)request.getSession().getAttribute("username"));}int count = shangpinchukuService.selectCount(wrapper);return R.ok().put("count", count);}}
员工登录
@IgnoreAuth@RequestMapping(value = "/login")public R login(String username, String password, String captcha, HttpServletRequest request) {YuangongEntity user = yuangongService.selectOne(new EntityWrapper<YuangongEntity>().eq("yuangonggonghao", username));if(user==null || !user.getMima().equals(password)) {return R.error("账号或密码不正确");}String token = tokenService.generateToken(user.getId(), username,"yuangong", "员工" );return R.ok().put("token", token);}