基于Java+SpringBoot+vue+elementui药品商城采购系统详细设计实现《下》

189 阅读5分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第10天,点击查看活动详情

四、功能截图: 

4.1 用户登录注册:

用户注册,在用户注册列表页面通过填写用户名、用户密码、用户姓名、联系方式等资料完成用户注册,关键实现:体育用品销售商品系统系统,页面设计主要是在首页头部引入common以及jquery等公共的js和css样式布局文件,通过recommend index-pv2  DIV样式设计头部几个菜单栏的显示。用户点击其中一个div触发点击时间、页面就加载框架的布局、调用提前写好的.index-pv1 .animation-box:hover CSS文件等来渲染整个前端页面、用户登录注册,在用户注册页面通过填写账号、密码、姓名、手机、等信息用户注册,注册是用户输入input注册框之后点击确定事件(onsubmit)按钮、提交的时候绑定函数、书写函数(获取用户输入的数据<获取数据时需要在指定位置定义一个id>)、然后对form表单的数据进行判断、进行数据合法(form表单提交)、若数据非法(给出错误提示信息弹窗button,不让表单提交)

4.2 用户前端首页:

医院药品管理系统,在系统的首页可以查看首页、药品信息、药品资讯、个人中心、后台管理、购物车、在线客服等资料进行详细操作

首页模块:

药品信息模块:

药品信息,在药品列表页面中可以查看药品名称、药品种类、图片信息、规格信息、厂家信息、有效日期、数量、药品价格、点击次数、药品详情等资料

药品资讯模块:

 

个人中心模块:

 

购物车模块:

在线客服模块: 

4.3 用户后端管理:

个人中心管理:

4.4 供应商后端管理:

供应商管理:

药品信息管理:

4.5 管理员后端管理:

管理员登录进入系统之后,就可以对所有的信息进行查看,可以查看到首页、个人中心、用户管理、员工管理、供应商管理、药品种类管理、药品信息管理、药品入库管理、药品出库管理、药品采购管理、系统管理、订单管理等

用户模块管理:

供应商管理:

药品类型管理:

药品信息管理:

药品出入库管理:

药品采购管理:

药品资讯管理:

系统设置管理:

药品订单管理:

五、代码实现:

5.1 文件上传模块:

/**
	 * 上传文件
	 */
	@Async
	@RequestMapping("/upload")
	public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {
		if (file.isEmpty()) {
			throw new EIException("上传文件不能为空");
		}
		String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
		File upload = new File("D:/work/");
		if(!upload.exists()) {
			upload.mkdirs();
		}
		String fileName = new Date().getTime()+"."+fileExt;
		File dest = new File(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);
	}

5.2 药品采购模块:



/**
 * 药品采购
 * 后端接口
 * @author 
 * @email 
 * @date 2022-03-28 20:09:08
 */
@RestController
@RequestMapping("/yaopincaigou")
public class YaopincaigouController {
    @Autowired
    private YaopincaigouService yaopincaigouService;
    

    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,YaopincaigouEntity yaopincaigou,
		HttpServletRequest request){
		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("yuangong")) {
			yaopincaigou.setYuangonggonghao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<YaopincaigouEntity> ew = new EntityWrapper<YaopincaigouEntity>();
		PageUtils page = yaopincaigouService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yaopincaigou), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,YaopincaigouEntity yaopincaigou, HttpServletRequest request){
        EntityWrapper<YaopincaigouEntity> ew = new EntityWrapper<YaopincaigouEntity>();
		PageUtils page = yaopincaigouService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yaopincaigou), params), params));
        return R.ok().put("data", page);
    }

/**
     * 查询
     */
    @RequestMapping("/query")
    public R query(YaopincaigouEntity yaopincaigou){
        EntityWrapper< YaopincaigouEntity> ew = new EntityWrapper< YaopincaigouEntity>();
 		ew.allEq(MPUtil.allEQMapPre( yaopincaigou, "yaopincaigou")); 
		YaopincaigouView yaopincaigouView =  yaopincaigouService.selectView(ew);
		return R.ok("查询药品采购成功").put("data", yaopincaigouView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        YaopincaigouEntity yaopincaigou = yaopincaigouService.selectById(id);
        return R.ok().put("data", yaopincaigou);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        YaopincaigouEntity yaopincaigou = yaopincaigouService.selectById(id);
        return R.ok().put("data", yaopincaigou);
    }
   

    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody YaopincaigouEntity yaopincaigou, HttpServletRequest request){
    	yaopincaigou.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(yaopincaigou);
        yaopincaigouService.insert(yaopincaigou);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody YaopincaigouEntity yaopincaigou, HttpServletRequest request){
        //ValidatorUtils.validateEntity(yaopincaigou);
        yaopincaigouService.updateById(yaopincaigou);//全部更新
        return R.ok();
    }
    
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        yaopincaigouService.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<YaopincaigouEntity> wrapper = new EntityWrapper<YaopincaigouEntity>();
		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 = yaopincaigouService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	

}

六、项目总结: 

      在设计医院药品管理系统的过程中还遇到了一些棘手的问题,那就是自己的英语水平还有待提高,很多关于网站技术开发的资料文献都是英文版的,关键词语以及技术性词汇不能很好的理解。只有在借助翻译软件的实时性翻译功能的辅助下才勉强看懂。显然英语水平的高低直接影响到系统的开发过程。还有一些错误信息、比如用户空指针异常、还有MYSQL5.7版本数据库版本5.5和5.7不一致的问题、会导致SQL语句无法正常运行、还要就是管理员用户名设置的时候,后台没有判断好、在输入错误用户密码的的时候还是可以登录。这样的错原则上是不能发生的,在返回代码检查的情况下发现是在管理员信息与数据库的DAO类代码里出现了错误,代码和数据库之间没有建立好连接。还有比如管理员添加用户的时候报java.lang.NullPointException、解决的方法:查看控制台打印信息、发现添加的时候未填写相关信息、报java.lang.NullPointException、通过断电调试发现、用户信息为空的数据项、在前端保存的时候、必须填写用户完整相关信息、或者数据库设置字段可以为空都可以解决。经过本次测试,我会更加的对代码和数据库的操作上更加细心,不再出现这种原则上的错误。

        通过这次医院药品管理系统的开发,我参考了很多相关系统的例子,取长补短,吸取了其他系统的长处,逐步对该系统进行了完善,但是该系统还是有很多的不足之处,有待以后进一步学习。实践证明,医院药品管理系统有着非常好的发展前景,经过测试运行,系统各项功能都十分完善,界面漂亮,使用方便,操作容易,在技术理论上已经成熟。