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 implements IMwNoticeService { @Autowired ISysUserRoleService sysUserRoleService; @Autowired ISysDepartmentService sysDepartmentService; @Autowired private IOssService ossService; @Override public IPage queryPageList(Integer pageNo, Integer pageSize, MwNoticeDTO mwNoticeDTO) { Page page = new Page<>(pageNo, pageSize); Integer userId=EnvUtils.getUser().getId(); List sysUserRoles=sysUserRoleService.getSysRoleListByUserId(userId); IPage 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 hospitalIdList = getSearchHospitalIdList(EnvUtils.getUser().getHospitalId()); List sysUserRoles=sysUserRoleService.getSysRoleListByUserId(userId); List> 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 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 childrenList = sysDepartmentService.list(new QueryWrapper().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()); } } }