فهرست منبع

可视化报表

xiaochan 4 سال پیش
والد
کامیت
6bfa6a1da5

+ 39 - 0
src/main/java/thyyxxk/webserver/controller/jimubaobiao/jiMuBaoBiaoController.java

@@ -0,0 +1,39 @@
+package thyyxxk.webserver.controller.jimubaobiao;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import thyyxxk.webserver.entity.ResultVo;
+import thyyxxk.webserver.entity.querydata.BaoBiaoChaXun;
+import thyyxxk.webserver.service.jimubaobiao.jiMuBaoBiaoService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 描述: 积木报表
+ * </p>
+ *
+ * @author xc
+ * @date 2021-09-02 10:20
+ */
+@RequestMapping("/jiMuBaoBiao")
+@RestController
+public class jiMuBaoBiaoController {
+
+    private final jiMuBaoBiaoService service;
+
+    public jiMuBaoBiaoController(jiMuBaoBiaoService service) {
+        this.service = service;
+    }
+
+    @GetMapping("/zhuYuanShiJianChao")
+    public ResultVo<Map<String, List<BaoBiaoChaXun>>> zhuYuanShiJianChao(@RequestParam("startTime") String startTime,
+                                                                         @RequestParam("endTime") String endTime) {
+        return service.zhuYuanShiJianChao(startTime, endTime);
+    }
+
+
+}

+ 42 - 0
src/main/java/thyyxxk/webserver/dao/his/jimubaobiao/jiMuBaoBiaoDao.java

@@ -0,0 +1,42 @@
+package thyyxxk.webserver.dao.his.jimubaobiao;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import thyyxxk.webserver.entity.querydata.BaoBiaoChaXun;
+
+import java.math.BigDecimal;
+import java.sql.Timestamp;
+import java.util.List;
+
+/**
+ * <p>
+ * 描述: 积木报表
+ * </p>
+ *
+ * @author xc
+ * @date 2021-09-02 10:22
+ */
+@Mapper
+public interface jiMuBaoBiaoDao {
+
+
+    @Select("select '超30天' name,count(*) value,'天' unit " +
+            "from zy_inactpatient where admiss_date >= #{startTime} and admiss_date <= #{endTime} " +
+            "and date_part('day',  cast(dis_date as TIMESTAMP) - cast(admiss_date as TIMESTAMP)) > 30 " +
+            "union all " +
+            "select '未超30天' name,count(*) value,'天' unit from zy_inactpatient where admiss_date >= #{startTime} and admiss_date <= #{endTime} " +
+            "and date_part('day',  cast(dis_date as TIMESTAMP) - cast(admiss_date as TIMESTAMP)) < 30;")
+    List<BaoBiaoChaXun> huanZheZhuYuanChao(@Param("startTime") Timestamp startTime,
+                                           @Param("endTime") Timestamp endTime);
+
+    @Select("select date_part('day',cast(dis_date as TIMESTAMP) - cast(admiss_date as TIMESTAMP)) tian_shu from zy_inactpatient " +
+            "where admiss_date >= #{startTime} and admiss_date <= #{endTime}")
+    List<BigDecimal> huanZheRuYuanJianGe(@Param("startTime") Timestamp startTime,
+                                         @Param("endTime") Timestamp endTime);
+
+    @Select("select count(*) count from zy_inactpatient where admiss_date >= #{startTime} and admiss_date <= #{endTime}")
+    BigDecimal huanZheRenShu(@Param("startTime") Timestamp startTime,
+                             @Param("endTime") Timestamp endTime);
+
+}

+ 27 - 0
src/main/java/thyyxxk/webserver/entity/querydata/BaoBiaoChaXun.java

@@ -0,0 +1,27 @@
+package thyyxxk.webserver.entity.querydata;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 描述: 报表数据
+ * </p>
+ *
+ * @author xc
+ * @date 2021-09-03 10:51
+ */
+@Data
+public class BaoBiaoChaXun {
+    private String name;
+    private BigDecimal value;
+
+    private String unit;
+
+    public BaoBiaoChaXun(String name, BigDecimal value, String unit) {
+        this.name = name;
+        this.value = value;
+        this.unit = unit;
+    }
+}

+ 76 - 0
src/main/java/thyyxxk/webserver/service/jimubaobiao/jiMuBaoBiaoService.java

@@ -0,0 +1,76 @@
+package thyyxxk.webserver.service.jimubaobiao;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import thyyxxk.webserver.config.exception.ExceptionEnum;
+import thyyxxk.webserver.dao.his.jimubaobiao.jiMuBaoBiaoDao;
+import thyyxxk.webserver.entity.ResultVo;
+import thyyxxk.webserver.entity.querydata.BaoBiaoChaXun;
+import thyyxxk.webserver.utils.ResultVoUtil;
+import thyyxxk.webserver.utils.StringUtil;
+
+import java.math.BigDecimal;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 描述: 积木报表
+ * </p>
+ *
+ * @author xc
+ * @date 2021-09-02 10:21
+ */
+@Service
+@Slf4j
+@DS("jimu")
+public class jiMuBaoBiaoService {
+
+    @Value("${jmbb-url}")
+    private String jmbbUrl;
+
+    private final jiMuBaoBiaoDao dao;
+
+    public jiMuBaoBiaoService(jiMuBaoBiaoDao dao) {
+        this.dao = dao;
+    }
+
+
+    /**
+     * 住院超 30 天
+     *
+     * @return 返回积木报表链接
+     */
+    public ResultVo<Map<String, List<BaoBiaoChaXun>>> zhuYuanShiJianChao(String startTime, String endTime) {
+        if (StringUtil.isBlank(startTime) || StringUtil.isBlank(endTime)) {
+            return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER);
+        }
+        Map<String, List<BaoBiaoChaXun>> map = new HashMap<>();
+        map.put("huanZheChao30", dao.huanZheZhuYuanChao(Timestamp.valueOf(startTime), Timestamp.valueOf(endTime)));
+
+        List<BigDecimal> huanZheZhuYuanTianShu = dao.huanZheRuYuanJianGe(Timestamp.valueOf(startTime), Timestamp.valueOf(endTime));
+        // 患者的全部住院天数
+        BigDecimal sum = new BigDecimal(0);
+        for (BigDecimal integer : huanZheZhuYuanTianShu) {
+            sum = sum.add(integer);
+        }
+        // 患者的总人数
+        BigDecimal huanZheRenShu = dao.huanZheRenShu(Timestamp.valueOf(startTime), Timestamp.valueOf(endTime));
+        // 患者的平均住院天数
+        BigDecimal pingJunZhuYuanTianShu = sum.divide(huanZheRenShu, 2, BigDecimal.ROUND_HALF_UP);
+        List<BaoBiaoChaXun> list = new ArrayList<>();
+        list.add(new BaoBiaoChaXun("总住院天数", sum, "天"));
+        list.add(new BaoBiaoChaXun("患者的总人数", huanZheRenShu, "人"));
+        list.add(new BaoBiaoChaXun("平均住院天数", pingJunZhuYuanTianShu, "天"));
+        map.put("pingJunZhuYuan", list);
+
+        log.info("开始时间:{},结束时间:{}", startTime, endTime);
+        return ResultVoUtil.success(map);
+    }
+
+}

+ 5 - 0
src/main/resources/META-INF/additional-spring-configuration-metadata.json

@@ -84,6 +84,11 @@
       "name": "si-qrcode-url",
       "type": "java.lang.String",
       "description": "Description for si-qrcode-url."
+    },
+    {
+      "name": "jmbb-url",
+      "type": "java.lang.String",
+      "description": "Description for jmbb-url."
     }
   ]
 }