增加了医生统计导出

This commit is contained in:
wucongxing8150 2025-07-03 17:41:31 +08:00
parent aaf5dfe921
commit e13129a171
5 changed files with 140 additions and 1 deletions

View File

@ -60,6 +60,7 @@ public class EasyExcelCaseDetailVO {
private String uid;
@ApiModelProperty(value = "治疗类型")
@ExcelProperty("治疗类型")
private String caseType;
@ApiModelProperty(value = "创建时间")

View File

@ -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<List<SystemActualEcharsData>> 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<StatisticsExpertVO> 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();
}
}
}

View File

@ -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<StatisticsExpertVO> queryPage(Page page, @Param("queryForm") StatisticsExpertQueryForm queryForm, @Param("provList")List<ProvVO> provList);
List<StatisticsExpertVO> excelList(@Param("queryForm") StatisticsExpertQueryForm queryForm, @Param("provList")List<ProvVO> provList);
List<HospitalVO> getHospitalList(@Param("queryForm") HospitalQureyForm queryForm, @Param("provList")List<ProvVO> provList);
/**

View File

@ -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<StatisticsExpertVO> excelList(StatisticsExpertQueryForm queryForm) {
LoginEmployeeDetail requestUser = (LoginEmployeeDetail)SmartRequestUtil.getRequestUser();
List<ProvVO> 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<StatisticsExpertVO> list = statisticsDao.excelList(queryForm, provList);
return list;
}
public List<HospitalVO> getHospitalList(HospitalQureyForm queryForm) {
LoginEmployeeDetail requestUser = (LoginEmployeeDetail)SmartRequestUtil.getRequestUser();
List<ProvVO> provList = requestUser.getProvList();

View File

@ -186,6 +186,65 @@
</if>
</select>
<select id="excelList" resultType="net.lab1024.sa.admin.module.business.statistics.domain.StatisticsExpertVO">
SELECT
t_caseplatform_expert.*,
(select name from t_area where id=t_caseplatform_expert.prov_id) provName,
(select name from t_area where id=t_caseplatform_expert.city_id) cityName,
(select count(*) from t_caseplatform_case where t_caseplatform_case.expert_id=t_caseplatform_expert.id) total,
(select count(*) from t_caseplatform_case where t_caseplatform_case.expert_id=t_caseplatform_expert.id and status = 1) passNum,
(select count(*) from t_caseplatform_case where t_caseplatform_case.expert_id=t_caseplatform_expert.id and status = 0) waitNum,
(select count(*) from t_caseplatform_case where t_caseplatform_case.expert_id=t_caseplatform_expert.id and status = 2) refuseNum,
(select count(*) from t_caseplatform_case where t_caseplatform_case.expert_id=t_caseplatform_expert.id and settlement_flag = 1) settlementNum
FROM t_caseplatform_expert
<where>
<!--name-->
<if test="queryForm.name != null and queryForm.name != ''">
AND ( INSTR(t_caseplatform_expert.name,#{queryForm.name})
OR INSTR(t_caseplatform_expert.hospital_name,#{queryForm.name})
)
</if>
<choose>
<when test="queryForm.provId != null and queryForm.provId != ''">
AND t_caseplatform_expert.prov_id =#{queryForm.provId}
</when>
<when test="provList != null and provList.size > 0">
and
t_caseplatform_expert.prov_id
in
<foreach collection="provList" open="(" close=")" separator="," item="item">
#{item.id}
</foreach>
</when>
<otherwise>
and 1=2
</otherwise>
</choose>
<if test="queryForm.cityId != null and queryForm.cityId != ''">
AND t_caseplatform_expert.city_id =#{queryForm.cityId}
</if>
<if test="queryForm.hospitalUuid != null and queryForm.hospitalUuid != ''">
AND t_caseplatform_expert.hospital_uuid =#{queryForm.hospitalUuid}
</if>
</where>
<if test="queryForm.sort ==0 ">
order by total desc
</if>
<if test="queryForm.sort ==1 ">
order by settlementNum desc
</if>
<if test="queryForm.sort ==2 ">
order by passNum desc
</if>
<if test="queryForm.sort ==3 ">
order by waitNum desc
</if>
<if test="queryForm.sort ==4 ">
order by refuseNum desc
</if>
</select>
<select id="getSystemActualEcharsData" resultType="net.lab1024.sa.admin.module.business.statistics.domain.SystemActualEcharsData">
SELECT statistics_day statisticsDate, count(*) num
FROM t_caseplatform_case