如何在一个实体类中放入从多个sql语句中查询的数据

查询1
复制代码
public List sqlForDiagnosis(Date startDate, Date endDate, String cataloger) {
    String sqlForDiagnosis = "select i.cataloger name" +
            ", b.STAFF_NAME staff_name"+
            ", count(distinct i.visit_no) mr_number" +
            ", count(d.diag_code) diagnosis_number" +
            ", count(distinct d.diag_code) diagnosis_type_number" +
            " from inp_visit i" +
            " left join diagnostic_category d on i.patient_id=d.patient_id and i.visit_no=d.visit_no" +
            " left join staff_dict b  on i.CATALOGER=b.emp_id"+
            " where i.catalog_date>=to_date('" + DateTimeParameter.format(startDate) + "', 'yyyy-mm-dd hh24:mi:ss')" +
            " and i.catalog_date<=to_date('" + DateTimeParameter.format(endDate) + "', 'yyyy-mm-dd hh24:mi:ss')";
    if(!StringUtils.isEmpty(cataloger)){
                  sqlForDiagnosis += "and i.cataloger="+ cataloger;
    }
    sqlForDiagnosis += " group by i.cataloger,b.STAFF_NAME" +
    " order by i.cataloger";
    return createNativeQueryToMap(sqlForDiagnosis, new ArrayList<>());
}
复制代码

查询2

复制代码
public List sqlForOperation(Date startDate, Date endDate,String cataloger) {
    String sqlForOperation = "select i.cataloger name" +
            ", b.STAFF_NAME staff_name"+
            ", count(distinct i.visit_no) mr_number" +
            ", count(o.operation_code) operation_number" +
            ", count(distinct o.operation_code) operation_type_number" +
            " from inp_visit i" +
            " left join operation o on i.patient_id=o.patient_id and i.visit_no=o.visit_no" +
            " left join staff_dict b  on i.CATALOGER=b.emp_id"+
            " where i.catalog_date>=to_date('" + DateTimeParameter.format(startDate) + "', 'yyyy-mm-dd hh24:mi:ss')" +
            " and i.catalog_date<=to_date('" + DateTimeParameter.format(endDate) + "', 'yyyy-mm-dd hh24:mi:ss')" ;
    if(!StringUtils.isEmpty(cataloger)){
        sqlForOperation += "and i.cataloger="+ cataloger;
    }
    sqlForOperation += " group by i.cataloger,b.STAFF_NAME" +
            " order by i.cataloger";
    return createNativeQueryToMap(sqlForOperation, new ArrayList<>());
}
复制代码

插入数据

复制代码
public List statisticsWorkloadForStaff(Date startDate, Date endDate,String cataloger) {
    List<Map> diagnosisStatistic = inpMedicalRecordDao.sqlForDiagnosis(startDate, endDate,cataloger);
    List<Map> operationStatistic = inpMedicalRecordDao.sqlForOperation(startDate, endDate,cataloger);
    Map<String, StaffWorkloadStatisticVO> temp = new HashMap<>();
    for (Map diagnosis : diagnosisStatistic) {
        temp.put((String) diagnosis.get("name"),
                new StaffWorkloadStatisticVO((String) diagnosis.get("staffName"), (BigDecimal) diagnosis.get("mrNumber")
                        , (BigDecimal) diagnosis.get("diagnosisNumber"), (BigDecimal) diagnosis.get("diagnosisTypeNumber")
                        , null, null));
    }
    for (Map operation : operationStatistic) {
        String name = (String) operation.get("name");
        StaffWorkloadStatisticVO vo = temp.get(name);
        vo.setOperationNumber((BigDecimal) operation.get("operationNumber"));
        vo.setOperationTypeNumber((BigDecimal) operation.get("operationTypeNumber"));
    }
    return new ArrayList(temp.values());
}
复制代码

 


使用数据库别名对应参数 建立一个List<Map> 用查询数据的唯一值列为key 分多次插入对应数据 最后返回拼装好的完整数据 需要多个数据表中有相同的唯一值列以做对照
posted @   幻龙九头  阅读(265)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示