java基于spingboot+vue公司单位药品采购招标系统

本文介绍了在国家医疗卫生改革背景下,设计并实现了一个基于SpringBoot和MySQL的药品招标采购系统,通过B/S架构提升工作效率,详细阐述了系统管理员、投标者等功能模块,以及系统的技术选型和关键模块的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文末获取资源,收藏关注不迷路

前言

随着国家医疗卫生制度改革的不断深化,集中招标采购已经成为医院药品采购工作的进展趋势。在没有采纳药品招标软件前,招标操作进程中传统的解决方式确实是医院将所需购买的药品清单按要求做成一份标书,发放至投标商,由人工进行评标,从厚厚的投标书中一一统计出招标结果。这些都是通过人工方式完成的,这种方式不仅操作繁琐、工作量大,而且容易显现过失。因此,做一个药品招标采购系统,提高医药招标的工作效率和工作质量。本设计就是借助计算机和互联网技术,对“药品招标采购系统”进行分析和设计。
通过该题目的分析和设计,使学生初步得到软件工程的训练,全面培养软件开发过程中的分析、设计、编码、测试及文档规范书写的能力,得到软件工程的综合训练,提高解决实际问题的能力。最终将整个设计和实现过程用规范设计说明书表述出来。

一、研究背景

在科技快速发展的今天,各个行业都在不断地跟上时代的潮流,利用科技的力量来提升自己的竞争力。药品招标采购系统自然也不例外,互联网技术的日益成熟,推动了药品招标采购系统的建立,从根本上改变了以往的传统管理模式;不但降低了服务管理的难度,还提高了管理的灵活性。
药品招标采购系统,其中最重要的部分是由管理人员组成的。系统首页,个人中心,竞标单位管理;对招标人、评标专家和供应商的管理;招标信息的管理,投标和评标的信息管理;中标者信息管理,药品信息管理,药品分类;药品采购管理,药品销售管理,信息版块管理,系统管理,投标人。系统主页,个人中心,招标信息的管理;投标资讯管理,评标资讯管理,投标人资讯管理。系统首页,个人中心,竞标信息的管理;招标投标信息的管理,中标信息的管理,药品采购的管理;医药营销,投标人。系统首页,个性化中心,投标信息管理,投标信息管理,投标信息管理,投标信息管理等等。在该系统中,管理员的作用是将各种信息进行安全、高效地保存和管理,同时还能对该系统进行管理、更新、维护等工作,在药物招标采购方面也具有相关的工作权限。这个个人化的平台着重强调了互动协作与管理的相互合作,充分调动了管理人员的创造力和积极性,对药品招标采购系统来说,是十分有益的。
本系统选择SpringBoot架构搭建,将该技术应用到管理体系中去。 MySQL是用于数据库的软件。该系统采取 B/S架构,面向 Web开发,并以 Tomcat为 WEB服务,并运用 Spring、 Mybatis等技术进行开发。

二、研究意义

在国家的发展过程中,人们的生活质量得到了很大的改善,而在物质条件得到极大改善的同时,也越来越重视自身的身体健康。医学与人们的日常生活密切相关,所以必须把信息技术引进到医学领域。随着资讯科技在医疗上的普及,医疗事业得到了极大的发展。信息化的医院也更加适应了社会的需求, HIS系统在各级医院的推广就是一种表现,而对药物的管理就是一种很大的手段。药品与病人有着紧密的关系,药品在医院中的流通,牵扯到药房、调剂科、病房等诸多方面。为达到这一目的,就必须在医药流通的每一个阶段,建立起与之相适应的系统,并对其进行有效的控制。
然而,当前的医疗卫生服务体系中,由于医疗卫生服务体系中大量的应用,使得医疗卫生服务体系中出现了一些问题。而目前,医疗的药物管理系统还处在初级的应用状态,主要应用的也就是数据的查询,增、删、改等最基础的工作。而不是在为有关人士作出决定时,为他们所需的资料进行分析。

三、主要使用技术

环境需要
1.运行环境:最好是java jdk 1.8,这是目前最稳定的JDK也是被使用最多的JDK版本。
2.IDE环境:IDEA,Eclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat7/Tomcat8/Tomcat9版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.数据库:MySql 5.7版本;
6.是否Maven项目:是;
技术栈
后端:Spring+SpringMVC+Mybatis+Springboot
前端:vue+CSS+JavaScript+jQuery+elementui

使用说明
使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
使用IDEA/Eclipse/MyEclipse导入项目,修改配置,运行项目;
将项目中applicationContext.xml配置文件中的数据库配置改为自己的配置,然后运行;
运行成功后,在浏览器中输入:http://localhost:8080/项目名

四、研究内容

将药品招标采购系统的应用分为三部分:系统管理员、投标者和投标者;四位评标员的权利子模组。
系统管理员可以实现的主要功能包括:系统主页,个人中心,竞标单位管理;对招标人、评标专家和供应商的管理;招标、投标和评标的信息管理;中标者信息管理,药品信息管理,药品分类;药品的采购管理,药品的销售管理,信息版块的管理,系统的管理等等。
招标人能够实现系统首页,个人中心,招标信息的管理;招标信息的管理,投标报价的管理,投标报价的管理等等。
投标人可以在系统的首页,个人中心,对投标信息进行管理;招标投标信息的管理,中标信息的管理,药品采购的管理,药品销售的管理等等。
评标专家能够实现系统首页,个人中心,投标信息管理;评标信息管理等。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、核心代码


package com.controller;


import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;

/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;

	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

六、文章目录

1系统概述 1
1.1 研究背景 1
1.2研究目的 1
1.3系统设计思想 1
2相关技术 3
2.1 MYSQL数据库 3
2.2 B/S结构 3
2.3 Spring Boot框架简介 4
2.4 VUE框架 4
3系统分析 5
3.1可行性分析 5
3.1.1技术可行性 5
3.1.2经济可行性 5
3.1.3操作可行性 5
3.2系统性能分析 6
3.2.1 系统安全性 6
3.2.2 数据完整性 6
3.3系统界面分析 6
3.4系统流程和逻辑 8
4系统概要设计 9
4.1概述 9
4.2系统结构 10
4.3.数据库设计 11
4.3.1数据库实体 11
4.3.2数据库设计表 13
5系统详细实现 17
5.1 管理员模块的实现 17
5.2用户模块的实现 19
6系统测试 21
6.1概念和意义 21
6.2特性 22
6.3重要性 22
6.4测试方法 23
6.5 功能测试 23
6.6可用性测试 24
6.7性能测试 24
6.8测试分析 24
6.9测试结果分析 25
结论 25
致谢语 26
参考文献 26

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wqq6310855

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值