Java毕设项目——高校物资采购管理系统(java+SSM+Maven+Mysql+Jsp)

一、前言介绍 

随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,高校物资采购管理系统就是信息时代变革中的产物之一。

任何系统都要遵循系统设计的基本流程,本系统也不例外,同样需要经过市场进行调研,论文需求进行分析,概要设计,系统详细设计,测试和编码等步骤,设计并实现了高校物资采购管理系统。系统选用B/S模式,应用java开发语言, MySQL为后台数据库。系统主要包括个人中心,供应商管理,学院管理,公告信息管理,采购信息管理,采购信息管理,招标信息管理,投标信息管理,中标通知管理等功能模块。

本文首先介绍了高校物资采购管理系统的技术发展背景与发展现状,然后遵循软件常规开发流程,首先针对系统选取适用的语言和开发平台,根据需求分析制定模块并设计数据库结构,再根据系统总体功能模块的设计绘制系统的功能模块图,流程图以及E/R图。然后,设计框架并根据设计的框架编写代码以实现系统的各个功能模块。最后,对初步完成的系统进行测试,对功能、单元和性能进行测试。测试结果表明,该系统能够实现所需的功能,运行状况尚可并无明显缺点。

二、功能需求分析 

系统功能需求分析是通过软件开发者在参与市场调研,与管理者及用户交流后经过详细缜密的思考,再讨论研究后得出的初步系统开发所需实现功能。这是开发系统的开始,也是相当关键的一步,如果不在这个阶段制定系统所需模块,日后会带来不必要的麻烦。因此,必须严肃认真,全身心投入去做好这个步骤。

本系统采用从上往下的步骤开发,基本功能如下:

本课题要求实现一套高校物资采购管理系统,系统主要包括(管理员,供应商和学院)三个模块等功能。

(1)管理员用例图如下所示:

(2)供应商用例图如下所示:

(3)学院用例图如下所示:

系统设计主要功能

通过市场调研及咨询研究,了解了用户及管理者的使用需求,于是制定了管理员,供应商和学院等模块。功能结构图如下所示: 

三、系统实现 

系统进行登录,进入系统前在登录页面根据要求填写用户名和密码,选择角色等信息,点击登录进行登录操作,如图

管理员功能模块

管理员登录系统后,可以对个人中心,供应商管理,学院管理,公告信息管理,采购信息管理,采购信息管理,招标信息管理,投标信息管理,中标通知管理进行相应的操作管理,如图 

供应商管理

在供应商管理页面可以对供应编号,供应名称,供应地址,联系电话等内容进行查看,修改和删除等操作,如图 

学院管理

在学院管理页面可以对学院编号,学院名称,学院地址,联系电话,邮箱等内容进行查看,修改和删除等操作,如图 

公告信息管理

在公告信息管理页面可以对标题,发布时间等内容进行查看,修改和删除等操作,如图 

采购信息管理

在采购信息管理页面可以对采购单号,商品名称,规格,数量,商品描述,采购日期,学院编号,学院名称,是否审核,审核回复等内容进行审核,招标,查看和删除操作,如图

招标信息管理

在招标信息管理页面可以对招标编号,商品名称,规格,数量,商品描述,招标时间,招标状态等内容进行查看,修改和删除等操作;如图 

投标信息管理

在投标信息管理页面可以对投标编号,商品名称,规格,报价,投标说明,投标时间,供应编号,供应名称,联系电话,是否审核,审核回复等内容进行审核,中标通知,查看和删除等操作;如图 

中标通知管理

在中标通知管理页面可以对投标编号,商品名称,规格,报价,中标时间,通知内容,供应编号,供应名称等内容进行查看,修改和删除等操作;如图 

供应商功能模块

供应商登录进入系统可以对个人中心,公告信息管理,招标信息管理,投标信息管理,中标通知管理等功能进行相应操作,如图 

公告信息管理

在公告信息管理页面可以对标题,发布时间等内容进行查看操作,如图 

招标信息管理

在招标信息管理页面可以对招标编号,商品名称,规格,数量,商品描述,招标时间,招标状态等内容进行投标和查看等操作;如图 

投标信息管理

在投标信息管理页面可以对投标编号,商品名称,规格,报价,投标说明,投标时间,供应编号,供应名称,联系电话,是否审核,审核回复等内容进行查看,修改和删除等操作;如图

中标通知管理

在中标通知管理页面可以对投标编号,商品名称,规格,报价,中标时间,通知内容,供应编号,供应名称等内容进行查看等操作;如图

学院功能模块

学院登录进入系统可以对个人中心,公告信息管理,采购信息管理等功能进行相应操作,如图

公告信息管理

在公告信息管理页面可以对标题,发布时间等内容进行查看操作,如图 

采购信息管理

在采购信息管理页面可以对采购单号,商品名称,规格,数量,商品描述,采购日期,学院编号,学院名称,是否审核,审核回复等内容进行查看,修改和删除操作,如图 

四、部分核心代码

采购信息

/**
 * 采购信息
 * 后端接口
 * @author 
 * @email 
 * @date 2022-04-06 11:02:20
 */
@RestController
@RequestMapping("/caigouxinxi")
public class CaigouxinxiController {
    @Autowired
    private CaigouxinxiService caigouxinxiService;
 
 
 
    
 
 
    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,CaigouxinxiEntity caigouxinxi, 
		HttpServletRequest request){
 
		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("xueyuan")) {
			caigouxinxi.setXueyuanbianhao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<CaigouxinxiEntity> ew = new EntityWrapper<CaigouxinxiEntity>();
    	PageUtils page = caigouxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, caigouxinxi), params), params));
		request.setAttribute("data", page);
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,CaigouxinxiEntity caigouxinxi, 
		HttpServletRequest request){
        EntityWrapper<CaigouxinxiEntity> ew = new EntityWrapper<CaigouxinxiEntity>();
    	PageUtils page = caigouxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, caigouxinxi), params), params));
		request.setAttribute("data", page);
        return R.ok().put("data", page);
    }
 
	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( CaigouxinxiEntity caigouxinxi){
       	EntityWrapper<CaigouxinxiEntity> ew = new EntityWrapper<CaigouxinxiEntity>();
      	ew.allEq(MPUtil.allEQMapPre( caigouxinxi, "caigouxinxi")); 
        return R.ok().put("data", caigouxinxiService.selectListView(ew));
    }
 
	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(CaigouxinxiEntity caigouxinxi){
        EntityWrapper< CaigouxinxiEntity> ew = new EntityWrapper< CaigouxinxiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( caigouxinxi, "caigouxinxi")); 
		CaigouxinxiView caigouxinxiView =  caigouxinxiService.selectView(ew);
		return R.ok("查询采购信息成功").put("data", caigouxinxiView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        CaigouxinxiEntity caigouxinxi = caigouxinxiService.selectById(id);
        return R.ok().put("data", caigouxinxi);
    }
 
    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        CaigouxinxiEntity caigouxinxi = caigouxinxiService.selectById(id);
        return R.ok().put("data", caigouxinxi);
    }
    
 
 
 
    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody CaigouxinxiEntity caigouxinxi, HttpServletRequest request){
    	caigouxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(caigouxinxi);
 
        caigouxinxiService.insert(caigouxinxi);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody CaigouxinxiEntity caigouxinxi, HttpServletRequest request){
    	caigouxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(caigouxinxi);
 
        caigouxinxiService.insert(caigouxinxi);
        return R.ok();
    }
 
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody CaigouxinxiEntity caigouxinxi, HttpServletRequest request){
        //ValidatorUtils.validateEntity(caigouxinxi);
        caigouxinxiService.updateById(caigouxinxi);//全部更新
        return R.ok();
    }
    
 
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        caigouxinxiService.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<CaigouxinxiEntity> wrapper = new EntityWrapper<CaigouxinxiEntity>();
		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("xueyuan")) {
			wrapper.eq("xueyuanbianhao", (String)request.getSession().getAttribute("username"));
		}
 
		int count = caigouxinxiService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	
	
 
 
 
 
 
}

 上传文件

@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);
		/**
		* 如果使用idea或者eclipse重启项目,发现之前上传的图片或者文件丢失,将下面一行代码注释打开
		* 请将以下的"D:\\ssmpiv99\\src\\main\\webapp\\upload"替换成你本地项目的upload路径,
		* 并且项目路径不能存在中文、空格等特殊字符
		*/
		//FileUtils.copyFile(dest, new File("D:\\ssmpiv99\\src\\main\\webapp\\upload"+"/"+fileName)); /**修改了路径以后请将该行最前面的//注释去掉**/
		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);
	}

供应商注册

@IgnoreAuth
    @RequestMapping("/register")
    public R register(@RequestBody GongyingshangEntity gongyingshang){
    	//ValidatorUtils.validateEntity(gongyingshang);
    	GongyingshangEntity user = gongyingshangService.selectOne(new EntityWrapper<GongyingshangEntity>().eq("gongyingbianhao", gongyingshang.getGongyingbianhao()));
		if(user!=null) {
			return R.error("注册用户已存在");
		}
		Long uId = new Date().getTime();
		gongyingshang.setId(uId);
        gongyingshangService.insert(gongyingshang);
        return R.ok();
    }

 

此源码非开源,若需要此源码可扫码添加微信或者qq:2214904953进行咨询!

2600多套项目欢迎咨询

  • 29
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值