package cn.besteam.modules.medical.service.impl;
|
|
import cn.besteam.common.constant.DepartmentEnum;
|
import cn.besteam.modules.medical.dto.MwNoticeDTO;
|
import cn.besteam.modules.medical.entity.MwNotice;
|
import cn.besteam.modules.medical.mapper.MwNoticeMapper;
|
import cn.besteam.modules.medical.service.IMwNoticeService;
|
import cn.besteam.modules.medical.vo.MwNoticeVO;
|
import cn.besteam.modules.report.vo.IndexScheduleVO;
|
import cn.besteam.modules.shiro.authc.util.EnvUtils;
|
import cn.besteam.modules.system.entity.SysDepartment;
|
import cn.besteam.modules.system.entity.SysUserRole;
|
import cn.besteam.modules.system.service.IOssService;
|
import cn.besteam.modules.system.service.ISysDepartmentService;
|
import cn.besteam.modules.system.service.ISysUserRoleService;
|
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.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
/**
|
* 公告消息
|
*/
|
@Service
|
public class MwNoticeServiceImpl extends ServiceImpl<MwNoticeMapper, MwNotice> implements IMwNoticeService {
|
|
@Autowired
|
ISysUserRoleService sysUserRoleService;
|
|
@Autowired
|
ISysDepartmentService sysDepartmentService;
|
|
@Autowired
|
private IOssService ossService;
|
|
@Override
|
public IPage<MwNoticeVO> queryPageList(Integer pageNo, Integer pageSize, MwNoticeDTO mwNoticeDTO) {
|
Page<MwNoticeVO> page = new Page<>(pageNo, pageSize);
|
Integer userId=EnvUtils.getUser().getId();
|
List<SysUserRole> sysUserRoles=sysUserRoleService.getSysRoleListByUserId(userId);
|
IPage<MwNoticeVO> result = baseMapper.queryPageList(page, mwNoticeDTO,userId,sysUserRoles);
|
return result;
|
}
|
|
@Override
|
public Boolean add(MwNotice mwNotice) {
|
if(mwNotice.getFiles()!=null){
|
mwNotice.setFileName(mwNotice.getFiles().getOriginalFilename());
|
mwNotice.setAccessory(ossService.upload("notice",mwNotice.getFiles()));
|
}
|
return this.save(mwNotice);
|
}
|
|
@Override
|
public Boolean edit(MwNotice mwNotice) {
|
return this.updateById(mwNotice);
|
}
|
|
@Override
|
public Boolean readReceipt(Integer id) {
|
MwNotice mwNotice=this.getById(id);
|
Integer userId=EnvUtils.getUser().getId();
|
mwNotice.setCreateBy(userId);
|
Integer count=baseMapper.getNoticeReadOneCount(mwNotice);
|
if(count==0){
|
baseMapper.noticeReadInsert(mwNotice);
|
}
|
return true;
|
}
|
|
@Override
|
public Boolean delete(Integer id) {
|
return this.removeById(id);
|
}
|
|
@Override
|
public IndexScheduleVO getIndexSchedule() {
|
Integer userId=EnvUtils.getUser().getId();
|
List<Integer> hospitalIdList = getSearchHospitalIdList(EnvUtils.getUser().getHospitalId());
|
List<SysUserRole> sysUserRoles=sysUserRoleService.getSysRoleListByUserId(userId);
|
List<Map<String,Long>> reList=baseMapper.getIndexSchedule(sysUserRoles,hospitalIdList,userId);
|
IndexScheduleVO indexScheduleVO = new IndexScheduleVO();
|
indexScheduleVO.setNoticeCount(reList.get(0).get("number"));
|
indexScheduleVO.setMessageCount(reList.get(1).get("number"));
|
indexScheduleVO.setApprovalCount(reList.get(2).get("number"));
|
indexScheduleVO.setWarningOneCount(reList.get(3).get("number"));
|
indexScheduleVO.setWarningTwoCount(reList.get(4).get("number"));
|
indexScheduleVO.setWarningThreeCount(reList.get(5).get("number"));
|
return indexScheduleVO;
|
}
|
|
private List<Integer> getSearchHospitalIdList(Integer hospitalId) {
|
|
if (hospitalId == null) {
|
return sysDepartmentService.listMyHospital(EnvUtils.getUser().getId()).stream().map(SysDepartment::getId).collect(Collectors.toList());
|
} else {
|
SysDepartment sysDepartment = sysDepartmentService.getById(hospitalId);
|
if (sysDepartment == null) {
|
return new ArrayList<>();
|
}
|
List<SysDepartment> childrenList = sysDepartmentService.list(new QueryWrapper<SysDepartment>().lambda().likeRight(SysDepartment::getTreeCode, sysDepartment.getTreeCode()).eq(SysDepartment::getOrgType, DepartmentEnum.OrgTypeEnum.HOSPITAL.getType()));
|
if (CollectionUtils.isEmpty(childrenList)) {
|
return new ArrayList<>();
|
}
|
return childrenList.stream().map(SysDepartment::getId).collect(Collectors.toList());
|
}
|
}
|
}
|