项目编号:BS-XCX-004
一,项目简介
在信息技术高速发展的今天,新知识、新技术层出不穷,计算机技术早已广泛的应用于各行各业之中,利用计算机的强大数据处理能力和辅助决策能力叫,实现行业管理的规范化、标准化、效率化。
管理信息系统(Management Information System,简称MIS〉是一个以人为主导,利用计算机软硬件技术以及网络通信技术,实现对信息的收集、传输、储存、更新。
目前,管理信息系统广泛采用WEB技术作为开发的主要技术。在经过多年的技术积累与更新,WEB技术已经从一种简单的信息浏览和信息交互平台发展为复杂的企业级应用。
目前宠物宠物医院一直以来都是使用传统的人工方式管理各种文件档案,对宠物诊疗等重要信息进行人工手写记录,工作效率低,且时间一长,将产生大量文件,这对于文件的查找、信息查询造成很多困难,存在着许多缺点。随着社区越来越多的家庭开始饲养宠物,宠物宠物医院管理方法落后的问题越来越明显,管理上面临的问题越来越突出。
为了能够方便宠物医院的管理,一套完善的管理机制是必不可少的,也是宠物医院提供良好服务质量的一个前提,而应用信息技术的现代化宠物宠物医院管理系统已成为宠物宠物医院运营必不可少的基础设施与技术支撑。
宠物宠物医院管理系统的应用,不仅可以实现将宠物宠物医院工作中的挂号业务、诊疗业务、收费业务、宠物住院业务、宠物美容业务等有机的结合起来;还可以通过建立宠物档案,帮助医生更好更及时的了解宠物病情,制定宠物治疗计划,满足宠物主人的治疗需求,同时宠物档案的建立也有利于宠物的防疫工作。除此之外,管理系统对用户权限划分,帮助宠物医院规范化工作流程,提高工作效率,全面提高宠物宠物医院的管理水平。
因此如何利用计算机技术实现宠物宠物医院信息化管理是一个值得研究的问题。基于这个背景,本组决定开发一套适合宠物宠物医院的信息管理系统。
本项目基于微信小程序开发实现了宠物医院管理系统的前端页面,基于Springboot+Mybatis实现了宠物医院管理系统的后台系统,采用前后端分离开发的模式来开发实现。功能齐全,操作简洁,技术性完整,页面简洁大方。其中后台管理模块主要包含有:
- 资料管理:个人资料管理、宠物资料管理、公告管理、医院资料管理、职工资料管理、住院资料管理、病历资料管理
- 预约管理:挂号预约、洗美预约、挂号预约、洗美预约
- 记录管理:诊断记录、洗美记录、支付记录
- 登陆、退出、个人信息修改、修改密码等功能
前端主要包含的功能模块有:
- 用户在线预约挂号等
- 查看医院公告信息
- 查看宠物病历信息、查看预约信息、查看我的消息、查看我的资料、查看宠物资料等
二,环境介绍
语言环境:Java: jdk1.8
数据库:Mysql: mysql5.7
应用服务器:Tomcat: tomcat8.5.31
开发工具:IDEA或eclipse
后台开发技术:Springboot+Mybatis+Mybatis-plus+Shiro
前端开发技术:微信小程序
三,系统展示
后端管理功能展示:
用户登陆
资料管理模块
预约管理相关模块
记录管理
个人资料管理
微信小程序前端
微信前端登陆
门诊预约
四,核心代码展示
package com.example.bus.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; /** * 业务管理的路由器 * @author ZNZ * */ @Controller @RequestMapping("/bus") public class BusinessController { /** * 跳转到客户管理 */ @RequestMapping("toCustomerManager") public String toCustomerManager() { return "business/customer/customerManager"; } /** * 跳转到供应商管理 */ @RequestMapping("toProviderManager") public String toProviderManager() { return "business/provider/providerManager"; } /** * 跳转到商品管理 */ @RequestMapping("toGoodsManager") public String toGoodsManager() { return "business/goods/goodsManager"; } /** * 跳转到进货管理 */ @RequestMapping("toInportManager") public String toInportManager() { return "business/inport/inportManager"; } /** * 跳转到退货查询管理 */ @RequestMapping("toOutportManager") public String toOutportManager() { return "business/outport/outportManager"; } /** * 跳转到宠物资料管理 * * @return */ @RequestMapping("toPetInfoManager") public String toPetInfoManager() { return "business/pet/petManager"; } }
package com.example.bus.controller; import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.example.bus.domain.Customer; import com.example.bus.service.CustomerService; import com.example.bus.vo.CustomerVo; import com.example.sys.common.DataGridView; import com.example.sys.common.ResultObj; @RestController @RequestMapping("/customer") public class CustomerController { @Autowired private CustomerService customerService; /** * 查询 */ @RequestMapping("loadAllCustomer") public DataGridView loadAllCustomer(CustomerVo customerVo) { IPage<Customer> page = new Page<>(customerVo.getPage(), customerVo.getLimit()); QueryWrapper<Customer> queryWrapper = new QueryWrapper<>(); queryWrapper.like(StringUtils.isNotBlank(customerVo.getCustomername()), "customername", customerVo.getCustomername()); queryWrapper.like(StringUtils.isNotBlank(customerVo.getPhone()), "phone", customerVo.getPhone()); queryWrapper.like(StringUtils.isNotBlank(customerVo.getConnectionperson()), "connectionperson", customerVo.getConnectionperson()); this.customerService.page(page, queryWrapper); return new DataGridView(page.getTotal(), page.getRecords()); } /** * 添加 */ @RequestMapping("addCustomer") public ResultObj addCustomer(CustomerVo customerVo) { try { this.customerService.save(customerVo); return ResultObj.ADD_SUCCESS; } catch (Exception e) { e.printStackTrace(); return ResultObj.ADD_ERROR; } } /** * 修改 */ @RequestMapping("updateCustomer") public ResultObj updateCustomer(CustomerVo customerVo) { try { this.customerService.updateById(customerVo); return ResultObj.UPDATE_SUCCESS; } catch (Exception e) { e.printStackTrace(); return ResultObj.UPDATE_ERROR; } } /** * 删除 */ @RequestMapping("deleteCustomer") public ResultObj deleteCustomer(Integer id) { try { this.customerService.removeById(id); return ResultObj.DELETE_SUCCESS; } catch (Exception e) { e.printStackTrace(); return ResultObj.DELETE_ERROR; } } /** * 批量删除 */ @RequestMapping("batchDeleteCustomer") public ResultObj batchDeleteCustomer(CustomerVo customerVo) { try { Collection<Serializable> idList = new ArrayList<Serializable>(); for (Integer id : customerVo.getIds()) { idList.add(id); } this.customerService.removeByIds(idList); return ResultObj.DELETE_SUCCESS; } catch (Exception e) { e.printStackTrace(); return ResultObj.DELETE_ERROR; } } }
package com.example.bus.controller; import java.util.List; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.example.bus.domain.Goods; import com.example.bus.domain.Provider; import com.example.bus.service.GoodsService; import com.example.bus.service.ProviderService; import com.example.bus.vo.GoodsVo; import com.example.sys.common.AppFileUtils; import com.example.sys.common.Constant; import com.example.sys.common.DataGridView; import com.example.sys.common.ResultObj; @RestController @RequestMapping("/goods") public class GoodsController { @Autowired private GoodsService goodsService; @Autowired private ProviderService providerService; /** * 查询 */ @RequestMapping("loadAllGoods") public DataGridView loadAllGoods(GoodsVo goodsVo) { IPage<Goods> page = new Page<>(goodsVo.getPage(), goodsVo.getLimit()); QueryWrapper<Goods> queryWrapper = new QueryWrapper<>(); queryWrapper.eq(goodsVo.getProviderid() != null && goodsVo.getProviderid() != 0, "providerid", goodsVo.getProviderid()); queryWrapper.like(StringUtils.isNotBlank(goodsVo.getGoodsname()), "goodsname", goodsVo.getGoodsname()); queryWrapper.like(StringUtils.isNotBlank(goodsVo.getProductcode()), "productcode", goodsVo.getProductcode()); queryWrapper.like(StringUtils.isNotBlank(goodsVo.getPromitcode()), "promitcode", goodsVo.getPromitcode()); queryWrapper.like(StringUtils.isNotBlank(goodsVo.getDescription()), "description", goodsVo.getDescription()); queryWrapper.like(StringUtils.isNotBlank(goodsVo.getSize()), "size", goodsVo.getSize()); this.goodsService.page(page, queryWrapper); List<Goods> records = page.getRecords(); for (Goods goods : records) { Provider provider = this.providerService.getById(goods.getProviderid()); if (null != provider) { goods.setProvidername(provider.getProvidername()); } } return new DataGridView(page.getTotal(), records); } /** * 添加 */ @RequestMapping("addGoods") public ResultObj addGoods(GoodsVo goodsVo) { try { if (goodsVo.getGoodsimg() != null && goodsVo.getGoodsimg().endsWith("_temp")) { String newName = AppFileUtils.renameFile(goodsVo.getGoodsimg()); goodsVo.setGoodsimg(newName); } this.goodsService.save(goodsVo); return ResultObj.ADD_SUCCESS; } catch (Exception e) { e.printStackTrace(); return ResultObj.ADD_ERROR; } } /** * 修改 */ @RequestMapping("updateGoods") public ResultObj updateGoods(GoodsVo goodsVo) { try { //说明是不默认图片 if (!(goodsVo.getGoodsimg() != null && goodsVo.getGoodsimg().equals(Constant.IMAGES_DEFAULTGOODSIMG_PNG))) { if (goodsVo.getGoodsimg().endsWith("_temp")) { String newName = AppFileUtils.renameFile(goodsVo.getGoodsimg()); goodsVo.setGoodsimg(newName); //删除原先的图片 String oldPath = this.goodsService.getById(goodsVo.getId()).getGoodsimg(); AppFileUtils.removeFileByPath(oldPath); } } this.goodsService.updateById(goodsVo); return ResultObj.UPDATE_SUCCESS; } catch (Exception e) { e.printStackTrace(); return ResultObj.UPDATE_ERROR; } } /** * 删除 */ @RequestMapping("deleteGoods") public ResultObj deleteGoods(Integer id, String goodsimg) { try { //删除原文件 AppFileUtils.removeFileByPath(goodsimg); this.goodsService.removeById(id); return ResultObj.DELETE_SUCCESS; } catch (Exception e) { e.printStackTrace(); return ResultObj.DELETE_ERROR; } } /** * 加载所有可用的供应商 */ @RequestMapping("loadAllGoodsForSelect") public DataGridView loadAllGoodsForSelect() { QueryWrapper<Goods> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("available", Constant.AVAILABLE_TRUE); List<Goods> list = this.goodsService.list(queryWrapper); for (Goods goods : list) { Provider provider = this.providerService.getById(goods.getProviderid()); if (null != provider) { goods.setProvidername(provider.getProvidername()); } } return new DataGridView(list); } /** * 根据供应商ID查询商品信息 */ @RequestMapping("loadGoodsByProviderId") public DataGridView loadGoodsByProviderId(Integer providerid) { QueryWrapper<Goods> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("available", Constant.AVAILABLE_TRUE); queryWrapper.eq(providerid != null, "providerid", providerid); List<Goods> list = this.goodsService.list(queryWrapper); for (Goods goods : list) { Provider provider = this.providerService.getById(goods.getProviderid()); if (null != provider) { goods.setProvidername(provider.getProvidername()); } } return new DataGridView(list); } }
package com.example.bus.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.example.bus.domain.Goods; import com.example.bus.domain.Inport; import com.example.bus.domain.Pet; import com.example.bus.domain.Provider; import com.example.bus.service.PetService; import com.example.bus.vo.PetVo; import com.example.bus.vo.PetVo; import com.example.sys.common.Constant; import com.example.sys.common.DataGridView; import com.example.sys.common.ResultObj; import com.example.sys.common.WebUtils; import com.example.sys.domain.User; import com.example.sys.service.UserService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.List; @RestController @RequestMapping("/pet") public class PetController { @Autowired private PetService petService; @Autowired private UserService userService; @RequestMapping("loadAllPet") public DataGridView loadAllPet(PetVo petVo) { IPage<Pet> page = new Page<>(petVo.getPage(), petVo.getLimit()); QueryWrapper<Pet> queryWrapper = new QueryWrapper<>(); queryWrapper.like(StringUtils.isNotBlank(petVo.getName()), "name", petVo.getName()); queryWrapper.eq(null != petVo.getPetType(), "type", null != petVo.getPetType()); this.petService.page(page, queryWrapper); List<Pet> records = page.getRecords(); for (Pet pet : records) { User owner = this.userService.getById(pet.getOwnerId()); StringBuilder builder = new StringBuilder(); String fullAddress = builder.append(pet.getProvince()).append(pet.getCity()) .append(pet.getCounty()).append(pet.getDetailAddress()).toString(); pet.setFullAddress(fullAddress); if (null != owner) { pet.setOwnerName(owner.getName()); pet.setOwnerSex(owner.getSex()); pet.setPhone(owner.getPhone()); } } return new DataGridView(page.getTotal(), records); } @RequestMapping("addPet") public ResultObj addPet(PetVo petVo) { try { this.petService.save(petVo); return ResultObj.ADD_SUCCESS; } catch (Exception e) { e.printStackTrace(); return ResultObj.ADD_ERROR; } } /** * 修改 */ @RequestMapping("updatePet") public ResultObj updatePet(PetVo petVo) { try { this.petService.updateById(petVo); return ResultObj.UPDATE_SUCCESS; } catch (Exception e) { e.printStackTrace(); return ResultObj.UPDATE_ERROR; } } /** * 删除 */ @RequestMapping("deletePet") public ResultObj deletePet(Integer id) { try { this.petService.removeById(id); return ResultObj.DELETE_SUCCESS; } catch (Exception e) { e.printStackTrace(); return ResultObj.DELETE_ERROR; } } /** * 批量删除 */ @RequestMapping("batchDeletePet") public ResultObj batchDeletePet(PetVo petVo) { try { Collection<Serializable> idList = new ArrayList<Serializable>(); for (Integer id : petVo.getIds()) { idList.add(id); } this.petService.removeByIds(idList); return ResultObj.DELETE_SUCCESS; } catch (Exception e) { e.printStackTrace(); return ResultObj.DELETE_ERROR; } } @RequestMapping("loadAllPetForSelect") public DataGridView loadAllPetForSelect() { QueryWrapper<Pet> queryWrapper = new QueryWrapper<>(); List<Pet> list = this.petService.list(queryWrapper); System.out.println(list); return new DataGridView(list); } @RequestMapping("loadAllPetByOwnerIdForSelect") public DataGridView loadAllPetByOwnerIdForSelect() { QueryWrapper<Pet> queryWrapper = new QueryWrapper<>(); User user = (User) WebUtils.getSession().getAttribute("user"); queryWrapper.eq("owner_id",user.getId()); List<Pet> list = this.petService.list(queryWrapper); System.out.println(list); return new DataGridView(list); } }
五,项目总结
随着经济的发展,人们生活水平不断地进步和提高,越来越多的家庭开始饲养宠物,与此同时,宠物的卫生、防疫、诊疗也得到了人们越来越多的关注,由此派生出的宠物宠物医院在发展上也越来越迅猛[l5]。
宠物宠物医院在欧美发达国家作为产业早已经形成了国民经济的一部分,由于欧美发达国家的信息化程度高,信息技术、各种研究成果较早的应用于各行各业,宠物宠物医院在管理上早已实现了信息化建设。
当前,信息化已成为全球发展的主题,世界各国对信息的需求快速增长,信息产品和信息服务广泛的应用于各个国家、地区、企业、单位、家庭、个人。
早在20世纪8O年代,发达国家就已经开始信息化建设的工作。目前,欧美发达国家早已为宠物建立了宠物电子档案,这对于宠物的防疫、卫生、安全等起到了重要的管理作用,同时各种新技术不断应用于宠物宠物医院的日常管理工作中,宠物宠物医院在管理上早己实现了规范化、标准化。
相对于欧美发达国家,我国信息化建设从20世纪90年代初开始,信息化程度还处于较低水平,且发展很不平衡,大部分宠物宠物医院的信息化建设还处于以划价收费为中心的信息管理系统,缺少其他业务的信息化管理,造成很多工作还停留在人工操作上,这就对当前宠物宠物医院的信息化管理造成了很多问题。
随着我国信息技术在宠物宠物医院行业应用程度的不断提高,东南沿海较发达城市已经实现了宠物宠物医院管理的信息化,但是并没有完全普遍,大部分欠发达地区,尤其是小型的社区宠物宠物医院,还是处于传统的管理方式。
虽然目前仍与欧美发达国家存在较大差距,但“十二五”规划,我国提出了信息化建设的“3521工程”,我国宠物宠物医院的信息化建设迎来了发展的好时机。
宠物宠物医院信息化建设的不断进行对宠物医疗卫生行业的发展具有重要的意义,既能提高宠物医院的服务质量,又能方便宠物医院的管理,更为重要的是对于保障宠物防疫、·卫生、安全具有重要意义。