package com.kidgrow.usercenter.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kidgrow.common.model.PageResult;
import com.kidgrow.common.model.ResultBody;
import com.kidgrow.common.model.SysUser;
import com.kidgrow.common.service.impl.SuperServiceImpl;
import com.kidgrow.usercenter.mapper.SysDepartmentMapper;
import com.kidgrow.usercenter.mapper.SysHospitalMapper;
import com.kidgrow.usercenter.model.SysDepartment;
import com.kidgrow.usercenter.model.SysHospital;
import com.kidgrow.usercenter.service.ISysHospitalService;
import com.kidgrow.usercenter.vo.HospitalListVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020
* @Description:
* @Project: 用户中心
* @CreateDate: Created in 2020-03-11 16:15:31
* @Author: liuke
* @version 1.0
*/
@Slf4j
@Service
public class SysHospitalServiceImpl extends SuperServiceImpl implements ISysHospitalService {
@Resource
private SysDepartmentMapper departmentMapper;
@Autowired
private SysRoleOrganizationServiceImpl SysRoleOrganizationServiceImpl;
/**
* 列表
* @param params
* @return
*/
@Override
public PageResult findList(Map params){
Page page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
List list = baseMapper.findList(page, params);
return PageResult.builder().data(list).code(0).count(page.getTotal()).build();
}
/**
* 列表
* @param params
* @return
*/
@Override
public PageResult findHospitalList(Map params, SysUser user) {
Page page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
SysRoleOrganizationServiceImpl.getRoleOrg(params, user);
List list = baseMapper.findHospitalList(page, params);
return PageResult.builder().data(list).code(0).count(page.getTotal()).build();
}
/**
* 根据SysHospital对象当做查询条件进行查询
* @param sysHospital
* @return SysHospital
*/
@Override
public SysHospital findByObject(SysHospital sysHospital){
return baseMapper.findByObject(sysHospital);
}
@Override
public ResultBody findAll(Map params) {
params.put("is_del",0);
params.put("enabled",1);
List sysHospitals = baseMapper.selectByMap(params);
return ResultBody.ok().data(sysHospitals).msg("查询成功");
}
/**
* 根据医院名称模糊查询医院数据列表
* @param hospitalName
* @return
*/
public ResultBody findByName(String hospitalName){
return ResultBody.ok().data(baseMapper.findByName(hospitalName)).msg("查询成功");
}
/**
* 根据id和启用禁用值更新数据
* @param params
* @return ResultBody
*/
@Transactional(rollbackFor = Exception.class)
@Override
public ResultBody updateEnabled(Map params) {
Long id = MapUtils.getLong(params, "id");
Long departmentId = MapUtils.getLong(params, "departmentId");
Boolean enabled = MapUtils.getBoolean(params, "enabled");
//科室数据
SysDepartment sysDepartment=departmentMapper.selectById(departmentId);
//医院数据
SysHospital sysHospital = baseMapper.selectById(id);
//医院下的所有数据
Map columnMap=new HashMap();
columnMap.put("hospital_id",id);
columnMap.put("is_del",(boolean)false);
columnMap.put("enabled",!enabled);
List sysDepartmentList=departmentMapper.selectByMap(columnMap);
if (sysHospital == null) {
return ResultBody.failed("医院数据不存在!");
}
if (sysDepartment == null) {
return ResultBody.failed("科室数据不存在!");
}
//如果这个医院下有多个科室,禁用只对当前科室有效,否则也要禁用医院
if(sysDepartmentList.size()==1)
{
sysHospital.setEnabled(enabled);
int i =baseMapper.updateById(sysHospital);
//Log.info("修改医院状态为:{}",enabled+" "+i);
}
sysDepartment.setEnabled(enabled);
int j=departmentMapper.updateById(sysDepartment);
return (j > 0) ? ResultBody.ok().data(sysHospital).msg("更新成功") : ResultBody.failed("更新失败");
}
/**
* 删除医院科室信息
* @param params
* @return
*/
@Transactional(rollbackFor = Exception.class)
@Override
public ResultBody delete(Map params) {
Long id = MapUtils.getLong(params, "id");
Long departmentId = MapUtils.getLong(params, "departmentId");
//科室数据
SysDepartment sysDepartment=departmentMapper.selectById(departmentId);
//医院数据
SysHospital sysHospital = baseMapper.selectById(id);
//医院下的所有数据
Map columnMap=new HashMap();
columnMap.put("hospital_id",id);
List sysDepartmentList=departmentMapper.selectByMap(columnMap);
if (sysHospital == null) {
return ResultBody.failed("医院数据不存在!");
}
if (sysDepartment == null) {
return ResultBody.failed("科室数据不存在!");
}
//如果这个医院下有多个科室,禁用只对当前科室有效,否则也要禁用医院
if(sysDepartmentList.size()==1)
{
sysHospital.setIsDel(true);
int i =baseMapper.updateById(sysHospital);
//Log.info("修改医院状态为:{}",enabled+" "+i);
}
sysDepartment.setIsDel(true);
int j=departmentMapper.updateById(sysDepartment);
return (j > 0) ? ResultBody.ok().data(sysHospital).msg("删除成功") : ResultBody.failed("删除失败");
}
}