瀏覽代碼

数据大屏

hsh 2 年之前
父節點
當前提交
0f94fe68d7

+ 40 - 0
src/main/java/thyyxxk/webserver/controller/highreport/FullScreenController.java

@@ -0,0 +1,40 @@
+package thyyxxk.webserver.controller.highreport;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import thyyxxk.webserver.config.auth.PassToken;
+import thyyxxk.webserver.entity.ResultVo;
+import thyyxxk.webserver.entity.highreport.HighReportDto;
+import thyyxxk.webserver.service.highreport.FullScreenService;
+
+import java.util.Map;
+
+/**
+ * @Description: 数字大屏后台请求
+ * @Author: hsh
+ * @CreateTime: 2022-12-13  15:47
+ * @Version: 1.0
+ */
+@RestController
+@RequestMapping("/fullScreen")
+public class FullScreenController {
+
+    private final FullScreenService service;
+
+    @Autowired
+    public FullScreenController(FullScreenService service) {
+        this.service = service;
+    }
+
+    @PassToken
+    @PostMapping("/selectFullScreenData")
+    public ResultVo<Map<String, Object>> selectFullScreenData(@RequestBody @Validated HighReportDto dto){
+        return service.selectFullScreenData(dto);
+    }
+
+
+}

+ 29 - 0
src/main/java/thyyxxk/webserver/dao/his/highreport/FullScreenDao.java

@@ -0,0 +1,29 @@
+package thyyxxk.webserver.dao.his.highreport;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import thyyxxk.webserver.entity.highreport.ReportBaseInfo;
+
+import java.util.List;
+
+/**
+ * @description: 数字大屏dao
+ * @author: hsh
+ * @date: 2022/12/13 15:51
+ * @param:
+ * @return: null
+ **/
+@Mapper
+public interface FullScreenDao {
+
+    @Select("<script> " +
+            " select * from report_base_info where flag = 'Y' " +
+            " <if test=\"type = 'cw' \"> " +
+            " and is_cw = 'Y' " +
+            " </if> " +
+            " order by sort " +
+            "</script> ")
+    List<ReportBaseInfo> selectFullScreenReport(@Param("type")String type);
+
+}

+ 4 - 0
src/main/java/thyyxxk/webserver/entity/highreport/ReportBaseInfo.java

@@ -45,6 +45,10 @@ public class ReportBaseInfo implements Serializable {
      * 报表默认排序
      **/
     private String reportSort;
+    /**
+     * 是否是财务报表指标
+     **/
+    private String isCw;
     /**
      * 页面展示
      **/

+ 71 - 0
src/main/java/thyyxxk/webserver/service/highreport/FullScreenService.java

@@ -0,0 +1,71 @@
+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.FullScreenDao;
+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.entity.highreport.TableGroupInfo;
+import thyyxxk.webserver.utils.ReportUtil;
+import thyyxxk.webserver.utils.ResultVoUtil;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 数据大屏统一入口
+ * @Author: hsh
+ * @CreateTime: 2022-12-13  15:49
+ * @Version: 1.0
+ */
+@Service
+@Slf4j
+public class FullScreenService {
+
+    private final FullScreenDao dao;
+
+    private final HighReportDao highDao;
+
+    @Autowired
+    public FullScreenService(FullScreenDao dao, HighReportDao highDao) {
+        this.dao = dao;
+        this.highDao = highDao;
+    }
+
+    public ResultVo<Map<String, Object>> selectFullScreenData(HighReportDto dto) {
+        String type = dto.getType();
+        Map<String, Object> map = new HashMap<>(0);
+
+        // 查询数字大屏展示指标
+        List<ReportBaseInfo> reportList = dao.selectFullScreenReport(type);
+
+        // 根据条件查询指标数据
+        for(ReportBaseInfo report : reportList){
+            // 获取数据sql
+            String sql = ReportUtil.callSqlFormat(dto, report.getBaseSql(), report.getGatherSql(), null, null, null);
+            // 查询总览数据结果
+            String overview = highDao.selectReportPortalOverview(report.getReportId(), report.getMenuId(), report.getReportType(), sql);
+            report.setOverview(overview);
+
+            TableGroupInfo info = highDao.selectTableGroupInfoByLevel(report.getReportId(), report.getLevel());
+            if(info == null){
+                info = new TableGroupInfo();
+                info.setFstGroup("dept");
+                info.setFstName("科室");
+            }
+            String sql1 = ReportUtil.callSqlFormatByGroup(dto, report, info, false);
+            // log.info("指标: {}, sql: {}", report.getReportName(), sql1);
+            List<Map<String, Object>> dataList = highDao.selectReportPortalData(report.getReportId(), report.getMenuId(), report.getReportType(), sql1);
+            report.setDataList(dataList);
+
+        }
+
+        map.put("data", reportList);
+        return ResultVoUtil.success(map);
+    }
+
+}

+ 2 - 2
src/main/java/thyyxxk/webserver/utils/ReportUtil.java

@@ -142,10 +142,10 @@ public class ReportUtil {
         if(isPatient){
             // 查询病人不需要分组sql,也不需要聚合函数,需要查询显示所有列并带上钻取条件即可
             gatherSql.append(" t.* ");
-            return callSqlFormat(dto, report.getBaseSql(), gatherSql.toString(), null, dropSql.toString(), null);
+            return callSqlFormat(dto, report.getBaseSql(), gatherSql.toString(), null, dropSql.toString(), report.getReportSort());
         } else {
             gatherSql.append("isnull(rtrim(").append(groupColumn).append("), '").append(OTHER_PARAM).append("') as x, ").append(gatherMainSql).append(" as y ");
-            return callSqlFormat(dto, report.getBaseSql(), gatherSql.toString(), groupColumn, dropSql.toString(), null);
+            return callSqlFormat(dto, report.getBaseSql(), gatherSql.toString(), groupColumn, dropSql.toString(), report.getReportSort());
         }
     }