package cn.besteam.modules.medical.service.impl; import cn.besteam.common.constant.DepartmentEnum; import cn.besteam.common.util.DateUtil; import cn.besteam.modules.medical.entity.MwWarningConfigItem; import cn.besteam.modules.medical.mapper.MwWarningConfigItemMapper; import cn.besteam.modules.medical.service.IMwWarningConfigItemService; import cn.besteam.modules.medical.vo.MwWarningConfigItemVO; import cn.besteam.modules.shiro.authc.util.EnvUtils; import cn.besteam.modules.system.entity.SysDepartment; import cn.besteam.modules.system.service.ISysDepartmentService; 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * @Description: 预警-自定义配置 * @author: besteam * @date: 2020-07-17 * @version: V1.0 */ @Service public class MwWarningConfigItemServiceImpl extends ServiceImpl implements IMwWarningConfigItemService { @Autowired private ISysDepartmentService sysDepartmentService; @Override public List listByType(Integer type, Integer departmentId) { List voList; if (departmentId != null) { SysDepartment myDepartment = sysDepartmentService.getById(departmentId); if (myDepartment.getOrgType().equals(DepartmentEnum.OrgTypeEnum.OFFICE.getType()) || myDepartment.getOrgType().equals(DepartmentEnum.OrgTypeEnum.DEPARTMENT.getType())) { return new ArrayList<>(); } List sysDepartmentList = sysDepartmentService.list(new QueryWrapper().lambda().likeRight(SysDepartment::getTreeCode, myDepartment.getTreeCode()).eq(SysDepartment::getOrgType, DepartmentEnum.OrgTypeEnum.HOSPITAL.getType())); if (CollectionUtils.isEmpty(sysDepartmentList)) { return new ArrayList<>(); } voList = baseMapper.listByType(type, sysDepartmentList.stream().map(SysDepartment::getId).collect(Collectors.toList())); } else { SysDepartment myDepartment = sysDepartmentService.getMyDepartment(EnvUtils.getUser().getId()); if (myDepartment.getOrgType().equals(DepartmentEnum.OrgTypeEnum.OFFICE.getType()) || myDepartment.getOrgType().equals(DepartmentEnum.OrgTypeEnum.DEPARTMENT.getType())) { return new ArrayList<>(); } List sysDepartmentList = sysDepartmentService.list(new QueryWrapper().lambda().likeRight(SysDepartment::getTreeCode, myDepartment.getTreeCode()).eq(SysDepartment::getOrgType, DepartmentEnum.OrgTypeEnum.HOSPITAL.getType())); if (CollectionUtils.isEmpty(sysDepartmentList)) { return new ArrayList<>(); } voList = baseMapper.listByType(type, sysDepartmentList.stream().map(SysDepartment::getId).collect(Collectors.toList())); } for (MwWarningConfigItemVO vo : voList) { if (vo.getCustomHospitalId() != null) { vo.setHospitalIdList(sysDepartmentService.getParentIdList(vo.getCustomHospitalId())); } if (vo.getCustomOfficeId() != null) { vo.setOfficeIdList(sysDepartmentService.getParentIdList(vo.getCustomOfficeId())); } if(vo.getApplyType()!=null && vo.getApplyType()==2){ vo.setCustomValueText(vo.getCustomValueText()+"("+vo.getDescription()+")"); }else if(vo.getApplyType()!=null && vo.getApplyType()==3){ vo.setCustomValueText("临时:"+Double.valueOf(vo.getCustomValueText()).intValue()+"天("+ DateUtil.format(vo.getUpdateTime(),"yyyy-MM-dd") +"," +DateUtil.format(vo.getExpirationTime(),"yyyy-MM-dd") +")"); }else if(vo.getApplyType()!=null && vo.getApplyType()==1){ vo.setCustomValueText("固定:"+Double.valueOf(vo.getCustomValueText()).intValue()+"天"); } } return voList; } @Override public IPage listByType(Integer type, Integer departmentId, Integer pageNo, Integer pageSize) { IPage page = new Page<>(pageNo, pageSize); List voList; if (departmentId != null) { SysDepartment myDepartment = sysDepartmentService.getById(departmentId); if (myDepartment.getOrgType().equals(DepartmentEnum.OrgTypeEnum.OFFICE.getType()) || myDepartment.getOrgType().equals(DepartmentEnum.OrgTypeEnum.DEPARTMENT.getType())) { return page; } List sysDepartmentList = sysDepartmentService.list(new QueryWrapper().lambda().likeRight(SysDepartment::getTreeCode, myDepartment.getTreeCode()).eq(SysDepartment::getOrgType, DepartmentEnum.OrgTypeEnum.HOSPITAL.getType())); if (CollectionUtils.isEmpty(sysDepartmentList)) { return page; } voList = baseMapper.listByType(type, sysDepartmentList.stream().map(SysDepartment::getId).collect(Collectors.toList()),page); } else { SysDepartment myDepartment = sysDepartmentService.getMyDepartment(EnvUtils.getUser().getId()); if (myDepartment.getOrgType().equals(DepartmentEnum.OrgTypeEnum.OFFICE.getType()) || myDepartment.getOrgType().equals(DepartmentEnum.OrgTypeEnum.DEPARTMENT.getType())) { return page; } List sysDepartmentList = sysDepartmentService.list(new QueryWrapper().lambda().likeRight(SysDepartment::getTreeCode, myDepartment.getTreeCode()).eq(SysDepartment::getOrgType, DepartmentEnum.OrgTypeEnum.HOSPITAL.getType())); if (CollectionUtils.isEmpty(sysDepartmentList)) { return page; } voList = baseMapper.listByType(type, sysDepartmentList.stream().map(SysDepartment::getId).collect(Collectors.toList()),page); } for (MwWarningConfigItemVO vo : voList) { if (vo.getCustomHospitalId() != null) { vo.setHospitalIdList(sysDepartmentService.getParentIdList(vo.getCustomHospitalId())); } if (vo.getCustomOfficeId() != null) { vo.setOfficeIdList(sysDepartmentService.getParentIdList(vo.getCustomOfficeId())); } if(vo.getApplyType()!=null && vo.getApplyType()==2){ vo.setCustomValueText(vo.getCustomValueText()+"("+vo.getDescription()+")"); }else if(vo.getApplyType()!=null && vo.getApplyType()==3){ vo.setCustomValueText("临时:"+Double.valueOf(vo.getCustomValueText()).intValue()+"天("+ DateUtil.format(vo.getUpdateTime(),"yyyy-MM-dd") +"," +DateUtil.format(vo.getExpirationTime(),"yyyy-MM-dd") +")"); }else if(vo.getApplyType()!=null && vo.getApplyType()==1){ vo.setCustomValueText("固定:"+Double.valueOf(vo.getCustomValueText()).intValue()+"天"); } } page.setRecords(voList); return page; } }