| 
					
				 | 
			
			
				@@ -0,0 +1,401 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package thyyxxk.webserver.service.highreport; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import lombok.extern.slf4j.Slf4j; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import thyyxxk.webserver.dao.his.highreport.AllStatisticsDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import thyyxxk.webserver.dao.his.highreport.HighReportDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import thyyxxk.webserver.entity.ResultVo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import thyyxxk.webserver.entity.highreport.HighReportDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import thyyxxk.webserver.entity.highreport.ReportBaseInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import thyyxxk.webserver.utils.DecimalUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import thyyxxk.webserver.utils.ReportUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import thyyxxk.webserver.utils.ResultVoUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.math.BigDecimal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.HashMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @Description: 全部报表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @Author: hsh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @CreateTime: 2023-05-11  10:53 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @Version: 1.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@Slf4j 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class AllStatisticsService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private final AllStatisticsDao dao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private final HighReportDao highReportDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public AllStatisticsService(AllStatisticsDao dao, HighReportDao highReportDao) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.dao = dao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.highReportDao = highReportDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @description: 工作量统计 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @author: hsh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @date: 2023/5/11 11:07 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param: [dto] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return: ResultVo<Map<String,Object>> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     **/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public ResultVo<Map<String, Object>> selectWorkloadStatistics(HighReportDto dto){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, Object> results = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 查询门诊人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ReportBaseInfo report_mz = highReportDao.selectReportPortalMenu("mz_mzrs", null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        report_mz.setGatherSql(report_mz.getGatherSql() + " as rs_mz, t.dept as ks_mz "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String sql_mz = ReportUtil.callSqlFormat(dto, report_mz.getBaseSql(), report_mz.getGatherSql(), "dept", null, "rs_mz desc"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Map<String, Object>> mzrs = highReportDao.selectReportPortalData(report_mz.getReportId(), report_mz.getMenuId(), report_mz.getReportType(), sql_mz); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 查询急诊人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ReportBaseInfo report_jz = highReportDao.selectReportPortalMenu("mz_jzrs", null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        report_jz.setGatherSql(report_jz.getGatherSql() + " as rs_jz, t.dept as ks_jz "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String sql_jz = ReportUtil.callSqlFormat(dto, report_jz.getBaseSql(), report_jz.getGatherSql(), "dept", null, "rs_jz desc"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Map<String, Object>> jzrs = highReportDao.selectReportPortalData(report_jz.getReportId(), report_jz.getMenuId(), report_jz.getReportType(), sql_jz); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 查询退号人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ReportBaseInfo report_th = highReportDao.selectReportPortalMenu("mz_thrs", null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        report_th.setGatherSql(report_th.getGatherSql() + " as rs_th, t.dept as ks_th "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String sql_th = ReportUtil.callSqlFormat(dto, report_th.getBaseSql(), report_th.getGatherSql(), "dept", null, "rs_th desc"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Map<String, Object>> thrs = highReportDao.selectReportPortalData(report_th.getReportId(), report_th.getMenuId(), report_th.getReportType(), sql_th); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 查询入院人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ReportBaseInfo report_ry = highReportDao.selectReportPortalMenu("cy_ryrs", null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        report_ry.setGatherSql(report_ry.getGatherSql() + " as rs_ry, t.dept as ks_ry "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String sql_ry = ReportUtil.callSqlFormat(dto, report_ry.getBaseSql(), report_ry.getGatherSql(), "dept", null, "rs_ry desc"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Map<String, Object>> ryrs = highReportDao.selectReportPortalData(report_ry.getReportId(), report_ry.getMenuId(), report_ry.getReportType(), sql_ry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 查询出院人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ReportBaseInfo report_cy = highReportDao.selectReportPortalMenu("cy_cyrs", null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        report_cy.setGatherSql(report_cy.getGatherSql() + " as rs_cy, t.dept as ks_cy "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String sql_cy = ReportUtil.callSqlFormat(dto, report_cy.getBaseSql(), report_cy.getGatherSql(), "dept", null, "rs_cy desc"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Map<String, Object>> cyrs = highReportDao.selectReportPortalData(report_cy.getReportId(), report_cy.getMenuId(), report_cy.getReportType(), sql_cy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 在院人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ReportBaseInfo report_zy = highReportDao.selectReportPortalMenu("zy_zyrs", null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        report_zy.setGatherSql(report_zy.getGatherSql() + " as rs_zy, t.dept as ks_zy "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String sql_zy = ReportUtil.callSqlFormat(dto, report_zy.getBaseSql(), report_zy.getGatherSql(), "dept", null, "rs_zy desc"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Map<String, Object>> zyrs = highReportDao.selectReportPortalData(report_zy.getReportId(), report_zy.getMenuId(), report_zy.getReportType(), sql_zy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Map<String, Object>> list = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int count = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(mzrs.size() >= jzrs.size()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            count = mzrs.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            count = jzrs.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(count < thrs.size()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            count = thrs.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(count < ryrs.size()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            count = ryrs.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(count < cyrs.size()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            count = cyrs.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(count < zyrs.size()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            count = zyrs.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, Object> hj = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int mzHj = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int jzHj = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int thHj = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int ryHj = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int cyHj = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int zyHj = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (int i = 0; i < count; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<String, Object> m = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(mzrs.size() > i){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                m.putAll(mzrs.get(i)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                mzHj = mzHj + Integer.parseInt(mzrs.get(i).get("rs_mz") == null ? "0" : String.valueOf(mzrs.get(i).get("rs_mz"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(jzrs.size() > i){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                m.putAll(jzrs.get(i)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                jzHj = jzHj + Integer.parseInt(jzrs.get(i).get("rs_jz") == null ? "0" : String.valueOf(jzrs.get(i).get("rs_jz"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(thrs.size() > i){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                m.putAll(thrs.get(i)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                thHj = thHj + Integer.parseInt(thrs.get(i).get("rs_th") == null ? "0" : String.valueOf(thrs.get(i).get("rs_th"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(ryrs.size() > i){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                m.putAll(ryrs.get(i)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ryHj = ryHj + Integer.parseInt(ryrs.get(i).get("rs_ry") == null ? "0" : String.valueOf(ryrs.get(i).get("rs_ry"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(cyrs.size() > i){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                m.putAll(cyrs.get(i)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                cyHj = cyHj + Integer.parseInt(cyrs.get(i).get("rs_cy") == null ? "0" : String.valueOf(cyrs.get(i).get("rs_cy"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(zyrs.size() > i){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                m.putAll(zyrs.get(i)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                zyHj = zyHj + Integer.parseInt(zyrs.get(i).get("rs_zy") == null ? "0" : String.valueOf(zyrs.get(i).get("rs_zy"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            list.add(m); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 添加合计 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, Object> hjm = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hjm.put("ks_mz", "合计"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hjm.put("rs_mz", mzHj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hj.putAll(hjm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hjm = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hjm.put("ks_jz", "合计"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hjm.put("rs_jz", jzHj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hj.putAll(hjm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hjm = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hjm.put("ks_th", "合计"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hjm.put("rs_th", thHj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hj.putAll(hjm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hjm = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hjm.put("ks_ry", "合计"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hjm.put("rs_ry", ryHj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hj.putAll(hjm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hjm = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hjm.put("ks_cy", "合计"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hjm.put("rs_cy", cyHj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hj.putAll(hjm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hjm = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hjm.put("ks_zy", "合计"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hjm.put("rs_zy", zyHj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hj.putAll(hjm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        results.put("resultData", list); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        results.put("totalMap", hj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return ResultVoUtil.success(results); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @description: 收入量统计 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @author: hsh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @date: 2023/5/12 11:36 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param: [dto] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return: ResultVo<Map<String,Object>> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     **/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public ResultVo<Map<String, Object>> selectIncomeStatistics(HighReportDto dto) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, Object> results = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 查询门诊收入 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ReportBaseInfo report_mzsr = highReportDao.selectReportPortalMenu("mz_mzzsr", null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        report_mzsr.setGatherSql(report_mzsr.getGatherSql() + " as mz_sr, t.dept as ks_sr "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String sql_mz_sr = ReportUtil.callSqlFormat(dto, report_mzsr.getBaseSql(), report_mzsr.getGatherSql(), "dept", null, "mz_sr desc"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Map<String, Object>> mzSr = highReportDao.selectReportPortalData(report_mzsr.getReportId(), report_mzsr.getMenuId(), report_mzsr.getReportType(), sql_mz_sr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 查询门诊药占比 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ReportBaseInfo report_mz_yzb = highReportDao.selectReportPortalMenu("mz_mzypfzb", null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        report_mz_yzb.setGatherSql(report_mz_yzb.getGatherSql() + " as mz_yzb, sum(t.fy) as mz_zfy, sum(t.ypf) as mz_ypf, t.dept as ks_yzb "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String sql_mz_yzb = ReportUtil.callSqlFormat(dto, report_mz_yzb.getBaseSql(), report_mz_yzb.getGatherSql(), "dept", null, "mz_ypf desc"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Map<String, Object>> mzYzb = highReportDao.selectReportPortalData(report_mz_yzb.getReportId(), report_mz_yzb.getMenuId(), report_mz_yzb.getReportType(), sql_mz_yzb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 查询门诊耗占比 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ReportBaseInfo report_mz_hzb = highReportDao.selectReportPortalMenu("mz_mzclfzb", null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        report_mz_hzb.setGatherSql(report_mz_hzb.getGatherSql() + " as mz_hzb, sum(t.fy) as mz_zfy, sum(t.clf) as mz_hcf, t.dept as ks_hzb "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String sql_mz_hzb = ReportUtil.callSqlFormat(dto, report_mz_hzb.getBaseSql(), report_mz_hzb.getGatherSql(), "dept", null, "mz_hcf desc"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Map<String, Object>> mzHzb = highReportDao.selectReportPortalData(report_mz_hzb.getReportId(), report_mz_hzb.getMenuId(), report_mz_hzb.getReportType(), sql_mz_hzb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 查询住院收入 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ReportBaseInfo report_zy_sr = highReportDao.selectReportPortalMenu("zy_zyzsr", null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        report_zy_sr.setGatherSql(report_zy_sr.getGatherSql() + " as zy_sr, t.dept as ks_sr "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String sql_zy_sr = ReportUtil.callSqlFormat(dto, report_zy_sr.getBaseSql(), report_zy_sr.getGatherSql(), "dept", null, "zy_sr desc"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Map<String, Object>> zySr = highReportDao.selectReportPortalData(report_zy_sr.getReportId(), report_zy_sr.getMenuId(), report_zy_sr.getReportType(), sql_zy_sr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 查询住院药品费 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ReportBaseInfo report_zy_yzb = highReportDao.selectReportPortalMenu("zy_zyzypfzb", null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        report_zy_yzb.setGatherSql(report_zy_yzb.getGatherSql() + " as zy_yzb, sum(t.zfy) as zy_zfy, sum(t.ypf) as zy_ypf, t.dept as ks_yzb "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String sql_zy_yzb = ReportUtil.callSqlFormat(dto, report_zy_yzb.getBaseSql(), report_zy_yzb.getGatherSql(), "dept", null, "zy_ypf desc"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Map<String, Object>> zyYzb = highReportDao.selectReportPortalData(report_zy_yzb.getReportId(), report_zy_yzb.getMenuId(), report_zy_yzb.getReportType(), sql_zy_yzb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 查询住院耗材费 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ReportBaseInfo report_zy_hzb = highReportDao.selectReportPortalMenu("zy_zyzclfzb", null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        report_zy_hzb.setGatherSql(report_zy_hzb.getGatherSql() + " as zy_hzb, sum(t.zfy) as zy_zfy, sum(t.clf) as zy_hcf, t.dept as ks_hzb "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String sql_zy_hzb = ReportUtil.callSqlFormat(dto, report_zy_hzb.getBaseSql(), report_zy_hzb.getGatherSql(), "dept", null, "zy_hcf desc"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Map<String, Object>> zyHzb = highReportDao.selectReportPortalData(report_zy_hzb.getReportId(), report_zy_hzb.getMenuId(), report_zy_hzb.getReportType(), sql_zy_hzb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 整理收入数据: 各科室收入(分三种门诊+住院、门诊、住院) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Map<String, Object>> ksSrList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(Map<String, Object> m1 : mzSr){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String dept1 = String.valueOf(m1.get("ks_sr")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String mz_sr = String.valueOf(m1.get("mz_sr")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String all_sr = "0"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            boolean flag = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for(Map<String, Object> m2 : zySr){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String dept2 = String.valueOf(m2.get("ks_sr")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String zy_sr = String.valueOf(m2.get("zy_sr")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(dept2.equals(dept1)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    m1.put("zy_sr", m2.get("zy_sr")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    all_sr = DecimalUtil.add(mz_sr, zy_sr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    flag = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(flag){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                m1.put("all_sr", mz_sr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                m1.put("all_sr", all_sr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ksSrList.add(m1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(Map<String, Object> m1 : zySr){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String dept1 = String.valueOf(m1.get("ks_sr")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            boolean flag = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for(Map<String, Object> m2 : mzSr){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String dept2 = String.valueOf(m2.get("ks_sr")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(dept2.equals(dept1)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    flag = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 住院收入有而门诊收入没有的科室也要加上 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(flag){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String zy_sr = String.valueOf(m1.get("zy_sr")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                m1.put("all_sr", zy_sr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ksSrList.add(m1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 整理药占比数据: 各科室药占比(分三种门诊+住院、门诊、住院) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Map<String, Object>> yzbList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(Map<String, Object> m1 : mzYzb){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String dept1 = String.valueOf(m1.get("ks_yzb")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String mz_ypf = String.valueOf(m1.get("mz_ypf")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String mz_zfy = String.valueOf(m1.get("mz_zfy")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String all_yzb = "0"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            boolean flag = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for(Map<String, Object> m2 : zyYzb){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String dept2 = String.valueOf(m2.get("ks_yzb")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String zy_ypf = String.valueOf(m2.get("zy_ypf")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String zy_zfy = String.valueOf(m2.get("zy_zfy")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String zy_yzb = String.valueOf(m2.get("zy_yzb")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(dept2.equals(dept1)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    m1.put("zy_yzb", zy_yzb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    m1.put("zy_zfy", zy_zfy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    m1.put("zy_ypf", zy_ypf); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    all_yzb = DecimalUtil.multiply(new BigDecimal(DecimalUtil.divide(DecimalUtil.add(mz_ypf, zy_ypf), DecimalUtil.add(mz_zfy, zy_zfy), 4)), new BigDecimal(100)) + ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    flag = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(flag){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String mz_yzb = String.valueOf(m1.get("mz_yzb")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                m1.put("all_yzb", mz_yzb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                m1.put("all_yzb", all_yzb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            yzbList.add(m1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(Map<String, Object> m1 : zyYzb){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String dept1 = String.valueOf(m1.get("ks_yzb")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            boolean flag = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for(Map<String, Object> m2 : mzYzb){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String dept2 = String.valueOf(m2.get("ks_yzb")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(dept2.equals(dept1)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    flag = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 住院药占比有而门诊药占比没有的科室也要加上 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(flag){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String zy_yzb = String.valueOf(m1.get("zy_yzb")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                m1.put("all_yzb", zy_yzb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                yzbList.add(m1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 整理耗占比数据: 各科室耗占比(分三种门诊+住院、门诊、住院) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Map<String, Object>> hzbList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(Map<String, Object> m1 : mzHzb){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String dept1 = String.valueOf(m1.get("ks_hzb")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String mz_hcf = String.valueOf(m1.get("mz_hcf")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String mz_zfy = String.valueOf(m1.get("mz_zfy")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String all_hzb = "0"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            boolean flag = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for(Map<String, Object> m2 : zyHzb){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String dept2 = String.valueOf(m2.get("ks_hzb")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String zy_hcf = String.valueOf(m2.get("zy_hcf")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String zy_zfy = String.valueOf(m2.get("zy_zfy")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String zy_hzb = String.valueOf(m2.get("zy_hzb")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(dept2.equals(dept1)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    m1.put("zy_hzb", zy_hzb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    m1.put("zy_zfy", zy_zfy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    m1.put("zy_hcf", zy_hcf); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    all_hzb = DecimalUtil.multiply(new BigDecimal(DecimalUtil.divide(DecimalUtil.add(mz_hcf, zy_hcf), DecimalUtil.add(mz_zfy, zy_zfy), 4)), new BigDecimal(100)) + ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    flag = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(flag){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String mz_hzb = String.valueOf(m1.get("mz_hzb")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                m1.put("all_hzb", mz_hzb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                m1.put("all_hzb", all_hzb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            hzbList.add(m1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(Map<String, Object> m1 : zyHzb){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String dept1 = String.valueOf(m1.get("ks_hzb")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            boolean flag = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for(Map<String, Object> m2 : mzHzb){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String dept2 = String.valueOf(m2.get("ks_hzb")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(dept2.equals(dept1)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    flag = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 住院药占比有而门诊药占比没有的科室也要加上 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(flag){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                String zy_hzb = String.valueOf(m1.get("zy_hzb")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                m1.put("all_hzb", zy_hzb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                hzbList.add(m1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Map<String, Object>> list = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int count = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(ksSrList.size() >= yzbList.size()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            count = ksSrList.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            count = yzbList.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(count < hzbList.size()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            count = hzbList.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(int i = 0; i < count; i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<String, Object> m = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(ksSrList.size() > i){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                m.putAll(ksSrList.get(i)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(yzbList.size() > i){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                m.putAll(yzbList.get(i)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(hzbList.size() > i){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                m.putAll(hzbList.get(i)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            list.add(m); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        results.put("resultData", list); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return ResultVoUtil.success(results); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |