|
|
@ -1,7 +1,9 @@
|
|
|
package com.yihu.jw.hospital.endpoint.consult;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
|
|
import com.yihu.jw.doctor.dao.BaseDoctorDao;
|
|
|
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
|
|
|
import com.yihu.jw.hospital.mapping.dao.PatientMappingDao;
|
|
|
@ -50,6 +52,8 @@ import org.springframework.web.bind.annotation.*;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.IOException;
|
|
|
import java.io.OutputStream;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
@ -221,7 +225,9 @@ public class DoctorConsultStatisticsEndpoint extends EnvelopRestEndpoint {
|
|
|
|
|
|
// selectSql = selectSql + " limit " + (pageNum-1)*pageSize +","+ pageSize;
|
|
|
List<Map<String, Object>> list = hibenateUtils.createSQLQuery(selectSql, pageNum, pageSize);
|
|
|
System.out.println(LocalDateTime.now()+"statisticsData===========================");
|
|
|
System.out.println(selectSql);
|
|
|
System.out.println("===========================");
|
|
|
// List<Map<String, Object>> list = jdbcTemplate.queryForList(selectSql);
|
|
|
Integer total = jdbcTemplate.queryForObject(countSql, Integer.class);
|
|
|
|
|
|
@ -285,10 +291,9 @@ public class DoctorConsultStatisticsEndpoint extends EnvelopRestEndpoint {
|
|
|
|
|
|
if("org".equals(aggField)) {
|
|
|
selectSql += fromPart;
|
|
|
if(StringUtils.isBlank(orgId)) {
|
|
|
throw new ServiceException("参数未传");
|
|
|
if(!StringUtils.isBlank(orgId)) {
|
|
|
filterSql += " AND op.scbgjt_org_code='"+orgId+"' ";
|
|
|
}
|
|
|
filterSql += " AND op.scbgjt_org_code='"+orgId+"' ";
|
|
|
} else if("dept".equals(aggField)) {
|
|
|
selectSql += ",dh.dept_code AS \"deptCode\",dh.dept_name AS \"deptName\" ";
|
|
|
selectSql += fromPart;
|
|
|
@ -334,7 +339,9 @@ public class DoctorConsultStatisticsEndpoint extends EnvelopRestEndpoint {
|
|
|
selectSql += " ORDER BY TO_CHAR(op.create_time, 'YYYY-MM-DD') ASC ";
|
|
|
|
|
|
List<Map<String, Object>> list = jdbcTemplate.queryForList(selectSql);
|
|
|
System.out.println(LocalDateTime.now()+"statisticsGraph===========================");
|
|
|
System.out.println(selectSql);
|
|
|
System.out.println("===========================");
|
|
|
|
|
|
JSONObject result = new JSONObject();
|
|
|
result.put("list",list);
|
|
|
@ -368,12 +375,66 @@ public class DoctorConsultStatisticsEndpoint extends EnvelopRestEndpoint {
|
|
|
HttpServletResponse response) {
|
|
|
try {
|
|
|
|
|
|
ObjEnvelop envelop = this.statisticsData(mediaType, aggField, startTime, endTime, orgId, deptId, roleType,userOrgId, userId, 1, 20000);
|
|
|
Object list = ((JSONObject) (envelop.getObj())).get("list");
|
|
|
String sql = "SELECT\n" +
|
|
|
" op.scbgjt_org_code AS \"scbgjtOrgCode\",\n" +
|
|
|
" op.scbgjt_org_name AS \"scbgjtOrgName\",\n" +
|
|
|
" COUNT( * ) AS \"consultNum\",\n" +
|
|
|
" COUNT( CASE WHEN op.status >= 1 THEN 1 ELSE NULL END ) AS \"haveReceiveNum\",\n" +
|
|
|
" COUNT( CASE WHEN op.status <= 0 THEN 1 ELSE NULL END ) AS \"noReceiveNum\",\n" +
|
|
|
" COUNT( CASE WHEN op.status = - 1 THEN 1 ELSE NULL END ) AS \"cancelNum\",\n" +
|
|
|
" dh.dept_code AS \"deptCode\",\n" +
|
|
|
" dh.dept_name AS \"deptName\",\n" +
|
|
|
" op.doctor AS \"doctor\",\n" +
|
|
|
" op.doctor_name AS \"doctorName\",\n" +
|
|
|
" dh.doctor_duty_name AS \"doctorDutyName\",\n" +
|
|
|
" dh.org_code AS \"orgCode\",\n" +
|
|
|
" dh.org_name AS \"orgName\" \n" +
|
|
|
"FROM\n" +
|
|
|
" base_doctor_hospital dh\n" +
|
|
|
" LEFT JOIN wlyy_outpatient op ON dh.doctor_code = op.doctor \n" +
|
|
|
"WHERE ";
|
|
|
|
|
|
|
|
|
String filterSql = " op.scbgjt IS NOT NULL " +
|
|
|
" AND op.create_time BETWEEN TO_DATE( '"+startTime+"', 'YYYY-MM-DD' ) " +
|
|
|
" AND TO_DATE( '"+endTime+" 23:59:59', 'YYYY-MM-DD HH24:MI:SS' ) " +
|
|
|
" AND op.scbgjt_org_code IS NOT NULL ";
|
|
|
|
|
|
if(StringUtils.isNotBlank(mediaType)) {
|
|
|
if("1".equals(mediaType)) {
|
|
|
filterSql += " AND (op.type = 1 AND op.outpatient_type IN (1, 3)) ";
|
|
|
}
|
|
|
if("2".equals(mediaType)) {
|
|
|
filterSql += " AND (op.type = 2 AND op.outpatient_type IN (1, 3)) ";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if("1".equals(roleType)) { // 专科医生
|
|
|
filterSql += " AND op.doctor = '" + userId + "' ";
|
|
|
} else if("2".equals(roleType)) { // 管理员
|
|
|
filterSql += " AND dh.org_code = '" + userOrgId + "' ";
|
|
|
} else {
|
|
|
throw new ServiceException("角色类型有误");
|
|
|
}
|
|
|
|
|
|
|
|
|
String groupSql = "GROUP BY\n" +
|
|
|
" op.scbgjt_org_code,\n" +
|
|
|
" op.scbgjt_org_name,\n" +
|
|
|
" dh.dept_code,\n" +
|
|
|
" dh.dept_name,\n" +
|
|
|
" op.doctor,\n" +
|
|
|
" op.doctor_name,\n" +
|
|
|
" dh.doctor_duty_name,\n" +
|
|
|
" dh.org_code,\n" +
|
|
|
" dh.org_name";
|
|
|
|
|
|
List<Map<String, Object>> list = jdbcTemplate.queryForList(sql + filterSql + groupSql);
|
|
|
|
|
|
response.setContentType("octets/stream");
|
|
|
response.setHeader("Content-Disposition", "attachment; filename=" + new String("searchRecordWrite.xls"));
|
|
|
OutputStream os = response.getOutputStream();
|
|
|
this.searchRecordWrite(os, (List) list);
|
|
|
this.searchRecordWrite(os, list);
|
|
|
return success("操作成功");
|
|
|
}catch (Exception e){
|
|
|
return failedListEnvelopException(e);
|