package cn.besteam.modules.medical.controller; import cn.besteam.common.api.vo.Result; import cn.besteam.common.constant.DepartmentEnum; import cn.besteam.common.constant.ErrorCode; import cn.besteam.common.exception.BusinessException; import cn.besteam.common.util.DateUtil; import cn.besteam.modules.medical.dto.MwWarningRecordDTO; import cn.besteam.modules.medical.entity.MwWarningRecordPlatform; import cn.besteam.modules.medical.service.IMwWarningRecordPlatformService; import cn.besteam.modules.shiro.authc.util.EnvUtils; import cn.besteam.modules.system.entity.SysDepartment; import cn.besteam.modules.system.service.ISysDepartmentService; import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelWriter; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * @Title: Controller * @Description: 预警信息平台 * @author: besteam * @date: 2020-07-17 * @version: V1.0 */ @RestController @RequestMapping("/medical/mwWarningRecordPlatform") @Slf4j @Api(description = "预警信息平台") public class MwWarningRecordPlatformController { @Autowired private IMwWarningRecordPlatformService mwWarningRecordService; @Autowired private ISysDepartmentService sysDepartmentService; /** * 分页列表查询 * * @param dto * @param pageNo * @param pageSize * @return */ @GetMapping(value = "/list") @ApiOperation(value = "获取平台预警信息数据列表(新)", notes = "获取所有预警信息数据列表", produces = "application/json") public Result> queryPageList(MwWarningRecordDTO dto, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { Page page = new Page<>(pageNo, pageSize); List hospitalList = null; if (dto.getHospitalId() != null) { SysDepartment myDepartment = sysDepartmentService.getById(dto.getHospitalId()); if (myDepartment == null) { throw new BusinessException(ErrorCode.ERR_500, "医院不存在"); } hospitalList = sysDepartmentService.list(new QueryWrapper().lambda().likeRight(SysDepartment::getTreeCode, myDepartment.getTreeCode()).eq(SysDepartment::getOrgType, DepartmentEnum.OrgTypeEnum.HOSPITAL.getType())); } else { SysDepartment myDepartment = sysDepartmentService.getMyDepartment(EnvUtils.getUser().getId()); hospitalList = sysDepartmentService.list(new QueryWrapper().lambda().likeRight(SysDepartment::getTreeCode, myDepartment.getTreeCode()).eq(SysDepartment::getOrgType, DepartmentEnum.OrgTypeEnum.HOSPITAL.getType())); } if (CollectionUtils.isEmpty(hospitalList)) { return Result.ok(page); } QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda()// .in(MwWarningRecordPlatform::getHospitalId, hospitalList.stream().map(SysDepartment::getId).collect(Collectors.toList()))// .eq(dto.getType() != null && dto.getType() > 0, MwWarningRecordPlatform::getType, dto.getType())// .ge(dto.getStartTime() != null, MwWarningRecordPlatform::getWarningTime, DateUtil.format(dto.getStartTime()))// .le(dto.getEndTime() != null, MwWarningRecordPlatform::getWarningTime, DateUtil.format(dto.getEndTime()))// .eq(dto.getStatus() != null, MwWarningRecordPlatform::getStatus, dto.getStatus())// .orderByDesc(MwWarningRecordPlatform::getWarningTime) .orderByDesc(MwWarningRecordPlatform::getId); ; IPage pageList = mwWarningRecordService.page(page, queryWrapper); return Result.ok(pageList); } private static Map headerMap = new LinkedHashMap<>(); static { headerMap.put("warningTime", "预警时间"); headerMap.put("typeName", "预警类型"); headerMap.put("hospitalName", "医院名称"); headerMap.put("statusName", "状态"); } @Data private static class MwWarningRecordExportVO { private String warningTime; private String typeName; private String hospitalName; private String statusName; } @GetMapping("/export") @ApiOperation(value = "导出", notes = "导出", produces = "application/json") public void export(HttpServletResponse response, MwWarningRecordDTO dto) throws IOException { List voList = new ArrayList<>(); List hospitalList = null; if (dto.getHospitalId() != null) { SysDepartment myDepartment = sysDepartmentService.getById(dto.getHospitalId()); if (myDepartment == null) { throw new BusinessException(ErrorCode.ERR_500, "医院不存在"); } hospitalList = sysDepartmentService.list(new QueryWrapper().lambda().likeRight(SysDepartment::getTreeCode, myDepartment.getTreeCode()).eq(SysDepartment::getOrgType, DepartmentEnum.OrgTypeEnum.HOSPITAL.getType())); } else { SysDepartment myDepartment = sysDepartmentService.getMyDepartment(EnvUtils.getUser().getId()); hospitalList = sysDepartmentService.list(new QueryWrapper().lambda().likeRight(SysDepartment::getTreeCode, myDepartment.getTreeCode()).eq(SysDepartment::getOrgType, DepartmentEnum.OrgTypeEnum.HOSPITAL.getType())); } if (!CollectionUtils.isEmpty(hospitalList)) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda()// .in(MwWarningRecordPlatform::getHospitalId, hospitalList.stream().map(SysDepartment::getId).collect(Collectors.toList()))// .eq(dto.getType() != null && dto.getType() > 0, MwWarningRecordPlatform::getType, dto.getType())// .ge(dto.getStartTime() != null, MwWarningRecordPlatform::getWarningTime, DateUtil.format(dto.getStartTime()))// .le(dto.getEndTime() != null, MwWarningRecordPlatform::getWarningTime, DateUtil.format(dto.getEndTime()))// .eq(dto.getStatus() != null, MwWarningRecordPlatform::getStatus, dto.getStatus())// .orderByDesc(MwWarningRecordPlatform::getWarningTime) .orderByDesc(MwWarningRecordPlatform::getId); List list = mwWarningRecordService.list(queryWrapper); for (MwWarningRecordPlatform warningRecord : list) { MwWarningRecordExportVO vo = new MwWarningRecordExportVO(); BeanUtils.copyProperties(warningRecord, vo); if (warningRecord.getStatus().equals(1)) { vo.setStatusName("未解除"); } else if (warningRecord.getStatus().equals(2)) { vo.setStatusName("未解除"); } else if (warningRecord.getStatus().equals(3)) { vo.setStatusName("已解除"); } else if (warningRecord.getStatus().equals(4)) { vo.setStatusName("已解除"); } vo.setWarningTime(DateUtil.formatTime(warningRecord.getWarningTime(), "yyyy-MM-dd HH:mm:ss")); voList.add(vo); } } ExcelWriter writer = ExcelUtil.getWriter(true); writer.renameSheet("平台预警信息"); writer.setColumnWidth(0, 30); writer.setColumnWidth(1, 30); writer.setColumnWidth(2, 30); writer.setColumnWidth(3, 30); writer.setHeaderAlias(headerMap); writer.write(voList); // String fileName = "平台预警信息"; response.setContentType("application/octet-stream;charset=utf-8"); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xlsx"); writer.flush(response.getOutputStream()); writer.close(); } }