diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseplatformcase/domain/vo/EasyExcelCaseDetailVO.java b/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseplatformcase/domain/vo/EasyExcelCaseDetailVO.java index c7971e7..92dc494 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseplatformcase/domain/vo/EasyExcelCaseDetailVO.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseplatformcase/domain/vo/EasyExcelCaseDetailVO.java @@ -60,6 +60,7 @@ public class EasyExcelCaseDetailVO { private String uid; @ApiModelProperty(value = "治疗类型") + @ExcelProperty("治疗类型") private String caseType; @ApiModelProperty(value = "创建时间") diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/statistics/controller/StatisticsController.java b/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/statistics/controller/StatisticsController.java index c9a18c4..8c402e2 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/statistics/controller/StatisticsController.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/statistics/controller/StatisticsController.java @@ -1,8 +1,16 @@ package net.lab1024.sa.admin.module.business.statistics.controller; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.support.ExcelTypeEnum; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import net.lab1024.sa.admin.module.business.caseplatformcase.domain.form.CaseplatformCaseQueryForm; +import net.lab1024.sa.admin.module.business.caseplatformcase.domain.vo.EasyExcelCaseDetailVO; import net.lab1024.sa.admin.module.business.statistics.domain.HospitalQureyForm; import net.lab1024.sa.admin.module.business.statistics.domain.HospitalVO; import net.lab1024.sa.admin.module.business.statistics.domain.StatisticsExpertQueryForm; @@ -14,12 +22,17 @@ import net.lab1024.sa.admin.module.business.statistics.service.StatisticsService import net.lab1024.sa.common.common.domain.PageResult; import net.lab1024.sa.common.common.domain.ResponseDTO; import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.apache.poi.ss.usermodel.VerticalAlignment; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.net.URLEncoder; import java.util.List; /** @@ -56,10 +69,50 @@ public class StatisticsController { return ResponseDTO.ok(statisticsService.getSystemActualNum(queryForm)); } - @ApiOperation("病例 echar @author HMM") + @PostMapping("/statistics/case/getSystemActualEcharsData") public ResponseDTO> getSystemActualEcharsData(@RequestBody @Valid SystemActualNumQueryForm queryForm) { return ResponseDTO.ok(statisticsService.getSystemActualEcharsData(queryForm)); } + @ApiOperation("医生统计导出") + @GetMapping("/statistics/exportEasyExcel") + public void exportEasyExcel(HttpServletResponse response, @Valid StatisticsExpertQueryForm queryForm) { + try { + List list = statisticsService.excelList(queryForm); + + // 处理数据 + + // 1设置表头样式 + WriteCellStyle headStyle = new WriteCellStyle(); + // 1.1设置表头数据居中 + headStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + + // 2设置表格内容样式 + WriteCellStyle bodyStyle = new WriteCellStyle(); + // 2.1设置表格内容水平居中 + bodyStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); + // 2.2设置表格内容垂直居中 + bodyStyle.setVerticalAlignment(VerticalAlignment.CENTER); + + // 3设置表格sheet样式 + WriteSheet sheet = EasyExcel.writerSheet("详细数据").head(StatisticsExpertVO.class).sheetNo(1).build(); + // 4拿到表格处理对象 + ExcelWriter writer = EasyExcel.write(response.getOutputStream()).needHead(true).excelType(ExcelTypeEnum.XLSX) + // 设置单元格的风格样式 + .registerWriteHandler(new HorizontalCellStyleStrategy(headStyle, bodyStyle)) + .build(); + + // 5写入excel数据 + writer.write(list, sheet); + // 6通知浏览器以附件的形式下载处理,设置返回头要注意文件名有中文 + String fileName = URLEncoder.encode("医生统计", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); + response.setContentType("multipart/form-data"); + response.setCharacterEncoding("utf-8"); + writer.finish(); + }catch (Exception e){ + e.printStackTrace(); + } + } } diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/statistics/dao/StatisticsDao.java b/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/statistics/dao/StatisticsDao.java index 3147547..58fadd4 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/statistics/dao/StatisticsDao.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/statistics/dao/StatisticsDao.java @@ -2,6 +2,8 @@ package net.lab1024.sa.admin.module.business.statistics.dao; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import net.lab1024.sa.admin.module.business.area.domain.vo.ProvVO; +import net.lab1024.sa.admin.module.business.caseplatformcase.domain.form.CaseplatformCaseQueryForm; +import net.lab1024.sa.admin.module.business.caseplatformcase.domain.vo.EasyExcelCaseDetailVO; import net.lab1024.sa.admin.module.business.statistics.domain.HospitalQureyForm; import net.lab1024.sa.admin.module.business.statistics.domain.HospitalVO; import net.lab1024.sa.admin.module.business.statistics.domain.StatisticsExpertQueryForm; @@ -20,6 +22,8 @@ public interface StatisticsDao { List queryPage(Page page, @Param("queryForm") StatisticsExpertQueryForm queryForm, @Param("provList")List provList); + List excelList(@Param("queryForm") StatisticsExpertQueryForm queryForm, @Param("provList")List provList); + List getHospitalList(@Param("queryForm") HospitalQureyForm queryForm, @Param("provList")List provList); /** diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/statistics/service/StatisticsService.java b/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/statistics/service/StatisticsService.java index 056c8c6..136c48a 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/statistics/service/StatisticsService.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/statistics/service/StatisticsService.java @@ -3,6 +3,9 @@ package net.lab1024.sa.admin.module.business.statistics.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import net.lab1024.sa.admin.module.business.area.domain.vo.ProvVO; import net.lab1024.sa.admin.module.business.caseplatformcase.constant.CaseStatusEnum; +import net.lab1024.sa.admin.module.business.caseplatformcase.domain.form.CaseplatformCaseQueryForm; +import net.lab1024.sa.admin.module.business.caseplatformcase.domain.vo.CaseplatformCaseVO; +import net.lab1024.sa.admin.module.business.caseplatformcase.domain.vo.EasyExcelCaseDetailVO; import net.lab1024.sa.admin.module.business.statistics.dao.StatisticsDao; import net.lab1024.sa.admin.module.business.statistics.domain.HospitalQureyForm; import net.lab1024.sa.admin.module.business.statistics.domain.HospitalVO; @@ -43,6 +46,25 @@ public class StatisticsService { return ResponseDTO.ok(pageResult); } + /** + * 不分页导出 excel + * @param queryForm + * @return + */ + public List excelList(StatisticsExpertQueryForm queryForm) { + LoginEmployeeDetail requestUser = (LoginEmployeeDetail)SmartRequestUtil.getRequestUser(); + List provList = requestUser.getProvList(); + Long provId = queryForm.getProvId(); + if(provId != null){ + boolean match = provList.stream().anyMatch(item -> item.getId().equals(provId)); + if(!match){ + return null; + } + } + List list = statisticsDao.excelList(queryForm, provList); + return list; + } + public List getHospitalList(HospitalQureyForm queryForm) { LoginEmployeeDetail requestUser = (LoginEmployeeDetail)SmartRequestUtil.getRequestUser(); List provList = requestUser.getProvList(); diff --git a/sa-admin/src/main/resources/mapper/business/statistics/StatisticMapper.xml b/sa-admin/src/main/resources/mapper/business/statistics/StatisticMapper.xml index a4d7123..778ba0a 100644 --- a/sa-admin/src/main/resources/mapper/business/statistics/StatisticMapper.xml +++ b/sa-admin/src/main/resources/mapper/business/statistics/StatisticMapper.xml @@ -186,6 +186,65 @@ + +