|
@ -6,16 +6,22 @@ import com.yihu.jw.entity.base.patient.BasePatientDO;
|
|
|
import com.yihu.jw.patient.dao.BasePatientDao;
|
|
|
import com.yihu.jw.util.date.DateUtil;
|
|
|
import com.yihu.jw.util.http.HttpClientUtil;
|
|
|
import com.yihu.jw.utils.hibernate.HibenateUtils;
|
|
|
import jxl.WorkbookSettings;
|
|
|
import jxl.write.*;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.apache.poi.hssf.usermodel.*;
|
|
|
import org.apache.poi.xssf.usermodel.XSSFCell;
|
|
|
import org.apache.poi.xssf.usermodel.XSSFRow;
|
|
|
import org.apache.poi.xssf.usermodel.XSSFSheet;
|
|
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
import java.io.OutputStream;
|
|
|
import java.util.Date;
|
|
|
import java.util.Map;
|
|
|
import java.util.*;
|
|
|
|
|
|
@Service
|
|
|
public class PayInfoNoticeService {
|
|
@ -25,8 +31,16 @@ public class PayInfoNoticeService {
|
|
|
private HttpClientUtil httpClientUtil;
|
|
|
@Autowired
|
|
|
private BasePatientDao patientDao;
|
|
|
@Autowired
|
|
|
private HibenateUtils hibenateUtils;
|
|
|
|
|
|
@Value("${wechat.id}")
|
|
|
private String wxId;
|
|
|
|
|
|
|
|
|
@Value("${wechat.flag}")
|
|
|
private boolean flag;
|
|
|
|
|
|
public String pushPrescriptionPay(String patient,String doctorName,String orderNo,String outpatientId,String prescriptionId,String total,String title,String url){
|
|
|
BasePatientDO patientDO = patientDao.findById(patient);
|
|
|
if (patientDO!=null){
|
|
@ -85,14 +99,47 @@ public class PayInfoNoticeService {
|
|
|
}
|
|
|
|
|
|
//导出es查询数据
|
|
|
public void exportEsPrescription(OutputStream os, com.alibaba.fastjson.JSONObject jsonObject) throws Exception{
|
|
|
WritableWorkbook wwb = jxl.Workbook.createWorkbook(os);
|
|
|
public void exportEsPrescription(OutputStream os, List<Map<String,Object>> list) throws Exception{
|
|
|
|
|
|
WorkbookSettings settings = new WorkbookSettings();
|
|
|
settings.setWriteAccess(null);
|
|
|
settings.setEncoding("UTF-8");
|
|
|
WritableWorkbook wwb = jxl.Workbook.createWorkbook(os,settings);
|
|
|
List<Map<String,Object>> totallist = new ArrayList<>();
|
|
|
if (null!=list&&list.size()>0){
|
|
|
totallist =list;
|
|
|
}
|
|
|
/* HSSFWorkbook workbook = new HSSFWorkbook();
|
|
|
HSSFSheet sheet = workbook.createSheet("shee1");
|
|
|
//headers表示excel表中第一行的表头
|
|
|
HSSFRow row = sheet.createRow(0);
|
|
|
//在excel表中添加表头
|
|
|
String[] header = {"医生姓名", "出诊科室", "接诊数量", "开方数量", "物流数量"};
|
|
|
for(int i=0;i<header.length;i++){
|
|
|
HSSFCell cell = row.createCell(i);
|
|
|
HSSFRichTextString text = new HSSFRichTextString(header[i]);
|
|
|
cell.setCellValue(text);
|
|
|
}
|
|
|
workbook.write(os);
|
|
|
//接诊 +开方+物流
|
|
|
com.alibaba.fastjson.JSONArray totallist = new JSONArray();
|
|
|
if (null!=jsonObject){
|
|
|
totallist = jsonObject.getJSONArray("outpatient");
|
|
|
List<Map<String,Object>> totallist = new ArrayList<>();
|
|
|
if (null!=list&&list.size()>0){
|
|
|
totallist =list;
|
|
|
}
|
|
|
|
|
|
int rowNum = 1;
|
|
|
if (null!=totallist&&totallist.size()>0){
|
|
|
for (int n=0;n<totallist.size();n++) {
|
|
|
Map<String,Object> object = totallist.get(n);
|
|
|
HSSFRow row1 = sheet.createRow(rowNum);
|
|
|
row1.createCell(0).setCellValue(object.get("doctorName").toString());
|
|
|
row1.createCell(1).setCellValue(null==object.get("deptName")?"":object.get("deptName").toString());
|
|
|
row1.createCell(2).setCellValue(null==object.get("pickNum")?"":object.get("pickNum").toString());
|
|
|
row1.createCell(3).setCellValue(null==object.get("preNum")?"":object.get("preNum").toString());
|
|
|
row1.createCell(4).setCellValue(null==object.get("wlNum")?"":object.get("wlNum").toString());
|
|
|
rowNum++;
|
|
|
}
|
|
|
}
|
|
|
workbook.write(os);*/
|
|
|
try {
|
|
|
WritableSheet ws;
|
|
|
ws = wwb.createSheet("sheet", 1);
|
|
@ -106,16 +153,15 @@ public class PayInfoNoticeService {
|
|
|
int i = 1;
|
|
|
if (null!=totallist&&totallist.size()>0){
|
|
|
for (int n=0;n<totallist.size();n++) {
|
|
|
JSONObject object = totallist.getJSONObject(i);
|
|
|
Map<String,Object> object = totallist.get(n);
|
|
|
addCell(ws, i, 0, object.get("doctorName").toString(), "");
|
|
|
addCell(ws, i, 1, null==object.get("dept")?"":object.get("dept").toString(),"");
|
|
|
addCell(ws, i, 1, null==object.get("out")?"":object.get("out").toString(),"");
|
|
|
addCell(ws, i, 1, null==object.get("pre")?"":object.get("pre").toString(),"");
|
|
|
addCell(ws, i, 1, null==object.get("sf")?"":object.get("sf").toString(),"");
|
|
|
addCell(ws, i, 1, null==object.get("deptName")?"":object.get("deptName").toString(),"");
|
|
|
addCell(ws, i, 2, null==object.get("pickNum")?"":object.get("pickNum").toString(),"");
|
|
|
addCell(ws, i, 3, null==object.get("preNum")?"":object.get("preNum").toString(),"");
|
|
|
addCell(ws, i, 4, null==object.get("wlNum")?"":object.get("wlNum").toString(),"");
|
|
|
i++;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
wwb.write();
|
|
|
wwb.close();
|
|
|
} catch (IOException e) {
|
|
@ -140,5 +186,149 @@ public class PayInfoNoticeService {
|
|
|
}
|
|
|
ws.addCell(label);
|
|
|
}
|
|
|
public List<Map<String,Object>> dealSqlQuery(String beginTime,String endTime){
|
|
|
//发起问诊量
|
|
|
String sqlOutPatient="SELECT\n" +
|
|
|
"\tt.doctor as \"doctor\",\n" +
|
|
|
"\tt.doctor_name as \"doctorName\",\n" +
|
|
|
"\tt.dept_name as \"deptName\",\n" +
|
|
|
"\tcount(*) as \"total\" \n" +
|
|
|
"FROM\n" +
|
|
|
"\t wlyy_outpatient t \n" +
|
|
|
"WHERE 1=1 and t.doctor is not null\n" ;
|
|
|
//接诊量
|
|
|
String sqlDoctorOut = "SELECT\n" +
|
|
|
"\tt.doctor as \"doctor\",\n" +
|
|
|
"\tt.doctor_name as \"doctorName\",\n" +
|
|
|
"\tt.dept_name as \"deptName\",\n" +
|
|
|
"\tcount(*) as \"total\" \n" +
|
|
|
"FROM\n" +
|
|
|
"\t wlyy_outpatient t \n" +
|
|
|
"WHERE 1=1 and t.doctor is not null\n";
|
|
|
//开具处方量
|
|
|
String sqlPrescription = "SELECT\n" +
|
|
|
"\tt.doctor as \"doctor\",\n" +
|
|
|
"\tt.doctor_name as \"doctorName\",\n" +
|
|
|
"\tt.dept_name as \"deptName\",\n" +
|
|
|
"\tcount(*) as \"total\" \n" +
|
|
|
"FROM\n" +
|
|
|
"\t wlyy_prescription t \n" +
|
|
|
"WHERE 1=1 and t.doctor is not null\n" ;
|
|
|
//物流量
|
|
|
String sqlWL = "SELECT\n" +
|
|
|
"\to.doctor as \"doctor\",\n" +
|
|
|
" o.doctor_name as \"doctorName\",\n" +
|
|
|
" o.dept_name as \"deptName\",\n" +
|
|
|
" count(*) as \"total\"" +
|
|
|
"FROM\n" +
|
|
|
" base.wlyy_prescription_expressage t\n" +
|
|
|
"LEFT JOIN base.wlyy_prescription b ON b.outpatient_id = t.outpatient_id\n" +
|
|
|
"LEFT JOIN base.wlyy_outpatient o ON o.id= b.outpatient_id\n" +
|
|
|
"WHERE 1=1 and o.doctor is not null\n" ;
|
|
|
if (StringUtils.isNotEmpty(beginTime)){
|
|
|
wxId="xx";
|
|
|
if("xm_ykyy_wx".equals(wxId)){
|
|
|
if (flag){
|
|
|
sqlOutPatient+=" and t.create_time > '" + beginTime + " 00:00:00' ";
|
|
|
sqlDoctorOut+=" and t.create_time > '" + beginTime + " 00:00:00' ";
|
|
|
sqlPrescription+=" and t.create_time > '" + beginTime + " 00:00:00' ";
|
|
|
sqlWL+=" and t.create_time > '" + beginTime + " 00:00:00' ";
|
|
|
|
|
|
}else {
|
|
|
sqlOutPatient+=" and t.create_time > to_date('" + beginTime + " 00:00:00', 'yyyy-mm-dd hh24:mi:ss') ";
|
|
|
sqlDoctorOut+=" and t.create_time > to_date('" + beginTime + " 00:00:00', 'yyyy-mm-dd hh24:mi:ss') ";
|
|
|
sqlPrescription+=" and t.create_time > to_date('" + beginTime + " 00:00:00', 'yyyy-mm-dd hh24:mi:ss') ";
|
|
|
sqlWL+=" and t.create_time > to_date('" + beginTime + " 00:00:00', 'yyyy-mm-dd hh24:mi:ss') ";
|
|
|
|
|
|
}
|
|
|
}else{
|
|
|
sqlOutPatient+=" and t.create_time > '" + beginTime + " 00:00:00'";
|
|
|
sqlDoctorOut+=" and t.create_time > '" + beginTime + " 00:00:00'";
|
|
|
sqlPrescription+=" and t.create_time > '" + beginTime + " 00:00:00'";
|
|
|
sqlWL+=" and t.create_time > '" + beginTime + " 00:00:00'";
|
|
|
}
|
|
|
}
|
|
|
if (StringUtils.isNotEmpty(endTime)){
|
|
|
if("xm_ykyy_wx".equals(wxId)){
|
|
|
if (flag){
|
|
|
sqlOutPatient+=" and t.create_time<'" + endTime + " 23:59:59'";
|
|
|
sqlDoctorOut+=" and t.create_time<'" + endTime + " 23:59:59'";
|
|
|
sqlPrescription+=" and t.create_time<'" + endTime + " 23:59:59'";
|
|
|
sqlWL+=" and t.create_time<'" + endTime + " 23:59:59'";
|
|
|
|
|
|
}else {
|
|
|
sqlOutPatient+=" and t.create_time< to_date('" + endTime + " 23:59:59','yyyy-mm-dd hh24:mi:ss')";
|
|
|
sqlDoctorOut+=" and t.create_time< to_date('" + endTime + " 23:59:59','yyyy-mm-dd hh24:mi:ss')";
|
|
|
sqlPrescription+=" and t.create_time< to_date('" + endTime + " 23:59:59','yyyy-mm-dd hh24:mi:ss')";
|
|
|
sqlWL+=" and t.create_time< to_date('" + endTime + " 23:59:59','yyyy-mm-dd hh24:mi:ss')";
|
|
|
}
|
|
|
}else{
|
|
|
sqlOutPatient+=" and t.create_time<'" + endTime + " 23:59:59'";
|
|
|
sqlDoctorOut+=" and t.create_time<'" + endTime + " 23:59:59'";
|
|
|
sqlPrescription+=" and t.create_time<'" + endTime + " 23:59:59'";
|
|
|
sqlWL+=" and t.create_time<'" + endTime + " 23:59:59'";
|
|
|
}
|
|
|
}
|
|
|
sqlOutPatient+="\tAND t.patient_name NOT IN ( '王志南', '游水连', '林志芳', '郑绩', '陈晓亮', '王培坤' ) \n" +
|
|
|
"\tAND t.STATUS IN ( 0,1,2,3 )\n" +
|
|
|
"\tGROUP BY t.doctor_name,\n" +
|
|
|
"\tt.dept_name,t.doctor";
|
|
|
sqlDoctorOut+= "\tAND t.patient_name NOT IN ( '王志南', '游水连', '林志芳', '郑绩', '陈晓亮', '王培坤' ) \n" +
|
|
|
"\tAND t.STATUS IN ( 1, 2, 3 )\n" +
|
|
|
" and t.pay_status =1 "+
|
|
|
"\tGROUP BY t.doctor_name,\n" +
|
|
|
"\tt.dept_name ,t.doctor";
|
|
|
sqlPrescription+="\tAND t.patient_name NOT IN ( '王志南', '游水连', '林志芳', '郑绩', '陈晓亮', '王培坤' ) \n" +
|
|
|
"\tGROUP BY t.doctor_name,\n" +
|
|
|
"\tt.dept_name,t.doctor";
|
|
|
sqlWL+= "AND t. NAME NOT IN (\n" +
|
|
|
" '王志南',\n" +
|
|
|
" '游水连',\n" +
|
|
|
" '林志芳',\n" +
|
|
|
" '郑绩',\n" +
|
|
|
" '陈晓亮',\n" +
|
|
|
" '王培坤',\n" +
|
|
|
" '林'\n" +
|
|
|
")\n" +
|
|
|
"AND t.oneself_pickup_flg = 0\n" +
|
|
|
"\n" +
|
|
|
"AND b.`status`IN(20,32,100)\n" +
|
|
|
"AND b.drug_fee !=0\n" +
|
|
|
"AND b.real_order IS not NULL"+
|
|
|
"\tGROUP BY o.doctor_name,\n" +
|
|
|
"\to.dept_name,o.doctor";;
|
|
|
List<Map<String,Object>> result = new ArrayList<>();
|
|
|
List<Map<String,Object>> outPatient=hibenateUtils.createSQLQuery(sqlOutPatient);
|
|
|
List<Map<String,Object>> docPickup=hibenateUtils.createSQLQuery(sqlDoctorOut);
|
|
|
List<Map<String,Object>> prescription=hibenateUtils.createSQLQuery(sqlPrescription);
|
|
|
List<Map<String,Object>> wl=hibenateUtils.createSQLQuery(sqlWL);
|
|
|
if(null!=outPatient&&outPatient.size()>0){
|
|
|
for (Map<String,Object> map:outPatient){
|
|
|
if (docPickup!=null&&docPickup.size()>0){
|
|
|
for (Map<String,Object> pickMap:docPickup){
|
|
|
if (pickMap.get("doctor").toString().equalsIgnoreCase(map.get("doctor").toString())){
|
|
|
map.put("pickNum",null==pickMap.get("total")?"":pickMap.get("total").toString());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if (prescription!=null&&prescription.size()>0){
|
|
|
for (Map<String,Object> pre:prescription){
|
|
|
if (pre.get("doctor").toString().equalsIgnoreCase(map.get("doctor").toString())){
|
|
|
map.put("preNum",null==pre.get("total")?"":pre.get("total").toString());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if (wl!=null&&wl.size()>0){
|
|
|
for (Map<String,Object> wMap:wl){
|
|
|
if (wMap.get("doctor").toString().equalsIgnoreCase(map.get("doctor").toString())){
|
|
|
map.put("wlNum",null==wMap.get("total")?"":wMap.get("total").toString());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
result.add(map);
|
|
|
}
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
}
|
|
|
|