一、项目简述
功能包括: 住院病人管理,住院病房管理,医生管理,药品管理,仪 器管理等等。
二、项目运行
环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
项目技术: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等。
后台角色操作service服务:
/**
* 后台角色操作service
*/
@Service
public class RoleService {
@Autowired
private RoleDao roleDao;
/**
* 角色添加/编辑
* @param role
* @return
*/
public Role save(Role role){
return roleDao.save(role);
}
/**
* 获取所有的角色列表
* @return
*/
public List<Role> findAll(){
return roleDao.findAll();
}
/**
* 获取不是医生或病人的其他角色
*/
public List<Role> findSome(){
return roleDao.findSome();
}
/**
* 分页按角色名称搜索角色列表
* @param role
* @param pageBean
* @return
*/
public PageBean<Role> findByName(Role role,PageBean<Role> pageBean){
ExampleMatcher withMatcher = ExampleMatcher.matching().withMatcher("name", GenericPropertyMatchers.contains());
withMatcher = withMatcher.withIgnorePaths("status");
Example<Role> example = Example.of(role, withMatcher);
Pageable pageable = PageRequest.of(pageBean.getCurrentPage()-1, pageBean.getPageSize());
Page<Role> findAll = roleDao.findAll(example, pageable);
pageBean.setContent(findAll.getContent());
pageBean.setTotal(findAll.getTotalElements());
pageBean.setTotalPage(findAll.getTotalPages());
return pageBean;
}
/**
* 根据id查询角色
* @param id
* @return
*/
public Role find(Long id){
return roleDao.find(id);
}
/**
* 根据id删除一条记录
* @param id
*/
public void delete(Long id){
roleDao.deleteById(id);
}
}
医生层Service服务:
/**
* 医生Service层
*/
@Service
public class DoctorService {
@Autowired
private DoctorDao doctorDao;
@Autowired
private OrderReceivingDao orderReceivingDao;
public Doctor find(Long id) { //通过病人id查病人信息
return doctorDao.find(id);
}
public Doctor save(Doctor patient) { //保存
return doctorDao.save(patient);
}
/**
* 分页查询医生信息
* @param doctor
* @param pageBean
* @return
*/
public PageBean<Doctor> findList(Doctor doctor, PageBean<Doctor> pageBean){
ExampleMatcher withMatcher = ExampleMatcher.matching().withMatcher("user.name", ExampleMatcher.GenericPropertyMatchers.contains());
withMatcher = withMatcher.withIgnorePaths("status","experience","user.status","user.sex","user.age");
Example<Doctor> example = Example.of(doctor, withMatcher);
Pageable pageable = PageRequest.of(pageBean.getCurrentPage()-1, pageBean.getPageSize());
Page<Doctor> findAll = doctorDao.findAll(example, pageable);
pageBean.setContent(findAll.getContent());
pageBean.setTotal(findAll.getTotalElements());
pageBean.setTotalPage(findAll.getTotalPages());
return pageBean;
}
/**
* 医生登录的信息
* @return
*/
public Doctor findByLoginDoctorUser(){//拿到医生登录的信息
Long userId = SessionUtil.getLoginedUser().getId();
return doctorDao.findByUser_Id(userId);
}
/**
* 根据医生编号拿到医生
* @param doctorDno
* @return
*/
public List<Doctor> findByDoctorDno(String doctorDno) {
return doctorDao.findByDoctorDno(doctorDno);
}
/**
* 根据ID删除
* @param id
*/
public void deleteById(Long id) {
doctorDao.deleteById(id);
}
/**
* 根据科室ID查找医生
* @param departmentId
* @return
*/
public List<Doctor> findFreeDoctorByDepartmentId(Long departmentId) {
return doctorDao.findByDepartmentIdAndStatus(departmentId, DOCTOR_STATUS_ENABLE);
}
/**
* 查看科室所有医生的信息
*
*/
public PageBean<Doctor>findAllByDepartment(PageBean<Doctor>pageBean, Long id){
Specification<Doctor> specification = new Specification<Doctor>() {
private static final long serialVersionUID = 1L;
@Override
public Predicate toPredicate(Root<Doctor> root,
CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
Predicate predicate = null;
Predicate equal1 = criteriaBuilder.equal(root.get("department"),id);
predicate = criteriaBuilder.and(equal1);
return predicate;
}
};
Sort sort = Sort.by(Sort.Direction.DESC,"createTime");
PageRequest pageable = PageRequest.of(pageBean.getCurrentPage()-1, pageBean.getPageSize(), sort);
Page<Doctor> findAll = doctorDao.findAll(specification, pageable);
pageBean.setContent(findAll.getContent());
pageBean.setTotal(findAll.getTotalElements());
pageBean.setTotalPage(findAll.getTotalPages());
return pageBean;
}
/**
* 根据医生ID修改出诊状态
*/
public boolean modifyVisitStatus(Long id){
Doctor doctor = findByLoginDoctorUser();
OrderReceiving receiving = orderReceivingDao.findAllOrderReceivingByDoctorId(id);
if (doctor.getId()==null&&doctor.getId().equals("")){
return false;
}
if (receiving.getOrderRegistration().getStatus()==REGISTRATION_STATUS_COMPLETED){
return false;
}
//订单状态设置为已完成
receiving.setStatus(RECEIVING_STATUS_COMPLETE);
//挂号状态设置为已完成
receiving.getOrderRegistration().setStatus(REGISTRATION_STATUS_COMPLETED);
orderReceivingDao.save(receiving);
return true;
}
/**
*
* 查询医生出诊信息数量
* @return
*/
public Integer selectCountByOrderReceiving(){
return doctorDao.selectCountByOrderReceiving();
}
/**
* 查询每个医生出诊的次数
* @return
*/
public DoctorOrderCount OrderCountByDoctor(){
DoctorOrderCount orderCount = new DoctorOrderCount();
List<Object> Orders = doctorDao.OrderCountByDoctor();
List<String>doctorName=new ArrayList<>();
List<Integer>countNum=new ArrayList<>();
for (Object o : Orders) {
Object[] obj = (Object[]) o;
doctorName.add(obj[0].toString());
orderCount.setDoctorName(doctorName);
countNum.add(Integer.valueOf(obj[1].toString()));
orderCount.setCountNum(countNum);
}
return orderCount;
}
}
用户管理service服务:
/**
* 用户管理service
*
*/
@Service
public class UserService {
@Autowired
private UserDao userDao;
/**
* 根据用户id查询
* @param id
* @return
*/
public User find(Long id){
return userDao.find(id);
}
/**
* 按照用户名查找用户
* @param username
* @return
*/
public User findByUsername(String username){
return userDao.findByUsername(username);
}
/**
* 用户添加/编辑操作
* @param user
* @return
*/
@Transactional
public User save(User user){
return userDao.save(user);
}
/**
* 分页查询用户列表
* @param user
* @param pageBean
* @return
*/
public PageBean<User> findList(User user,PageBean<User> pageBean){
ExampleMatcher withMatcher = ExampleMatcher.matching().withMatcher("username", GenericPropertyMatchers.contains());
withMatcher = withMatcher.withIgnorePaths("status","sex");
Example<User> example = Example.of(user, withMatcher);
Pageable pageable = PageRequest.of(pageBean.getCurrentPage()-1, pageBean.getPageSize());
Page<User> findAll = userDao.findAll(example, pageable);
pageBean.setContent(findAll.getContent());
pageBean.setTotal(findAll.getTotalElements());
pageBean.setTotalPage(findAll.getTotalPages());
return pageBean;
}
/**
* 判断用户名是否存在,添加和编辑均可判断
* @param username
* @param id
* @return
*/
public boolean isExistUsername(String username,Long id){
User user = userDao.findByUsername(username);
if(user != null){
//表示用户名存在,接下来判断是否是编辑用户的本身
if(user.getId().longValue() != id.longValue()){
return true;
}
}
return false;
}
/**
* 按照用户id删除
* @param id
*/
public void delete(Long id){
userDao.deleteById(id);
}
/**
* 返回用户总数
* @return
*/
public long total(){
return userDao.count();
}
}
病房类型层 Service服务:
/***
* 病房类型Service层
*/
@Service
public class RoomTypeService {
@Autowired
private RoomTypeDao roomTypeDao;
/***
* 病房类型全查询
* @return
*/
public PageBean<RoomType> findAll(RoomType roomType, PageBean<RoomType> pageBean){
ExampleMatcher withMatcher = ExampleMatcher.matching().withMatcher("name", ExampleMatcher.GenericPropertyMatchers.contains());
Example<RoomType> example = Example.of(roomType, withMatcher);
Pageable pageable = PageRequest.of(pageBean.getCurrentPage()-1, pageBean.getPageSize());
Page<RoomType> findAll = roomTypeDao.findAll(example, pageable);
pageBean.setContent(findAll.getContent());
pageBean.setTotal(findAll.getTotalElements());
pageBean.setTotalPage(findAll.getTotalPages());
return pageBean;
}
/***
* 病房类型全查询列表
* @return
*/
public List<RoomType> findList(){
return roomTypeDao.findAll();
}
/***
* 根据病房类型NAME判断是否存在
* @param name
* @return
*/
public boolean isByName(String name) {
RoomType byName = roomTypeDao.findByName(name);
if(byName != null){
if(byName.getName().equals(name)){
return true;
}
}
return false;
}
public boolean isByName(String name,Long id) {
RoomType byName = roomTypeDao.findByName(name);
if(byName != null){
if(byName.getId().longValue() != id.longValue()){
return true;
}
}
return false;
}
/***
* 病房类型添加
* @param roomType
* @return
*/
public RoomType save(RoomType roomType){
return roomTypeDao.save(roomType);
}
/***
* 根据ID查询病房类型
* @param id
* @return
*/
public RoomType find(Long id) {
return roomTypeDao.find(id);
}
/***
* 根据ID删除病房类型
* @param id
*/
public void delete(Long id){
roomTypeDao.deleteById(id);
}
}