瀏覽代碼

新冠流调报告现在可以导出了。

lighter 3 年之前
父節點
當前提交
7da245d389

+ 7 - 6
src/main/java/thyyxxk/webserver/controller/examinations/CovidExamController.java

@@ -8,28 +8,29 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.examinations.covidexam.QueryCovidExamParam;
+import thyyxxk.webserver.service.examinations.CovidAssessmentService;
 import thyyxxk.webserver.service.examinations.CovidExamService;
 
-import javax.servlet.http.HttpServletResponse;
 import java.util.Map;
 
 @RestController
 @RequestMapping("/covidExamReport")
 public class CovidExamController {
     private final CovidExamService service;
+    private final CovidAssessmentService assmntService;
 
     @Autowired
-    public CovidExamController(CovidExamService service) {
+    public CovidExamController(CovidExamService service, CovidAssessmentService assmntService) {
         this.service = service;
+        this.assmntService = assmntService;
     }
 
     @PostMapping("/queryResult")
     public ResultVo<Map<String, Object>> queryResult(@RequestBody @Validated QueryCovidExamParam param) {
+        if (param.getType() == 3) {
+            return assmntService.queryResult(param);
+        }
         return service.queryResult(param);
     }
 
-    @PostMapping("/exportExcel")
-    public void exportExcel(HttpServletResponse response, @RequestBody @Validated QueryCovidExamParam param) {
-        service.exportExcel(response, param);
-    }
 }

+ 29 - 0
src/main/java/thyyxxk/webserver/dao/his/examinations/Covid19AssessmentDao.java

@@ -0,0 +1,29 @@
+package thyyxxk.webserver.dao.his.examinations;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import thyyxxk.webserver.entity.examinations.covidexam.CovidExamResult;
+
+@Mapper
+public interface Covid19AssessmentDao {
+
+    @Select("select name as ptntName, idcard, patient_id, addr_additional=isnull(addr_additional,''), " +
+            "phone, addrProvince=(select t.name from t_region t where t.code=addr_province), " +
+            "addrCity=(select t.name from t_region t where t.code=addr_city), " +
+            "addrDistrict=(select t.name from t_region t where t.code=addr_district), " +
+            "temperature=case when temperature=1 then '正常' else '发烧' end, " +
+            "fever_number, date, " +
+            "item1=(case when item1=11 then '中高风险地区' when item1=12 then '境外其他国家' " +
+            "when item1=13 then '新冠肺炎确诊病例社区' else '都没有' end), " +
+            "item2=(case when item2=21 then '中高风险地区' when item2=22 then '境外其他国家' " +
+            "when item2=23 then '新冠肺炎确诊病例社区' else '都没有' end), " +
+            "item3=(case when item3=31 then '有' else '没有' end), " +
+            "item4=(case when item4=41 then '有' else '没有' end), " +
+            "item5=(case when item5=51 then '有' else '没有' end), " +
+            "item6=(case when item6=61 then '绿色' when item6=62 then '黄色' " +
+            "when item6=63 then '红色' else '' end), " +
+            "symptoms as symptomsString from t_covid19_assessment where date>=#{start} and date<=#{end}")
+    IPage<CovidExamResult> selectAssessments(IPage<CovidExamResult> iPage, @Param("start") String start, @Param("end") String end);
+}

+ 1 - 0
src/main/java/thyyxxk/webserver/dao/lis/CovidExamDao.java

@@ -34,4 +34,5 @@ public interface CovidExamDao {
             "and (b.audt_time >= #{start} and b.audt_time < #{end}) " +
             "order by audt_time, REPLICATE(0,20-len(b.smpl_num))+b.smpl_num")
     IPage<CovidExamResult> selectKtResult(IPage<CovidExamResult> iPage, @Param("start") String start, @Param("end") String end);
+
 }

+ 24 - 0
src/main/java/thyyxxk/webserver/entity/examinations/covidexam/CovidExamResult.java

@@ -5,6 +5,7 @@ import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
+import java.util.List;
 
 @Data
 public class CovidExamResult {
@@ -15,4 +16,27 @@ public class CovidExamResult {
     @DateTimeFormat(pattern = "yyyy/MM/dd HH:mm:ss")
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy/MM/dd HH:mm:ss", shape = JsonFormat.Shape.STRING)
     private Date ordrCreateDate;
+
+    /**
+     * 流调报告
+     * */
+    private String patientId;
+    private String phone;
+    private String addrProvince;
+    private String addrCity;
+    private String addrDistrict;
+    private String addrAdditional;
+    private String address;
+    private String temperature;
+    private String feverNumber;
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date date;
+    private String item1;
+    private String item2;
+    private String item3;
+    private String item4;
+    private String item5;
+    private String item6;
+    private String symptomsString;
 }

+ 70 - 0
src/main/java/thyyxxk/webserver/service/examinations/CovidAssessmentService.java

@@ -0,0 +1,70 @@
+package thyyxxk.webserver.service.examinations;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import thyyxxk.webserver.constants.Capacity;
+import thyyxxk.webserver.dao.his.examinations.Covid19AssessmentDao;
+import thyyxxk.webserver.entity.ResultVo;
+import thyyxxk.webserver.entity.examinations.covidexam.CovidExamResult;
+import thyyxxk.webserver.entity.examinations.covidexam.QueryCovidExamParam;
+import thyyxxk.webserver.utils.ResultVoUtil;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@Service
+public class CovidAssessmentService {
+    private final Covid19AssessmentDao dao;
+
+    public CovidAssessmentService(Covid19AssessmentDao dao) {
+        this.dao = dao;
+    }
+
+    public ResultVo<Map<String, Object>> queryResult(QueryCovidExamParam param) {
+        log.info("查询新冠检测结果:{}", JSON.toJSONString(param));
+        IPage<CovidExamResult> iPage = new Page<>(param.getCurrentPage(), param.getPageSize());
+        iPage = dao.selectAssessments(iPage, param.getStart(), param.getEnd());
+        Map<String, Object> map = new HashMap<>(Capacity.TWO);
+        map.put("totalSize", iPage.getTotal());
+        List<CovidExamResult> list = iPage.getRecords();
+        list.forEach(itm -> {
+            itm.setAddress(itm.getAddrProvince() + itm.getAddrCity() + itm.getAddrDistrict() + itm.getAddrAdditional());
+            String[] symps = itm.getSymptomsString()
+                    .replace("[", "")
+                    .replace("]", "")
+                    .replaceAll(" ", "")
+                    .split(",");
+            if (symps.length > 0) {
+                StringBuilder sb = new StringBuilder();
+                for (String s : symps) {
+                    switch (s) {
+                        case "511":
+                            sb.append(",发热");
+                            break;
+                        case "512":
+                            sb.append(",咳嗽");
+                            break;
+                        case "513":
+                            sb.append(",乏力");
+                            break;
+                        case "514":
+                            sb.append(",腹泻/呕吐");
+                            break;
+                    }
+                }
+                if (sb.length() > 1) {
+                    itm.setSymptomsString(sb.substring(1, sb.length()));
+                } else {
+                    itm.setSymptomsString("");
+                }
+            }
+        });
+        map.put("list", list);
+        return ResultVoUtil.success(map);
+    }
+}

+ 0 - 21
src/main/java/thyyxxk/webserver/service/examinations/CovidExamService.java

@@ -11,13 +11,9 @@ import thyyxxk.webserver.dao.lis.CovidExamDao;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.examinations.covidexam.CovidExamResult;
 import thyyxxk.webserver.entity.examinations.covidexam.QueryCovidExamParam;
-import thyyxxk.webserver.utils.DateUtil;
-import thyyxxk.webserver.utils.ExcelUtil;
 import thyyxxk.webserver.utils.ResultVoUtil;
 
-import javax.servlet.http.HttpServletResponse;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 /**
@@ -42,23 +38,6 @@ public class CovidExamService {
         return ResultVoUtil.success(map);
     }
 
-    public void exportExcel(HttpServletResponse response, QueryCovidExamParam param) {
-        log.info("导出新冠检测Excel: {}", JSON.toJSONString(param));
-        IPage<CovidExamResult> iPage = getCovidExamResultPage(param);
-        List<CovidExamResult> list = iPage.getRecords();
-        String[] title = {"姓名", "身份证", "检测结果", "送检时间"};
-        String[][] content = new String[list.size()][];
-        for (int i = 0; i < list.size(); i++) {
-            content[i] = new String[title.length];
-            CovidExamResult result = list.get(i);
-            content[i][0] = result.getPtntName();
-            content[i][1] = result.getIdCard();
-            content[i][2] = result.getItmStrValue();
-            content[i][3] = DateUtil.formatDatetime(result.getOrdrCreateDate());
-        }
-        ExcelUtil.exportExcel(response, title, content);
-    }
-
     private IPage<CovidExamResult> getCovidExamResultPage(QueryCovidExamParam param) {
         IPage<CovidExamResult> iPage = new Page<>(param.getCurrentPage(), param.getPageSize());
         if (param.getType() == 1) {