From b7adb9e5316030aabfb90a8ff1b43c848aa550ec Mon Sep 17 00:00:00 2001
From: zhaowenxuan <chacca165@163.com>
Date: 星期四, 05 六月 2025 12:37:45 +0800
Subject: [PATCH] 小程序查报告接口增加返回检查综述以及医师建议

---
 ltkj-admin/src/main/java/com/ltkj/web/controller/api/DefaultController.java |  201 ++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 192 insertions(+), 9 deletions(-)

diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/api/DefaultController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/api/DefaultController.java
index f321bdd..76e70ae 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/api/DefaultController.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/api/DefaultController.java
@@ -1,23 +1,39 @@
 package com.ltkj.web.controller.api;
 
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.itextpdf.text.Element;
+import com.itextpdf.text.Paragraph;
 import com.ltkj.common.core.domain.AjaxResult;
+import com.ltkj.hosp.domain.TjCustomer;
+import com.ltkj.hosp.domain.TjOrder;
+import com.ltkj.hosp.domain.TjOrderYcxm;
 import com.ltkj.hosp.mapper.TjCustomerMapper;
+import com.ltkj.hosp.service.ITjOrderDetailService;
+import com.ltkj.hosp.service.ITjOrderService;
+import com.ltkj.hosp.service.TjOrderYcxmService;
+import com.ltkj.hosp.vodomain.ShenGaoTiZhongVo;
+import com.ltkj.system.service.ISysConfigService;
+import com.ltkj.web.config.pdfutils.PdfUtils;
 import com.ltkj.web.controller.system.TjCheckController;
 import com.ltkj.web.controller.system.TjReportController;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
-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 org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
+import java.io.File;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.ltkj.framework.datasource.DynamicDataSourceContextHolder.log;
 
 /**
  * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃
@@ -34,6 +50,14 @@
     private TjCheckController tjCheckController;
     @Autowired
     private TjCustomerMapper tjCustomerMapper;
+    @Autowired
+    private ITjOrderService tjOrderService;
+    @Autowired
+    private ITjOrderDetailService detailService;
+    @Autowired
+    private ISysConfigService sysConfigService;
+    @Autowired
+    private TjOrderYcxmService tjOrderYcxmService;
 
     /**
      * 鎻愪緵缁欎笁鏂硅皟鐢ㄧ殑鎶ュ憡鏌ョ湅鎺ュ彛
@@ -44,7 +68,31 @@
     public void viewReport(HttpServletResponse response, @RequestBody String json) throws IOException {
         JSONObject entries = JSONUtil.parseObj(json);
         String tjNum = entries.getStr("tjNum");
+        LambdaQueryWrapper<TjOrder> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(TjOrder::getHeshouStatus,1);
+        wrapper.eq(TjOrder::getTjNumber,tjNum);
+        List<TjOrder> list = tjOrderService.list(wrapper);
+        if (list.isEmpty()){
+            return;
+        }
         tjReportController.preview(response,true,tjNum);
+    }
+
+    @PostMapping("/viewReportUrl")
+    public AjaxResult viewReportUrl(@RequestBody String json){
+        JSONObject entries = JSONUtil.parseObj(json);
+        String tjNum = entries.getStr("tjNum");
+        LambdaQueryWrapper<TjOrder> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(TjOrder::getHeshouStatus,1);
+        wrapper.eq(TjOrder::getTjNumber,tjNum);
+        List<TjOrder> list = tjOrderService.list(wrapper);
+        if (list.isEmpty()){
+            return AjaxResult.error();
+        }
+        TjOrder tjOrder = tjOrderService.getOrderByTjNum(tjNum);
+        TjCustomer tjCustomer = tjCustomerMapper.selectById( tjOrder.getUserId());
+        String filePath = tjCustomer.getCusId() + tjNum + tjCustomer.getCusName() + "_鎶ュ憡.pdf";
+        return AjaxResult.success(filePath);
     }
 
     /**
@@ -55,7 +103,38 @@
     @PostMapping("/reportData")
     public AjaxResult reportData(@RequestBody String json){
         String tjNum = JSONUtil.parseObj(json).getStr("tjNum");
+        LambdaQueryWrapper<TjOrder> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(TjOrder::getHeshouStatus,1);
+        wrapper.eq(TjOrder::getTjNumber,tjNum);
+        List<TjOrder> list = tjOrderService.list(wrapper);
+        if (list.isEmpty()){
+            return AjaxResult.error("鏆傛棤鏁版嵁锛侊紒");
+        }
         JSONObject entries = JSONUtil.parseObj(tjCheckController.updateCheckType(tjNum));
+
+        LambdaQueryWrapper<TjOrderYcxm> wq = new LambdaQueryWrapper<>();
+        wq.eq(TjOrderYcxm::getTjh, tjNum);
+        List<TjOrderYcxm> ycxms = tjOrderYcxmService.list(wq);
+        Map<String, List<TjOrderYcxm>> stringListMap = ycxms.stream()
+                .collect(Collectors.groupingBy(TjOrderYcxm::getParentName));
+        JSONArray jczs = JSONUtil.createArray();
+        JSONArray ysjy = JSONUtil.createArray();
+        int xmXh = 1;
+        for (Map.Entry<String, List<TjOrderYcxm>> entry : stringListMap.entrySet()) {
+            List<TjOrderYcxm> details = entry.getValue();
+            String xmmc = entry.getKey();
+            details.sort(Comparator.comparing(TjOrderYcxm::getJcxm));
+
+            JSONObject jczObject = processDetails(details, xmmc, xmXh, true);
+            jczs.add(jczObject);
+
+            JSONObject ysjyObject = processDetails(details, xmmc, xmXh, false);
+            ysjy.add(ysjyObject);
+        }
+
+        entries.putOpt("jczs", jczs);
+        entries.putOpt("ysjy", ysjy);
+
         removeNullFields(entries);
         return JSONUtil.toBean(entries, AjaxResult.class);
     }
@@ -71,8 +150,18 @@
         JSONObject entries = JSONUtil.parseObj(json);
         String card = entries.getStr("card");
 //        TjCustomer customer = tjCustomerMapper.getCusInfo(card);
-        List<Map<String ,Object>> customer = tjCustomerMapper.getCusInfoList(card);
-        return AjaxResult.success(customer);
+        String key = sysConfigService.selectConfigByKey("h5OrXcxQueryDate");
+        if (StrUtil.isBlank(key)){
+            key = "2025-05-01";
+        }
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        try {
+            Date date = sdf.parse(key);
+            List<Map<String ,Object>> customer = tjCustomerMapper.getCusInfoList(card,date);
+            return AjaxResult.success(customer);
+        } catch (ParseException e) {
+            return AjaxResult.error();
+        }
     }
 
     /**
@@ -86,6 +175,15 @@
         JSONObject entries = JSONUtil.parseObj(json);
         String card = entries.getStr("card");
         String name = entries.getStr("name");
+        if (StrUtil.isBlank(name)){
+            LambdaQueryWrapper<TjCustomer> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(TjCustomer::getCusIdcard,card);
+            wrapper.orderByDesc(TjCustomer::getCusId);
+            wrapper.last("LIMIT 1");
+            TjCustomer customer = tjCustomerMapper.selectOne(wrapper);
+            if (customer == null) return AjaxResult.error();
+            name = customer.getCusName();
+        }
         List<Map<String ,Object>> customer = tjCustomerMapper.getCusInfoListByCardAndName(card,name);
         return AjaxResult.success(customer);
     }
@@ -126,4 +224,89 @@
         }
     }
 
+
+
+    /**
+     * 灏忕▼搴忕偣鍑讳綋妫�鎶ュ憡鏌ヨ璇︽儏,鏄剧ず韬珮浣撻噸浣撻噸鎸囨暟鏀剁缉鍘嬭垝寮犲帇
+     */
+    @GetMapping("/getShenGaoTiZhong")
+    @ApiOperation(value = "灏忕▼搴�-浣撴鎶ュ憡鏌ヨ璇︽儏")
+    public AjaxResult getShenGaoTiZhong(@RequestParam @ApiParam(value = "浣撴鍙�") String tjNumber) {
+//        Map<String, Object> objectMap = new HashMap<>();
+        LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>();
+        wq1.eq(TjOrder::getTjNumber, tjNumber);
+        wq1.eq(TjOrder::getCheckStatus, 1);
+        TjOrder one = tjOrderService.getOne(wq1);
+        if (one == null) {
+            return AjaxResult.success("浣撴鏆傛湭瀹屾垚锛侊紒");
+        }
+
+        List<ShenGaoTiZhongVo> maps = detailService.getShenGaoTiZhongList(one.getTjNumber());
+
+        log.info("ltkj {}鐨勪綋妫�鎶ュ憡鏌ヨ璇︽儏"+maps,tjNumber);
+        return AjaxResult.success(maps);
+
+    }
+
+    private JSONObject processDetails(List<TjOrderYcxm> details, String xmmc, int xmXh, boolean isJcz) {
+        JSONObject object = JSONUtil.createObj();
+        boolean isXmWrite = false;
+        int index = 1;
+        for (TjOrderYcxm detail : details) {
+            if (!isXmWrite) {
+                object.putOpt("xh", xmXh++);
+                object.putOpt("xmmc", xmmc);
+                isXmWrite = true;
+            }
+            String result = detail.getJcjg();
+            if (StrUtil.isNotBlank(result)) {
+                result = result.replaceAll("鏈姤鍛婁粎瀵规湰娆℃鏌ヨ礋璐o紝涓村簥鍖荤敓渚濇嵁鐥呮儏濡傛湁鐤戦棶锛岃鍙婃椂澶嶆煡鎴栬繘涓�姝ユ鏌�", "")
+                        .replaceAll("\n", "").trim();
+                if (StrUtil.isNotBlank(result)) {
+                    StringBuilder builder = new StringBuilder();
+                    builder.append("    (").append(index).append(")").append(detail.getJcxm())
+                            .append(": ").append(result).append("\n");
+                    index++;
+                    result = builder.toString();
+                }
+            }
+
+            if (StrUtil.isNotBlank(result)) {
+                object.putOpt("result", result);
+            } else {
+                object.putOpt("result", isJcz ? result : "寤鸿瀹氭湡澶嶆煡");
+            }
+            if (!isJcz) {
+                JSONArray contents = processJynr(detail.getJynr());
+                object.putOpt("contents", contents);
+            }
+        }
+        return object;
+    }
+
+    private JSONArray processJynr(String jynr) {
+        JSONArray contents = JSONUtil.createArray();
+        List<Map<String, Object>> maps = JSONUtil.parseArray(jynr).stream()
+                .map(o -> {
+                    JSONObject jsonObject = (JSONObject) o;
+                    Map<String, Object> map = new HashMap<>();
+                    String bt = jsonObject.getStr("bt");
+                    String nr = jsonObject.getStr("nr");
+                    if (StrUtil.isNotBlank(bt) || StrUtil.isNotBlank(nr)) {
+                        map.put("bt", bt);
+                        map.put("nr", nr);
+                    }
+                    return map;
+                })
+                .filter(map -> !map.isEmpty())
+                .distinct()
+                .collect(Collectors.toList());
+
+        for (Map<String, Object> map : maps) {
+            String content = "     " + map.get("bt") + map.get("nr");
+            contents.add(StrUtil.isBlank(content) ? "     " : content);
+        }
+        return contents;
+    }
+
 }

--
Gitblit v1.8.0