• Java毕设项目——智能仓储系统(java+SSM+Maven+Mysql+Jsp)


    文末获取源码 

    开发语言: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数据库开发,充分保证了系统稳定性、完整性。

    智能仓储系统的设计与实现的设计思想如下:

    1. 操作简单方便、系统界面安全良好、简单明了的页面布局、方便查询相关信息。
    2. 即时可见:对智能仓储系统信息的处理将立马在对应地点可以查询到,从而实现“即时发布、即时见效”的系统功能。

    4、系统体系结构 

    智能仓储系统的结构图 

    登录系统结构图,如图 

    智能仓储系统结构图,如图 

    三、系统详细设计 

    管理员功能模块

    管理员登录,通过填写用户名、密码等信息,输入完成后选择登录即可进入智能仓储系统 ,如图

    智能仓储系统 ,在智能仓储系统可以查看个人中心、公告信息管理、员工管理、供应商管理、商品分类管理、供应商货物管理、货物采购管理、商品信息管理、商品入库管理、商品出库管理、在线沟通管理、货物盘点管理等内容,如图 

    员工管理

    通过填写员工工号、密码、员工姓名、性别、头像、手机、邮箱等信息进行查看、修改、删除操作,如图 

    供应商管理

    在供应商管理页面可以查看供应商账号、密码、供应商名称、图片、联系人、联系电话、联系地址等信息进行修改、删除、查看,如图 

    商品分类管理

    在商品分类管理页面可以查看分类等信息进行查看、修改、删除,如图 

    商品信息管理

    在商品信息管理页面可以查看商品名称、分类、图片、数量、品牌、规格、进价、售价等信息进行查看、修改、删除,如图 

    货物盘点管理

    在货物盘点管理页面可以查看商品名称、盘点月份、数量、盘点数量、差异数量、差异说明、盘点日期等信息进行查看、修改、删除,如图 

    商品入库管理

    在商品入库管理页面可以查看商品名称、分类、品牌、规格、数量、进价、总金额、备注、登记日期、员工工号、员工姓名等信息进行查看、修改、删除,如图 

    商品出库管理

    在商品出库管理页面可以查看商品名称、分类、品牌、规格、数量、售价、总金额、备注、登记日期、员工工号、员工姓名等信息进行查看、修改、删除,如图 

    员工功能模块

    公告信息管理,在公告信息管理页面通过填写公告标题、图片、内容、发布日期等信息进行查看、修改、删除如图 

    商品信息管理

    在商品信息管理页面可以查看商品名称、分类、图片、数量、品牌、规格、进价、售价等信息进行查看、修改、删除,如图 

    商品出库管理

    在商品出库管理页面可以查看商品名称、分类、品牌、规格、数量、售价、总金额、备注、登记日期、员工工号、员工姓名等信息进行查看、修改、删除,如图 

    商品入库管理

    在商品入库管理页面可以查看商品名称、分类、品牌、规格、数量、进价、总金额、备注、登记日期、员工工号、员工姓名等信息进行查看、修改、删除,如图 

    供应商功能模块

    货物采购管理

    在货物采购管理页面通过填写商品名称、分类、图片、规格、单价、数量、采购金额、供应商账号、供应商名称、采购日期、员工工号、员工姓名等信息进行查看、修改、删除如图

    在线沟通管理

    在在线沟通管理页面可以查看标题、沟通内容、沟通时间、员工工号、员工姓名、供应商账号、供应商名称、是否审核、审核回复等信息进行查看、修改、删除,如图

    四、部分核心代码

    上传文件

    1. @RequestMapping("/upload")
    2. public R upload(@RequestParam("file") MultipartFile file, String type,HttpServletRequest request) throws Exception {
    3. if (file.isEmpty()) {
    4. throw new EIException("上传文件不能为空");
    5. }
    6. String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
    7. String fileName = new Date().getTime()+"."+fileExt;
    8. File dest = new File(request.getSession().getServletContext().getRealPath("/upload")+"/"+fileName);
    9. file.transferTo(dest);
    10. if(StringUtils.isNotBlank(type) && type.equals("1")) {
    11. ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
    12. if(configEntity==null) {
    13. configEntity = new ConfigEntity();
    14. configEntity.setName("faceFile");
    15. configEntity.setValue(fileName);
    16. } else {
    17. configEntity.setValue(fileName);
    18. }
    19. configService.insertOrUpdate(configEntity);
    20. }
    21. return R.ok().put("file", fileName);
    22. }

     商品出库

    1. /**
    2. * 商品出库
    3. * 后端接口
    4. * @author
    5. * @email
    6. * @date 2021-02-22 14:49:31
    7. */
    8. @RestController
    9. @RequestMapping("/shangpinchuku")
    10. public class ShangpinchukuController {
    11. @Autowired
    12. private ShangpinchukuService shangpinchukuService;
    13. /**
    14. * 后端列表
    15. */
    16. @RequestMapping("/page")
    17. public R page(@RequestParam Map<String, Object> params,ShangpinchukuEntity shangpinchuku, HttpServletRequest request){
    18. String tableName = request.getSession().getAttribute("tableName").toString();
    19. if(tableName.equals("yuangong")) {
    20. shangpinchuku.setYuangonggonghao((String)request.getSession().getAttribute("username"));
    21. }
    22. EntityWrapper<ShangpinchukuEntity> ew = new EntityWrapper<ShangpinchukuEntity>();
    23. PageUtils page = shangpinchukuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, shangpinchuku), params), params));
    24. request.setAttribute("data", page);
    25. return R.ok().put("data", page);
    26. }
    27. /**
    28. * 前端列表
    29. */
    30. @RequestMapping("/list")
    31. public R list(@RequestParam Map<String, Object> params,ShangpinchukuEntity shangpinchuku, HttpServletRequest request){
    32. EntityWrapper<ShangpinchukuEntity> ew = new EntityWrapper<ShangpinchukuEntity>();
    33. PageUtils page = shangpinchukuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, shangpinchuku), params), params));
    34. request.setAttribute("data", page);
    35. return R.ok().put("data", page);
    36. }
    37. /**
    38. * 列表
    39. */
    40. @RequestMapping("/lists")
    41. public R list( ShangpinchukuEntity shangpinchuku){
    42. EntityWrapper<ShangpinchukuEntity> ew = new EntityWrapper<ShangpinchukuEntity>();
    43. ew.allEq(MPUtil.allEQMapPre( shangpinchuku, "shangpinchuku"));
    44. return R.ok().put("data", shangpinchukuService.selectListView(ew));
    45. }
    46. /**
    47. * 查询
    48. */
    49. @RequestMapping("/query")
    50. public R query(ShangpinchukuEntity shangpinchuku){
    51. EntityWrapper< ShangpinchukuEntity> ew = new EntityWrapper< ShangpinchukuEntity>();
    52. ew.allEq(MPUtil.allEQMapPre( shangpinchuku, "shangpinchuku"));
    53. ShangpinchukuView shangpinchukuView = shangpinchukuService.selectView(ew);
    54. return R.ok("查询商品出库成功").put("data", shangpinchukuView);
    55. }
    56. /**
    57. * 后端详情
    58. */
    59. @RequestMapping("/info/{id}")
    60. public R info(@PathVariable("id") Long id){
    61. ShangpinchukuEntity shangpinchuku = shangpinchukuService.selectById(id);
    62. return R.ok().put("data", shangpinchuku);
    63. }
    64. /**
    65. * 前端详情
    66. */
    67. @RequestMapping("/detail/{id}")
    68. public R detail(@PathVariable("id") Long id){
    69. ShangpinchukuEntity shangpinchuku = shangpinchukuService.selectById(id);
    70. return R.ok().put("data", shangpinchuku);
    71. }
    72. /**
    73. * 后端保存
    74. */
    75. @RequestMapping("/save")
    76. public R save(@RequestBody ShangpinchukuEntity shangpinchuku, HttpServletRequest request){
    77. shangpinchuku.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    78. //ValidatorUtils.validateEntity(shangpinchuku);
    79. shangpinchukuService.insert(shangpinchuku);
    80. return R.ok();
    81. }
    82. /**
    83. * 前端保存
    84. */
    85. @RequestMapping("/add")
    86. public R add(@RequestBody ShangpinchukuEntity shangpinchuku, HttpServletRequest request){
    87. shangpinchuku.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    88. //ValidatorUtils.validateEntity(shangpinchuku);
    89. shangpinchukuService.insert(shangpinchuku);
    90. return R.ok();
    91. }
    92. /**
    93. * 修改
    94. */
    95. @RequestMapping("/update")
    96. public R update(@RequestBody ShangpinchukuEntity shangpinchuku, HttpServletRequest request){
    97. //ValidatorUtils.validateEntity(shangpinchuku);
    98. shangpinchukuService.updateById(shangpinchuku);//全部更新
    99. return R.ok();
    100. }
    101. /**
    102. * 删除
    103. */
    104. @RequestMapping("/delete")
    105. public R delete(@RequestBody Long[] ids){
    106. shangpinchukuService.deleteBatchIds(Arrays.asList(ids));
    107. return R.ok();
    108. }
    109. /**
    110. * 提醒接口
    111. */
    112. @RequestMapping("/remind/{columnName}/{type}")
    113. public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
    114. @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
    115. map.put("column", columnName);
    116. map.put("type", type);
    117. if(type.equals("2")) {
    118. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    119. Calendar c = Calendar.getInstance();
    120. Date remindStartDate = null;
    121. Date remindEndDate = null;
    122. if(map.get("remindstart")!=null) {
    123. Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
    124. c.setTime(new Date());
    125. c.add(Calendar.DAY_OF_MONTH,remindStart);
    126. remindStartDate = c.getTime();
    127. map.put("remindstart", sdf.format(remindStartDate));
    128. }
    129. if(map.get("remindend")!=null) {
    130. Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
    131. c.setTime(new Date());
    132. c.add(Calendar.DAY_OF_MONTH,remindEnd);
    133. remindEndDate = c.getTime();
    134. map.put("remindend", sdf.format(remindEndDate));
    135. }
    136. }
    137. Wrapper<ShangpinchukuEntity> wrapper = new EntityWrapper<ShangpinchukuEntity>();
    138. if(map.get("remindstart")!=null) {
    139. wrapper.ge(columnName, map.get("remindstart"));
    140. }
    141. if(map.get("remindend")!=null) {
    142. wrapper.le(columnName, map.get("remindend"));
    143. }
    144. String tableName = request.getSession().getAttribute("tableName").toString();
    145. if(tableName.equals("yuangong")) {
    146. wrapper.eq("yuangonggonghao", (String)request.getSession().getAttribute("username"));
    147. }
    148. int count = shangpinchukuService.selectCount(wrapper);
    149. return R.ok().put("count", count);
    150. }
    151. }

    员工登录

    1. @IgnoreAuth
    2. @RequestMapping(value = "/login")
    3. public R login(String username, String password, String captcha, HttpServletRequest request) {
    4. YuangongEntity user = yuangongService.selectOne(new EntityWrapper<YuangongEntity>().eq("yuangonggonghao", username));
    5. if(user==null || !user.getMima().equals(password)) {
    6. return R.error("账号或密码不正确");
    7. }
    8. String token = tokenService.generateToken(user.getId(), username,"yuangong", "员工" );
    9. return R.ok().put("token", token);
    10. }

  • 相关阅读:
    在同事的代码中学习-责任链模式
    认识.NET Aspire:高效构建云原生应用的利器
    抖音商流量怎么提升|成都聚华祥
    网站上线步骤
    mybatis中使用@Column(name = “`group`“)失效
    linux 开机遇见unmount and run xfs_repair
    VVC中图块划分结果在图像上显示(中间有一段没写完)
    LeetCode 第320场周赛
    详解FreeRTOS:FreeRTOS任务调度器开启过程源码分析(进阶篇—5)
    maxwell源码编译安装部署
  • 原文地址:https://blog.csdn.net/m0_49113107/article/details/126835231