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

news/2024/7/2 23:12:44

文末获取源码 

开发语言: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、系统体系结构 

智能仓储系统的结构图 

登录系统结构图,如图 

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

三、系统详细设计 

管理员功能模块

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

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

员工管理

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

供应商管理

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

商品分类管理

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

商品信息管理

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

货物盘点管理

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

商品入库管理

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

商品出库管理

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

员工功能模块

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

商品信息管理

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

商品出库管理

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

商品入库管理

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

供应商功能模块

货物采购管理

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

在线沟通管理

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

四、部分核心代码

上传文件

@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 2021-02-22 14:49:31
 */
@RestController
@RequestMapping("/shangpinchuku")
public class ShangpinchukuController {
    @Autowired
    private 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);
	}
	


http://lihuaxi.xjx100.cn/news/3643.html

相关文章

计算机毕业设计Java演出票在线预定网站系统(源码+系统+mysql数据库+Lw文档)

计算机毕业设计Java演出票在线预定网站系统&#xff08;源码系统mysql数据库Lw文档&#xff09; 计算机毕业设计Java演出票在线预定网站系统&#xff08;源码系统mysql数据库Lw文档&#xff09;本源码技术栈&#xff1a; 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Ja…

经验分享:产品经理面试的5大技巧

​感谢Andy 老师给这个机会给大家分享一下我的一些面试心得&#xff0c;做了一个简单的总结给大家说一下。 今天的分享内容一共有6方面&#xff1a; 1、个人职业的总结 2、面试前学习的内容 3、我们如何去寻找面试机会 4、我们该如何准备面试 5、面试过程中遇到的常见问题…

postgresSQL多种字符串分割及查询汇总

目录 表及数据准备 SPLIT_PART函数应用及说明 string_to_array函数应用及说明 基于指定规则查询该列所有 按需分割后产生的字符串单独判断 按需分割后产生的字符串及其它列混合查询 以按需分割查询为条件查询其它列 array_length函数应用及说明 表及数据准备 测试表 …

艾美捷Abnova MYOC (人)抗体对说明书

MYOC 编码蛋白质肌纤蛋白&#xff0c;据信它在细胞骨架功能中起作用。MYOC 在包括小梁网在内的许多眼组织中表达&#xff0c;并被揭示为小梁网糖皮质激素诱导反应蛋白 (TIGR)。小梁网是调节眼压所必需的特殊眼组织&#xff0c;MYOC 的突变已被确定为遗传性青少年型开角型青光眼…

使用Softing为西门子工业边缘开发的edgePlug软件简化了设备与应用程序的连接

一 为西门子工业边缘应用轻松提供控制器数据 作为西门子工业边缘市场的一部分&#xff0c;Softing edgePlug软件产品通过西门子工业边缘&#xff08;一个由边缘设备、应用程序和设备管理组成的开放、即用型边缘计算平台&#xff09;将西门子PLC连接到应用程序。 这意味着&…

c语言基础学习笔记(三):while循环

文章目录while循环四位数以下判断数的位数程序示例while循环数位数的算法do-while循环do-while循环实现数位数计算 log2log_2log2​X 的程序示例倒计时循环程序示例猜数游戏程序示例while循环 四位数以下判断数的位数程序示例 人可以一眼看出这是几位数&#xff0c;但计算机不…

Linux-shell常用运维指令

一.常用命令简介&#xff1a; 1.常看程序运行进程 ps -ef |grep javaps命令将某个进程显示出来 grep命令是查找 中间的**|**是管道命令 是指ps命令与grep同时执行 ps是LINUX下最常用的也是非常强大的进程查看命令 grep命令是查找&#xff0c;是一种强大的文本搜索工具 字…

直流有刷电机开环调速基于STM32F302R8+X-NUCLEO-IHM07M1(一)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、STM32F302R8X-NUCLEO-IHM07M1直流电机的开环调速1.1.功能需求1.2.硬件设计1.3.软件设计1.3.1.底层配置1.3.2.应用层开发1.4.实验验证总结前言 主控板STM32F…