18个文件已修改
644 ■■■■ 已修改文件
ltkj-admin/src/main/java/com/ltkj/web/controller/api/DefaultController.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisApiController.java 431 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisApiMethod.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysConfigController.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjDwDeptController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/LtkjExamJcsqdMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjJcycxmMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjOrderMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjOrderRemarkMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjOrderRemarkService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjOrderService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/service/LtkjExamJcsqdService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/service/TjJcycxmService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/LtkjExamJcsqdServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjJcycxmServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjOrderRemarkServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjOrderServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/api/DefaultController.java
@@ -5,14 +5,19 @@
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;
@@ -25,10 +30,8 @@
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import static com.ltkj.framework.datasource.DynamicDataSourceContextHolder.log;
@@ -53,6 +56,8 @@
    private ITjOrderDetailService detailService;
    @Autowired
    private ISysConfigService sysConfigService;
    @Autowired
    private TjOrderYcxmService tjOrderYcxmService;
    /**
     * 提供给三方调用的报告查看接口
@@ -106,6 +111,101 @@
            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));
        int xmXh = 1;
        JSONArray jczs = JSONUtil.createArray();
        for (Map.Entry<String, List<TjOrderYcxm>> entry : stringListMap.entrySet()) {
            List<TjOrderYcxm> details = entry.getValue();
            String xmmc = entry.getKey();
            boolean isXmWrite = false;
            int index = 1;
            JSONObject object = JSONUtil.createObj();
            for (TjOrderYcxm detail : details) {
                if (!isXmWrite) {
                    object.putOpt("xh",xmXh);
                    object.putOpt("xmmc",xmmc);
                    xmXh++;
                }
                String result = detail.getJcjg();
                if (StrUtil.isNotBlank(result)) {
                    result = result.replaceAll("本报告仅对本次检查负责,临床医生依据病情如有疑问,请及时复查或进一步检查", "");
                    StringBuilder builder = new StringBuilder();
                    if (StrUtil.isBlank(result.replaceAll("\n", "").trim())) continue;
                    builder.append("    (").append(index).append(")").append(detail.getJcxm()).append(": ").append(result).append("\n");
                    index++;
                    result = builder.toString();
                }
                object.putOpt("result",result);
            }
            jczs.add(object);
        }
        entries.putOpt("jczs",jczs);
        xmXh = 1;
        JSONArray ysjy = JSONUtil.createArray();
        for (Map.Entry<String, List<TjOrderYcxm>> entry : stringListMap.entrySet()) {
            List<TjOrderYcxm> details = entry.getValue();
            if(null !=details && !details.isEmpty()){
                details= details.stream()
                        .sorted(Comparator.comparing(TjOrderYcxm::getJcxm))
                        .collect(Collectors.toList());
                boolean isXmWrite = false;
                int index1 = 1;
                for (TjOrderYcxm detail : details) {
                    JSONObject obj = JSONUtil.createObj();
                    String xmmc = entry.getKey().toString();
                    if (!isXmWrite) {
                        isXmWrite = true;
                        obj.putOpt("xh",xmXh);
                        obj.putOpt("xmmc",xmmc);
                        xmXh++;
                    }
                    String result = detail.getJcjg();
                    if (StrUtil.isNotBlank(result)) {
                        StringBuilder builder = new StringBuilder();
                        if (StrUtil.isBlank(result.replaceAll("\n", "").trim())) continue;
                        builder.append("    (").append(index1).append(")").append(detail.getJcxm()).append(": ").append(result).append("\n");
                        index1++;
                        result = builder.toString();
                    }
                    if (StrUtil.isNotBlank(result)) {
                        obj.putOpt("result",result);
                    } else {
                        obj.putOpt("result","建议定期复查");
                    }
                    String str = "     ";
                    List<Map<String, Object>> maps = new ArrayList<>();
                    String jynr = detail.getJynr();
                    JSONArray array = JSONUtil.parseArray(jynr);
                    for (Object object : array) {
                        Map<String,Object> objectMap=new HashMap<>();
                        JSONObject jsonObject = (JSONObject) object;
                        String bt = jsonObject.getStr("bt");
                        String nr = jsonObject.getStr("nr");
                        objectMap.put("bt",bt);
                        objectMap.put("nr",nr);
                        if(null !=bt || null !=nr) maps.add(objectMap);
                    }
                    ArrayList<String> strings = new ArrayList<>();
                    List<Map<String, Object>> collect1 = maps.stream().distinct().collect(Collectors.toList());
                    for (Map<String, Object> objectMap : collect1) {
                        String content = str + objectMap.get("bt").toString() + objectMap.get("nr").toString();
                        if (StrUtil.isBlank(content)) content = "     ";
                        strings.add(content);
                    }
                    obj.putOpt("contents",strings);
                    ysjy.add(obj);
                }
            }
        }
        entries.putOpt("ysjy",ysjy);
        removeNullFields(entries);
        return JSONUtil.toBean(entries, AjaxResult.class);
    }
ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisApiController.java
@@ -18,6 +18,7 @@
import com.ltkj.hosp.sqlDomain.LtkjHybgd;
import com.ltkj.hosp.sqlDomain.LtkjHysqd;
import com.ltkj.hosp.vodomain.CsProVo;
import com.ltkj.web.controller.system.SysConfigController;
import com.ltkj.web.controller.system.TjCheckController;
import io.swagger.annotations.Api;
import jodd.util.StringUtil;
@@ -63,6 +64,8 @@
    private ITjCustomerService tjCustomerService;
    @Autowired
    private TjJcycxmService jcycxmService;
    @Autowired
    private SysConfigController configController;
    /**
     * 获取pacs检查数据
@@ -111,6 +114,7 @@
    /**
     * 获取pacs检查数据
     *
     * @param json
     * @return
     */
@@ -123,14 +127,14 @@
        String start = StrUtil.isBlank(parseObj.getStr("start")) ? null : parseObj.getStr("start");
        String end = StrUtil.isBlank(parseObj.getStr("end")) ? null : parseObj.getStr("end");
        String mzh = null;
        if (tjNum == null && name == null){
        if (tjNum == null && name == null) {
            return AjaxResult.error("体检号和名字不能都为空");
        }
        if (tjNum != null) {
            TjOrder order = tjOrderService.getOrderByTjNum(tjNum);
            mzh = order.getCardId();
            LambdaQueryWrapper<TjCustomer> wrapper1 = new LambdaQueryWrapper<>();
            wrapper1.eq(TjCustomer::getCusId,order.getUserId());
            wrapper1.eq(TjCustomer::getCusId, order.getUserId());
            TjCustomer tjCustomer = tjCustomerService.getOne(wrapper1);
            name = tjCustomer.getCusName();
        }
@@ -142,6 +146,7 @@
    /**
     * 获取Lis检验数据
     *
     * @param json
     * @return
     */
@@ -154,16 +159,16 @@
        String start = StrUtil.isBlank(parseObj.getStr("start")) ? null : parseObj.getStr("start");
        String end = StrUtil.isBlank(parseObj.getStr("end")) ? null : parseObj.getStr("end");
        String mzh = null;
        if (tjNum == null && name == null){
        if (tjNum == null && name == null) {
            return AjaxResult.error("体检号和名字不能都为空");
        }
        if (tjNum != null) {
            LambdaQueryWrapper<TjOrder> wrapper = new LambdaQueryWrapper<>();
            wrapper.eq(TjOrder::getTjNumber,tjNum);
            wrapper.eq(TjOrder::getTjNumber, tjNum);
            TjOrder order = tjOrderService.getOne(wrapper);
            mzh = order.getCardId();
            LambdaQueryWrapper<TjCustomer> wrapper1 = new LambdaQueryWrapper<>();
            wrapper1.eq(TjCustomer::getCusId,order.getUserId());
            wrapper1.eq(TjCustomer::getCusId, order.getUserId());
            TjCustomer tjCustomer = tjCustomerService.getOne(wrapper1);
            name = tjCustomer.getCusName();
        }
@@ -174,32 +179,32 @@
    }
    @GetMapping("/getTjList")
    public AjaxResult getTjList(@RequestParam("code")String code){
    public AjaxResult getTjList(@RequestParam("code") String code) {
//        log.info("tjList接口参数->{}",code);
        LambdaQueryWrapper<TjOrder> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(TjOrder::getCardId, code)
                .or()
                .eq(TjOrder::getTjNumber, code);
        TjOrder order = tjOrderService.getOne(queryWrapper);
        if (order == null){
            return AjaxResult.error("门诊号:"+code+"在体检系统中不存在");
        if (order == null) {
            return AjaxResult.error("门诊号:" + code + "在体检系统中不存在");
        }
        List<CsProVo> proVos = tjCheckController.getCsProVos(order.getTjNumber(),true);
        return AjaxResult.success(proVos);
//        String json = "[{\"deptName\":\"CT室\",\"proName\":\"(tj)胸部CT平扫\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"},{\"deptName\":\"彩超室\",\"proName\":\"(tj)泌尿系前列腺\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2024-11-06 10:47:15\",\"bcupdateTime\":\"2024-11-06 10:47:15\",\"bcdoctorName\":null,\"zhupdateTime\":\"2024-11-06 10:47:15\"}]";
//        String json = "[{\"proId\":\"1870371396991955206\",\"deptName\":\"DR室\",\"proName\":\"胸部DR正位\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2025-06-05 10:55:43\",\"bcupdateTime\":\"2025-06-05 10:55:43\",\"bcdoctorName\":null,\"imageUrl\":null,\"zhupdateTime\":\"2025-06-05 10:55:43\",\"deptId\":599},{\"proId\":\"1878964342340526298\",\"deptName\":\"彩超室\",\"proName\":\"肝胆脾胰肾彩超\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2025-06-05 10:55:43\",\"bcupdateTime\":\"2025-06-05 10:55:43\",\"bcdoctorName\":null,\"imageUrl\":null,\"zhupdateTime\":\"2025-06-05 10:55:43\",\"deptId\":609},{\"proId\":\"1878964342340526330\",\"deptName\":\"彩超室\",\"proName\":\"膀胱前列腺彩超\",\"type\":0,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2025-06-05 10:55:43\",\"bcupdateTime\":\"2025-06-05 10:55:43\",\"bcdoctorName\":null,\"imageUrl\":null,\"zhupdateTime\":\"2025-06-05 10:55:43\",\"deptId\":609},{\"proId\":\"1870371396991955336\",\"deptName\":\"心电图\",\"proName\":\"心电图检查\",\"type\":1,\"doctorName\":null,\"sffs\":\"统收\",\"isPay\":\"已收费\",\"qdcreateTime\":\"2025-06-05 10:55:43\",\"bcupdateTime\":\"2025-06-05 11:12:50\",\"bcdoctorName\":null,\"imageUrl\":null,\"zhupdateTime\":\"2025-06-05 11:12:50\",\"deptId\":601}]";
//        return AjaxResult.success(JSONUtil.parseArray(json));
    }
    @GetMapping("/getJyTjList")
    public AjaxResult getJyTjList(@RequestParam("code")String code){
    public AjaxResult getJyTjList(@RequestParam("code") String code) {
//        log.info("tjList接口参数->{}",code);
        LambdaQueryWrapper<TjOrder> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(TjOrder::getCardId,code)
        queryWrapper.eq(TjOrder::getCardId, code)
                .or()
                .eq(TjOrder::getTjNumber, code);
        TjOrder order = tjOrderService.getOne(queryWrapper);
        if (order == null){
            return AjaxResult.error("门诊号:"+code+"在体检系统中不存在");
        if (order == null) {
            return AjaxResult.error("门诊号:" + code + "在体检系统中不存在");
        }
        List<CsProVo> proVos = orderRemarkService.cSWebGetProByTjNumAndOrderIdJy(order.getTjNumber());
        if (null != proVos && !proVos.isEmpty()) {
@@ -214,7 +219,7 @@
    @PostMapping("/asyncPacs")
    public AjaxResult asyncPacs(@RequestBody String json) {
        try {
            log.info("合并检测同步参数 ->{}",json);
            log.info("合并检测同步参数 ->{}", json);
//        try {
//            Thread.sleep(2000);
//        } catch (InterruptedException ignored) {
@@ -223,14 +228,14 @@
//        if (true)
//            return AjaxResult.error("同步失败请重试");
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            cn.hutool.json.JSONObject parseObj = JSONUtil.parseObj( json);
            cn.hutool.json.JSONObject parseObj = JSONUtil.parseObj(json);
            cn.hutool.json.JSONObject pacs = parseObj.getJSONObject("pacs");
            cn.hutool.json.JSONArray lis = parseObj.getJSONArray("lis");
            cn.hutool.json.JSONObject tj = parseObj.getJSONObject("tj");
            if (pacs != null && !pacs.isEmpty()){
            if (pacs != null && !pacs.isEmpty()) {
                String tjNum = pacs.getStr("tjnum");
                LambdaQueryWrapper<TjOrder> wrapper1 = new LambdaQueryWrapper<>();
                wrapper1.eq(TjOrder::getTjNumber,tjNum);
                wrapper1.eq(TjOrder::getTjNumber, tjNum);
                TjOrder order = tjOrderService.getOne(wrapper1);
                LtkjExamJcsqd ltkjExamJcsqd = new LtkjExamJcsqd();
@@ -240,23 +245,23 @@
                queryWrapper.eq(LtkjJianchajianyanTree::getCardId, order.getCardId());
                TjProject project = projectService.getById(tj.getStr("proId"));
                String xmdm = project.getHisXmbm();
                if (project.getSfzhfy().equals("N")){
                if (project.getSfzhfy().equals("N")) {
                    LambdaQueryWrapper<TjProject> wrapper = new LambdaQueryWrapper<>();
                    wrapper.eq(TjProject::getProParentId,project.getProId());
                    wrapper.eq(TjProject::getProParentId, project.getProId());
                    List<TjProject> list = projectService.list(wrapper);
                    for (TjProject tjProject : list) {
                        if (StrUtil.isNotBlank(tjProject.getHisXmbm())){
                        if (StrUtil.isNotBlank(tjProject.getHisXmbm())) {
                            xmdm = tjProject.getHisXmbm();
                            break;
                        }
                    }
                }
                queryWrapper.eq(LtkjJianchajianyanTree::getType,"检查");
                queryWrapper.eq(LtkjJianchajianyanTree::getHisXmdm,xmdm);
                queryWrapper.eq(LtkjJianchajianyanTree::getType, "检查");
                queryWrapper.eq(LtkjJianchajianyanTree::getHisXmdm, xmdm);
                LtkjJianchajianyanTree tree = ltkjJianchajianyanTreeService.getOne(queryWrapper);
                ltkjExamJcsqd.setTmh("M_"+tree.getSqdh()+"_"+tree.getHisXmdm());
                ltkjExamJcsqd.setTmh("M_" + tree.getSqdh() + "_" + tree.getHisXmdm());
                ltkjExamJcsqd.setBgys(pacs.getStr("checkDoctorName"));
                ltkjExamJcsqd.setBgysid(pacs.getStr("checkDoctorCode"));
                ltkjExamJcsqd.setSqsj(format.format(tree.getCreateTime()));
@@ -269,8 +274,8 @@
                    ltkjExamJcsqd.setJgsj(format.format(new Date()));
                }
                String checkParts = pacs.getStr("checkParts");
    //            ltkjExamJcsqd.setJcxmmc(checkParts);
    //            ltkjExamJcsqd.setJcxmid(xmdm);
                //            ltkjExamJcsqd.setJcxmmc(checkParts);
                //            ltkjExamJcsqd.setJcxmid(xmdm);
                ltkjExamJcsqd.setJcxmmc(project.getProName());
                ltkjExamJcsqd.setJcxmid(project.getProId().toString());
@@ -281,35 +286,43 @@
                ltkjExamJcsqd.setSgorzd("1");
                ltkjExamJcsqd.setCreateTime(new Date());
                ltkjExamJcsqdService.deletedLtkjJcsqdByTjhAndXmId(ltkjExamJcsqd.getTjh(),ltkjExamJcsqd.getJcxmid());
                ltkjExamJcsqdService.deletedLtkjJcsqdByTjhAndXmId(ltkjExamJcsqd.getTjh(), ltkjExamJcsqd.getJcxmid());
                boolean save1 = ltkjExamJcsqdService.save(ltkjExamJcsqd);
                log.info("手动同步检查结果状态 ->{}",ltkjExamJcsqd.getJgzt());
                if(StringUtil.isNotBlank(ltkjExamJcsqd.getJgzt())){
                    jcycxmService.deletedByTjh(order.getTjNumber());
          /*      log.info("手动同步检查结果状态 ->{}", ltkjExamJcsqd.getJgzt());
                if (StringUtil.isNotBlank(ltkjExamJcsqd.getJgzt())) {
//                    jcycxmService.deletedByTjh(order.getTjNumber());
                    jcycxmService.deletedByTjhAndXmm(order.getTjNumber(),ltkjExamJcsqd.getJcxmmc());
                    String[] split = ltkjExamJcsqd.getJgzt().replaceAll("\n", "").split("。|;|;|,|,");
                    log.info("进入检查结果异常提取分割方法体 ->{}->{}",order.getTjNumber(),split);
                    log.info("进入检查结果异常提取分割方法体 ->{}->{}", order.getTjNumber(), split);
                    for (String jg : split) {
                        if(StringUtil.isNotBlank(jg) && !jg.contains("未见异常")
                        if (StringUtil.isNotBlank(jg) && !jg.contains("未见异常")
                                && !jg.contains("未见明显异常") && !jg.contains("未见占位") && !jg.contains("未见")
                                && !jg.contains("未见明显")&& !jg.contains("正常")&& !jg.contains("双侧椎间孔无狭窄")){
                            TjJcycxm jcycxm=new TjJcycxm();
                            jcycxm.setTjh(order.getTjNumber());
                            jcycxm.setYqid("jczyy");
                            String[] split1 = ltkjExamJcsqd.getJcxmid().split(";");
                            jcycxm.setProId(split1[0]);
                            jcycxm.setProName(ltkjExamJcsqd.getJcxmmc());
                            jcycxm.setCreateTime(new Date());
                            jcycxm.setJcjg(jg);
                            jcycxmService.save(jcycxm);
                                && !jg.contains("未见明显") && !jg.contains("正常") && !jg.contains("双侧椎间孔无狭窄")) {
                            log.info("进入检查结果异常提取  即将保存检查异常结果->{}->{}", order.getTjNumber(), jg);
                            try {
                                TjJcycxm jcycxm = new TjJcycxm();
                                jcycxm.setTjh(order.getTjNumber());
                                jcycxm.setYqid("jczyy");
                                String[] split1 = ltkjExamJcsqd.getJcxmid().split(";");
                                jcycxm.setProId(split1[0]);
                                jcycxm.setProName(ltkjExamJcsqd.getJcxmmc());
                                jcycxm.setCreateTime(new Date());
                                jcycxm.setJcjg(jg);
                                jcycxmService.save(jcycxm);
                            } catch (Exception e) {
                                logger.error("保存检查异常结果失败",e);
                                throw new RuntimeException(e);
                            }
                            log.info("进入检查结果异常提取  保存检查异常结果完毕");
                        }
                    }
                }
*/
                LtkjExamJcbgd ltkjExamJcbgd = new LtkjExamJcbgd();
                ltkjExamJcbgd.setTjh(ltkjExamJcsqd.getTjh());
                ltkjExamJcbgd.setTmh(ltkjExamJcsqd.getTmh());
    //            ltkjExamJcbgd.setXmdm(ltkjExamJcsqd.getJcxmid());
    //            ltkjExamJcbgd.setXmmc(ltkjExamJcsqd.getJcxmmc());
                //            ltkjExamJcbgd.setXmdm(ltkjExamJcsqd.getJcxmid());
                //            ltkjExamJcbgd.setXmmc(ltkjExamJcsqd.getJcxmmc());
                ltkjExamJcbgd.setXmdm(project.getProId().toString());
                ltkjExamJcbgd.setXmmc(project.getProName());
@@ -317,8 +330,8 @@
                ltkjExamJcbgd.setBgUrl("");
                ltkjExamJcbgd.setShysxm(pacs.getStr("reportDoctorName"));
                ltkjExamJcbgd.setShysdm(pacs.getStr("reportDoctorCode"));
    //            ltkjExamJcbgd.setYxzd(ltkjExamJcsqd.getJgzt());
    //            ltkjExamJcbgd.setYxbx(ltkjExamJcsqd.getJgbx());
                //            ltkjExamJcbgd.setYxzd(ltkjExamJcsqd.getJgzt());
                //            ltkjExamJcbgd.setYxbx(ltkjExamJcsqd.getJgbx());
                ltkjExamJcbgd.setZdsj(ltkjExamJcsqd.getJgsj());
                ltkjExamJcbgd.setSqsj(ltkjExamJcsqd.getSqsj());
                ltkjExamJcbgd.setJcbw(ltkjExamJcsqd.getJcxmmc());
@@ -327,12 +340,15 @@
                ltkjExamJcbgd.setYxzd(ltkjExamJcsqd.getJgzt());
                ltkjExamJcbgd.setSgorzd("1");
                ltkjExamJcsqd.setCreateTime(new Date());
                ltkjExamJcbgdService.deletedLtkjJcbgdByTjhAndTmhA(ltkjExamJcsqd.getTjh(),ltkjExamJcsqd.getTmh());
                ltkjExamJcbgdService.deletedLtkjJcbgdByTjhAndTmhA(ltkjExamJcsqd.getTjh(), ltkjExamJcsqd.getTmh());
                boolean save2 = ltkjExamJcbgdService.save(ltkjExamJcbgd);
                if (save1 && save2) {
                    try {
                        testMapper.updateDetailByTjJcCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), UserHoder.getLoginUser().getUserId());
                    }catch (Exception e){
                        configController.tjjcycxm(tjNum,  "0");
//                        testMapper.updateDetailByTjJcCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), UserHoder.getLoginUser().getUserId());
                        orderRemarkService.updateTjOrderRemarkByTjzt(order.getTjNumber(),project.getProId().toString());
                    } catch (Exception e) {
                        log.error(String.valueOf(e));
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                        return AjaxResult.error("同步失败请重试");
@@ -342,7 +358,7 @@
                    return AjaxResult.error("同步失败请重试");
                }
                return AjaxResult.success();
            }else {
            } else {
                cn.hutool.json.JSONObject entries = (cn.hutool.json.JSONObject) lis.get(0);
                String tjNum = entries.getStr("tjNum");
                LtkjHysqd hysqd = new LtkjHysqd();
@@ -354,8 +370,8 @@
                queryWrapper.eq(LtkjJianchajianyanTree::getCardId, mzh);
                TjProject project = projectService.getById(tj.getStr("proId"));
                String xmdm = project.getHisXmbm();
                queryWrapper.eq(LtkjJianchajianyanTree::getType,"检验");
                queryWrapper.eq(LtkjJianchajianyanTree::getHisXmdm,xmdm);
                queryWrapper.eq(LtkjJianchajianyanTree::getType, "检验");
                queryWrapper.eq(LtkjJianchajianyanTree::getHisXmdm, xmdm);
                LtkjJianchajianyanTree tree = ltkjJianchajianyanTreeService.getOne(queryWrapper);
                String tmh;
                if (tree == null) {
@@ -364,22 +380,22 @@
                    tree.setCreateTime(new Date());
                    String sqdh = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + String.valueOf(RandomUtil.randomInt(0, 99999));
                    queryWrapper = new LambdaQueryWrapper<>();
                    queryWrapper.eq(LtkjJianchajianyanTree::getSqdh,sqdh);
                    queryWrapper.eq(LtkjJianchajianyanTree::getSqdh, sqdh);
                    if (ltkjJianchajianyanTreeService.getOne(queryWrapper) == null) {
                        tree.setSqdh(sqdh);
                    }else {
                        while (true){
                    } else {
                        while (true) {
                            sqdh = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + String.valueOf(RandomUtil.randomInt(0, 99999));
                            queryWrapper = new LambdaQueryWrapper<>();
                            queryWrapper.eq(LtkjJianchajianyanTree::getSqdh,sqdh);
                            queryWrapper.eq(LtkjJianchajianyanTree::getSqdh, sqdh);
                            if (ltkjJianchajianyanTreeService.getOne(queryWrapper) == null) {
                                tree.setSqdh(sqdh);
                                break;
                            }
                        }
                    }
                    tmh = tree.getSqdh()+"_"+tree.getHisXmdm();
                }else{
                    tmh = tree.getSqdh() + "_" + tree.getHisXmdm();
                } else {
                    tmh = tree.getSqdh();
                }
                String shys = "";
@@ -387,17 +403,18 @@
                    cn.hutool.json.JSONObject jsonObject = (cn.hutool.json.JSONObject) o;
                    if (StrUtil.isNotBlank(jsonObject.getStr("jyxh"))) tmh = jsonObject.getStr("jyxh");
                    if (StrUtil.isNotBlank(jsonObject.getStr("shys"))) shys = jsonObject.getStr("shys");
                    if (StrUtil.isNotBlank(tmh) && StrUtil.isNotBlank(shys) && StrUtil.isNotBlank(jsonObject.getStr("jyxh"))) break;
                    if (StrUtil.isNotBlank(tmh) && StrUtil.isNotBlank(shys) && StrUtil.isNotBlank(jsonObject.getStr("jyxh")))
                        break;
                }
                hysqd.setTmh(tmh);
    //            if (StrUtil.isNotBlank(xmdm)) {
    //                hysqd.setXmid(xmdm);
    //                hysqd.setXmmc(project.getHisXmmc());
    //            }else {
    //                hysqd.setXmid(String.valueOf(project.getProId()));
    //                hysqd.setXmmc(project.getProName());
    //            }
                //            if (StrUtil.isNotBlank(xmdm)) {
                //                hysqd.setXmid(xmdm);
                //                hysqd.setXmmc(project.getHisXmmc());
                //            }else {
                //                hysqd.setXmid(String.valueOf(project.getProId()));
                //                hysqd.setXmmc(project.getProName());
                //            }
                hysqd.setXmid(project.getProId().toString());
                hysqd.setXmmc(project.getProName());
@@ -406,8 +423,8 @@
                hysqd.setJgsj(format.format(new Date()));
                hysqd.setShrxm(shys);
                hysqd.setCreateTime(new Date());
    //            hysqd.setBbmc();
                hysqdService.deletedByTjhAndXmId(hysqd.getTjh(),hysqd.getXmid());
                //            hysqd.setBbmc();
                hysqdService.deletedByTjhAndXmId(hysqd.getTjh(), hysqd.getXmid());
                hybgdService.deletedLtkjHybgdByTjhAndTmh(tmh);
                hysqdService.save(hysqd);
                for (Object object : lis) {
@@ -421,7 +438,7 @@
                    String tjStandardGtValue = jsonObject.getStr("tjStandardGtValue");
                    String zdz = "";
                    String zxz = "";
                    if (tjStandardGtValue.contains("-")){
                    if (tjStandardGtValue.contains("-")) {
                        String[] split = tjStandardGtValue.split("-");
                        zxz = split[0].trim();
                        zdz = split[1].trim();
@@ -438,8 +455,278 @@
                    hybgdService.save(hybgd);
                }
                try {
                    testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), UserHoder.getLoginUser().getUserId());
                }catch (Exception e){
//                    testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), UserHoder.getLoginUser().getUserId());
                    orderRemarkService.updateTjOrderRemarkByTjzt(order.getTjNumber(),project.getProId().toString());
                } catch (Exception e) {
                    log.error(String.valueOf(e));
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    return AjaxResult.error("同步失败请重试");
                }
                return AjaxResult.success();
            }
        } catch (NoTransactionException e) {
            log.error(String.valueOf(e));
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return AjaxResult.error("同步失败请重试");
        }
    }
    @Transactional
    @PostMapping("/newasyncPacs")
    public AjaxResult newasyncPacs(@RequestBody String json) {
        try {
            log.info("合并检测同步参数 ->{}", json);
//        try {
//            Thread.sleep(2000);
//        } catch (InterruptedException ignored) {
//
//        }
//        if (true)
//            return AjaxResult.error("同步失败请重试");
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            cn.hutool.json.JSONObject parseObj = JSONUtil.parseObj(json);
            cn.hutool.json.JSONArray pacss = parseObj.getJSONArray("pacs");
            cn.hutool.json.JSONArray lis = parseObj.getJSONArray("lis");
            cn.hutool.json.JSONObject tj = parseObj.getJSONObject("tj");
            if (pacss != null && !pacss.isEmpty()) {
                cn.hutool.json.JSONObject entries = (cn.hutool.json.JSONObject) pacss.get(0);
                String tjNum = entries.getStr("tjNum");
                LambdaQueryWrapper<TjOrder> wrapper1 = new LambdaQueryWrapper<>();
                wrapper1.eq(TjOrder::getTjNumber, tjNum);
                TjOrder order = tjOrderService.getOne(wrapper1);
                for (Object o : pacss) {
                    cn.hutool.json.JSONObject pacs = (cn.hutool.json.JSONObject) o;
                    if (pacs != null && !pacs.isEmpty()) {
                        LtkjExamJcsqd ltkjExamJcsqd = new LtkjExamJcsqd();
                        ltkjExamJcsqd.setTjh(order.getCardId());
                        LambdaQueryWrapper<LtkjJianchajianyanTree> queryWrapper = new LambdaQueryWrapper<>();
                        queryWrapper.eq(LtkjJianchajianyanTree::getCardId, order.getCardId());
                        TjProject project = projectService.getById(tj.getStr("proId"));
                        String xmdm = project.getHisXmbm();
                        if (project.getSfzhfy().equals("N")) {
                            LambdaQueryWrapper<TjProject> wrapper = new LambdaQueryWrapper<>();
                            wrapper.eq(TjProject::getProParentId, project.getProId());
                            List<TjProject> list = projectService.list(wrapper);
                            for (TjProject tjProject : list) {
                                if (StrUtil.isNotBlank(tjProject.getHisXmbm())) {
                                    xmdm = tjProject.getHisXmbm();
                                    break;
                                }
                            }
                        }
                        queryWrapper.eq(LtkjJianchajianyanTree::getType, "检查");
                        queryWrapper.eq(LtkjJianchajianyanTree::getHisXmdm, xmdm);
                        LtkjJianchajianyanTree tree = ltkjJianchajianyanTreeService.getOne(queryWrapper);
                        String brid = pacs.getStr("brid");
                        ltkjExamJcsqd.setTmh(brid + tree.getHisXmdm());
                        ltkjExamJcsqd.setBgys(pacs.getStr("checkDoctorName"));
                        ltkjExamJcsqd.setBgysid(pacs.getStr("checkDoctorCode"));
                        ltkjExamJcsqd.setSqsj(format.format(tree.getCreateTime()));
                        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
                        Date reportDate = null;
                        try {
                            reportDate = dateFormat.parse(pacs.getStr("reportDate"));
                            ltkjExamJcsqd.setJgsj(format.format(reportDate));
                        } catch (ParseException ignored) {
                            ltkjExamJcsqd.setJgsj(format.format(new Date()));
                        }
                        String checkParts = pacs.getStr("checkParts");
                        //            ltkjExamJcsqd.setJcxmmc(checkParts);
                        //            ltkjExamJcsqd.setJcxmid(xmdm);
                        ltkjExamJcsqd.setJcxmmc(project.getProName());
                        ltkjExamJcsqd.setJcxmid(project.getProId().toString());
                        ltkjExamJcsqd.setBw(checkParts);
                        ltkjExamJcsqd.setJgzt(pacs.getStr("diagnosis"));
                        ltkjExamJcsqd.setJgbx(pacs.getStr("examination"));
                        ltkjExamJcsqd.setSgorzd("1");
                        ltkjExamJcsqd.setCreateTime(new Date());
//                        ltkjExamJcsqdService.deletedLtkjJcsqdByTjhAndXmId(ltkjExamJcsqd.getTjh(), ltkjExamJcsqd.getJcxmid());
                        ltkjExamJcsqdService.sdtbdeletedLtkjJcsqdByTjhandtmh(ltkjExamJcsqd.getTjh(), ltkjExamJcsqd.getTmh());
                        boolean save1 = ltkjExamJcsqdService.save(ltkjExamJcsqd);
          /*              log.info("手动同步检查结果状态 ->{}", ltkjExamJcsqd.getJgzt());
                        if (StringUtil.isNotBlank(ltkjExamJcsqd.getJgzt())) {
//                            jcycxmService.deletedByTjh(order.getTjNumber());
                            jcycxmService.deletedByTjhAndXmm(order.getTjNumber(),ltkjExamJcsqd.getJcxmmc());
                            String[] split = ltkjExamJcsqd.getJgzt().replaceAll("\n", "").split("。|;|;|,|,");
                            log.info("进入检查结果异常提取分割方法体 ->{}->{}", order.getTjNumber(), split);
                            for (String jg : split) {
                                if (StringUtil.isNotBlank(jg) && !jg.contains("未见异常")
                                        && !jg.contains("未见明显异常") && !jg.contains("未见占位") && !jg.contains("未见")
                                        && !jg.contains("未见明显") && !jg.contains("正常") && !jg.contains("双侧椎间孔无狭窄")) {
                                     log.info("进入检查结果异常提取  即将保存检查异常结果->{}->{}", order.getTjNumber(), jg);
                                    try {
                                        TjJcycxm jcycxm = new TjJcycxm();
                                        jcycxm.setTjh(order.getTjNumber());
                                        jcycxm.setYqid("jczyy");
                                        String[] split1 = ltkjExamJcsqd.getJcxmid().split(";");
                                        jcycxm.setProId(split1[0]);
                                        jcycxm.setProName(ltkjExamJcsqd.getJcxmmc());
                                        jcycxm.setCreateTime(new Date());
                                        jcycxm.setJcjg(jg);
                                        jcycxmService.save(jcycxm);
                                    } catch (Exception e) {
                                        log.error("保存检查异常结果失败",e);
                                        throw new RuntimeException(e);
                                    }
                                    log.info("进入检查结果异常提取  保存检查异常结果完毕");
                                }
                            }
                        }*/
                        LtkjExamJcbgd ltkjExamJcbgd = new LtkjExamJcbgd();
                        ltkjExamJcbgd.setTjh(ltkjExamJcsqd.getTjh());
                        ltkjExamJcbgd.setTmh(ltkjExamJcsqd.getTmh());
                        //            ltkjExamJcbgd.setXmdm(ltkjExamJcsqd.getJcxmid());
                        //            ltkjExamJcbgd.setXmmc(ltkjExamJcsqd.getJcxmmc());
                        ltkjExamJcbgd.setXmdm(project.getProId().toString());
                        ltkjExamJcbgd.setXmmc(project.getProName());
                        ltkjExamJcbgd.setBgUrl("");
                        ltkjExamJcbgd.setShysxm(pacs.getStr("reportDoctorName"));
                        ltkjExamJcbgd.setShysdm(pacs.getStr("reportDoctorCode"));
                        //            ltkjExamJcbgd.setYxzd(ltkjExamJcsqd.getJgzt());
                        //            ltkjExamJcbgd.setYxbx(ltkjExamJcsqd.getJgbx());
                        ltkjExamJcbgd.setZdsj(ltkjExamJcsqd.getJgsj());
                        ltkjExamJcbgd.setSqsj(ltkjExamJcsqd.getSqsj());
                        ltkjExamJcbgd.setJcbw(ltkjExamJcsqd.getJcxmmc());
                        ltkjExamJcbgd.setBgNr(ltkjExamJcsqd.getJgbx());
                        ltkjExamJcbgd.setYxbx(ltkjExamJcsqd.getJgzt());
                        ltkjExamJcbgd.setYxzd(ltkjExamJcsqd.getJgzt());
                        ltkjExamJcbgd.setSgorzd("1");
                        ltkjExamJcsqd.setCreateTime(new Date());
                        ltkjExamJcbgdService.deletedLtkjJcbgdByTjhAndTmhA(ltkjExamJcsqd.getTjh(), ltkjExamJcsqd.getTmh());
                        boolean save2 = ltkjExamJcbgdService.save(ltkjExamJcbgd);
                        if (save1 && save2) {
                            try {
                                configController.tjjcycxm(tjNum,  "0");
//                                testMapper.updateDetailByTjJcCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), UserHoder.getLoginUser().getUserId());
                                orderRemarkService.updateTjOrderRemarkByTjzt(order.getTjNumber(),project.getProId().toString());
                            } catch (Exception e) {
                                log.error(String.valueOf(e));
                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                return AjaxResult.error("同步失败请重试");
                            }
                        } else {
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                            return AjaxResult.error("同步失败请重试");
                        }
                    }
                }
                return AjaxResult.success();
            } else {
                cn.hutool.json.JSONObject entries = (cn.hutool.json.JSONObject) lis.get(0);
                String tjNum = entries.getStr("tjNum");
                LtkjHysqd hysqd = new LtkjHysqd();
                TjOrder order = tjOrderService.getOrderByTjNum(tjNum);
                hysqd.setTjh(order.getCardId());
                String mzh = order.getCardId();
                LambdaQueryWrapper<LtkjJianchajianyanTree> queryWrapper = new LambdaQueryWrapper<>();
                queryWrapper.eq(LtkjJianchajianyanTree::getCardId, mzh);
                TjProject project = projectService.getById(tj.getStr("proId"));
                String xmdm = project.getHisXmbm();
                queryWrapper.eq(LtkjJianchajianyanTree::getType, "检验");
                queryWrapper.eq(LtkjJianchajianyanTree::getHisXmdm, xmdm);
                LtkjJianchajianyanTree tree = ltkjJianchajianyanTreeService.getOne(queryWrapper);
                String tmh;
                if (tree == null) {
                    tree = new LtkjJianchajianyanTree();
                    tree.setHisXmdm(xmdm);
                    tree.setCreateTime(new Date());
                    String sqdh = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + String.valueOf(RandomUtil.randomInt(0, 99999));
                    queryWrapper = new LambdaQueryWrapper<>();
                    queryWrapper.eq(LtkjJianchajianyanTree::getSqdh, sqdh);
                    if (ltkjJianchajianyanTreeService.getOne(queryWrapper) == null) {
                        tree.setSqdh(sqdh);
                    } else {
                        while (true) {
                            sqdh = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + String.valueOf(RandomUtil.randomInt(0, 99999));
                            queryWrapper = new LambdaQueryWrapper<>();
                            queryWrapper.eq(LtkjJianchajianyanTree::getSqdh, sqdh);
                            if (ltkjJianchajianyanTreeService.getOne(queryWrapper) == null) {
                                tree.setSqdh(sqdh);
                                break;
                            }
                        }
                    }
                    tmh = tree.getSqdh() + "_" + tree.getHisXmdm();
                } else {
                    tmh = tree.getSqdh();
                }
                String shys = "";
                for (Object o : lis) {
                    cn.hutool.json.JSONObject jsonObject = (cn.hutool.json.JSONObject) o;
                    if (StrUtil.isNotBlank(jsonObject.getStr("jyxh"))) tmh = jsonObject.getStr("jyxh");
                    if (StrUtil.isNotBlank(jsonObject.getStr("shys"))) shys = jsonObject.getStr("shys");
                    if (StrUtil.isNotBlank(tmh) && StrUtil.isNotBlank(shys) && StrUtil.isNotBlank(jsonObject.getStr("jyxh")))
                        break;
                }
                hysqd.setTmh(tmh);
                //            if (StrUtil.isNotBlank(xmdm)) {
                //                hysqd.setXmid(xmdm);
                //                hysqd.setXmmc(project.getHisXmmc());
                //            }else {
                //                hysqd.setXmid(String.valueOf(project.getProId()));
                //                hysqd.setXmmc(project.getProName());
                //            }
                hysqd.setXmid(project.getProId().toString());
                hysqd.setXmmc(project.getProName());
                hysqd.setSqsj(format.format(tree.getCreateTime()));
                hysqd.setJgsj(format.format(new Date()));
                hysqd.setShrxm(shys);
                hysqd.setCreateTime(new Date());
                //            hysqd.setBbmc();
                hysqdService.deletedByTjhAndXmId(hysqd.getTjh(), hysqd.getXmid());
                hybgdService.deletedLtkjHybgdByTjhAndTmh(tmh);
                hysqdService.save(hysqd);
                for (Object object : lis) {
                    cn.hutool.json.JSONObject jsonObject = (cn.hutool.json.JSONObject) object;
                    LtkjHybgd hybgd = new LtkjHybgd();
                    hybgd.setTmh(tmh);
                    hybgd.setJcxmid(jsonObject.getStr("jcxmid"));
                    hybgd.setJcxm(jsonObject.getStr("proName"));
                    hybgd.setJyjg(jsonObject.getStr("proResult"));
                    hybgd.setJgdw(jsonObject.getStr("company"));
                    String tjStandardGtValue = jsonObject.getStr("tjStandardGtValue");
                    String zdz = "";
                    String zxz = "";
                    if (tjStandardGtValue.contains("-")) {
                        String[] split = tjStandardGtValue.split("-");
                        zxz = split[0].trim();
                        zdz = split[1].trim();
                    }
                    hybgd.setFwzdz(zdz);
                    hybgd.setFwzgz(zxz);
                    hybgd.setFwz(tjStandardGtValue);
                    hybgd.setJysj(jsonObject.getStr("examinationDate"));
                    hybgd.setShsj(jsonObject.getStr("examinationDate"));
                    hybgd.setJyys(jsonObject.getStr("checkDoctorName"));
                    hybgd.setShysmc(shys);
                    hybgd.setYcbz(jsonObject.getStr("ycbz"));
                    hybgd.setCreateTime(new Date());
                    hybgdService.save(hybgd);
                }
                try {
//                    testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), UserHoder.getLoginUser().getUserId());
                    orderRemarkService.updateTjOrderRemarkByTjzt(order.getTjNumber(),project.getProId().toString());
                } catch (Exception e) {
                    log.error(String.valueOf(e));
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    return AjaxResult.error("同步失败请重试");
@@ -460,7 +747,7 @@
        System.out.println(json.toJSONString());
        String tjNumber = json.get("tjNumber").toString();
        String reportName = json.get("reportName").toString();
        System.out.println("用户: "+tjNumber+reportName+" 已打印");
        System.out.println("用户: " + tjNumber + reportName + " 已打印");
    }
}
ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisApiMethod.java
@@ -2018,20 +2018,22 @@
                LambdaQueryWrapper<TjProject> wrapper1 = new LambdaQueryWrapper<>();
                wrapper1.in(TjProject::getProParentId,strings);
                wrapper1.eq(TjProject::getProStatus,0);
                wrapper1.eq(TjProject::getDeleted,0);
                wrapper1.groupBy(TjProject::getProId);
                List<TjProject> tjProjectList = projectService.list(wrapper1);
                Map<String, List<TjProject>> listMap = tjProjectList.stream().collect(Collectors.groupingBy(TjProject::getSpecimenType));
                log.info("分组后 ->{}",JSONUtil.toJsonStr(listMap));
                boolean save = lisApiMethod.save(listMap, tjOrder, customer);
                if (!save) {
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    return AjaxResult.error("处理失败");
                if(null !=  tjProjectList && !tjProjectList.isEmpty()){
                    Map<String, List<TjProject>> listMap = tjProjectList.stream().collect(Collectors.groupingBy(TjProject::getSpecimenType));
                    log.info("分组后 ->{}",JSONUtil.toJsonStr(listMap));
                    boolean save = lisApiMethod.save(listMap, tjOrder, customer);
                    if (!save) {
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                        return AjaxResult.error("处理失败");
                    }
                    for (TjSampling tjSampling : list) {
                        tjSampling.setIsSignFor("0");
                    }
                    tjSamplingService.updateBatchById(list);
                }
                for (TjSampling tjSampling : list) {
                    tjSampling.setIsSignFor("0");
                }
                tjSamplingService.updateBatchById(list);
            }else{
                try {
                    LambdaQueryWrapper<TjSampling> wrapper = new LambdaQueryWrapper<>();
ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysConfigController.java
@@ -412,20 +412,28 @@
    @GetMapping ("/tjjcycxm")//同步his项目单价信息
//    @PreAuthorize("@ss.hasPermi('system:config:tbhisproprice')")
    @ApiOperation (value = "tjjcycxm")
    public AjaxResult tjjcycxm(@RequestParam(required = false)@ApiParam(value = "体检号") String tjh) {
    public AjaxResult tjjcycxm(@RequestParam(required = false)@ApiParam(value = "体检号") String tjh,
                               @RequestParam(defaultValue = "0",required = false)@ApiParam(value = "0 仅同步未审核人员 1所有人") String lx) {
        String yqbm = configService.selectConfigByKey("dqyyyqbm");
        if(StringUtil.isNotBlank(tjh)){
            zongjianshengchengyichangxiangmu(tjh, yqbm);
            return AjaxResult.success();
        }
        List<String> jc = orderService.getJianChaTjNum();
        if (null != jc && !jc.isEmpty()) {
            for (String s : jc) {
                zongjianshengchengyichangxiangmu(s, yqbm);
        }else {
            List<String> jc =null;
            if(lx.equals("0")){
                jc = orderService.getJianChaTjNumWsh();
            }else {
                jc = orderService.getJianChaTjNum();
            }
            if (null != jc && !jc.isEmpty()) {
                for (String s : jc) {
                    zongjianshengchengyichangxiangmu(s, yqbm);
                }
            }
            return AjaxResult.success();
        }
        return AjaxResult.success();
    }
    public void zongjianshengchengyichangxiangmu(String s, String yqbm) {
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjDwDeptController.java
@@ -117,6 +117,9 @@
    @DeleteMapping("/{ids}")
    @ApiOperation(value = "删除单位部门信息")
    public AjaxResult remove(@PathVariable String[] ids) {
        if (!dwGroupingService.list(new LambdaQueryWrapper<TjDwGrouping>().in(TjDwGrouping::getDwDeptId,Arrays.asList(ids))).isEmpty()){
            return AjaxResult.error("该部门下有分组信息,请先删除分组信息!");
        }
        return toAjax(dwDeptService.removeByIds(Arrays.asList(ids)));
    }
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java
@@ -1416,8 +1416,8 @@
                        remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
                        List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
                        xdPictureService.saveBatch(xdPictureList);
                        List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
                        addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
//                        List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
//                        addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
                        log.info("调用his开启 进入不收费方法 该方法执行完毕");
                    } else {
                        log.info("调用his开启 进入收费方法 该体检人员收费:"+tjOrder.getTjNumber());
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/LtkjExamJcsqdMapper.java
@@ -31,6 +31,9 @@
    @Delete ("DELETE FROM ltkj_exam_jcsqd WHERE tjh=#{tjh} and tmh=#{tmh}   and lx=1 ")
    void  deletedLtkjJcsqdByTjhandtmh(@Param("tjh") String tjh,@Param("tmh") String tmh);
    @Delete ("DELETE FROM ltkj_exam_jcsqd WHERE tjh=#{tjh} and tmh=#{tmh}   and lx=0 ")
    void  sdtbdeletedLtkjJcsqdByTjhandtmh(@Param("tjh") String tjh,@Param("tmh") String tmh);
    @Delete ("DELETE FROM ltkj_exam_jcsqd WHERE tjh=#{tjh} and lx=1 ")
    void  deletedLtkjJcsqdByTjhandtmh1(@Param("tjh") String tjh);
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjJcycxmMapper.java
@@ -4,6 +4,7 @@
import com.ltkj.hosp.domain.TjJcycxm;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * ClassName: TjJcycxmMapper <br/>
@@ -16,4 +17,8 @@
public interface TjJcycxmMapper extends BaseMapper<TjJcycxm> {
    @Delete("DELETE FROM tj_jcycxm  WHERE tjh=#{s}")
    void deletedByTjh(String s);
    @Delete("DELETE FROM tj_jcycxm  WHERE tjh= #{s} AND pro_name=#{xmmc}")
    void deletedByTjhAndXmm(@Param("s") String s,@Param("xmmc") String xmmc);
}
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjOrderMapper.java
@@ -388,6 +388,14 @@
    List<String> getJianChaTjNum();
    @Select("SELECT a.tj_number FROM tj_order a WHERE a.deleted=0 AND a.check_status=0 AND\n" +
            "ISNULL(a.report_time)")
    List<String> getJianChaTjNumWsh();
    List<List<?>> getYxJcList(Map<String,Object> map);
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjOrderRemarkMapper.java
@@ -312,4 +312,9 @@
    @Select("call tj_yxjcymxx(#{tjh,mode=IN},#{ks,mode=IN})")
    List<CsProVo> getYxJcXx(@Param("tjh")String tjNumber,@Param("ks")String ks);
    @Update("UPDATE tj_order_remark a " +
            "SET a.type=1 WHERE a.tj_number=#{tjNumber} and a.pro_id=#{proId}")
    int updateTjOrderRemarkByTjzt(@Param("tjNumber") String tjNumber,@Param("proId") String proId);
}
ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjOrderRemarkService.java
@@ -102,4 +102,6 @@
    List<TjOrderRemark> shoufeiyemianweishoufei(String tjNumber,String jxbz);
    List<CsProVo> getYxJcXx(String tjNumber,String ks);
    int updateTjOrderRemarkByTjzt(String tjNumber,String proId);
}
ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjOrderService.java
@@ -185,6 +185,8 @@
    List<String> getJianChaTjNum();
    List<String> getJianChaTjNumWsh();
    void tjQiandaodengji(String tjNum);
    void tjLispacstongbujianyi(String tjNumber, Long deptId,String nickName, Long userId);
ltkj-hosp/src/main/java/com/ltkj/hosp/service/LtkjExamJcsqdService.java
@@ -25,6 +25,9 @@
    void  deletedLtkjJcsqdByTjhandtmh(String tjh,String tmh);
    void  sdtbdeletedLtkjJcsqdByTjhandtmh(String tjh,String tmh);
    void  deletedLtkjJcsqdByTjhandtmh1(String tjh);
    List<LtkjExamJcsqd> getLtkjJcsqdByTjh(String tjh);
ltkj-hosp/src/main/java/com/ltkj/hosp/service/TjJcycxmService.java
@@ -14,4 +14,6 @@
public interface TjJcycxmService extends IService<TjJcycxm> {
    void deletedByTjh(String s);
    void deletedByTjhAndXmm(String s,String xmmc);
}
ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/LtkjExamJcsqdServiceImpl.java
@@ -62,6 +62,11 @@
    }
    @Override
    public void sdtbdeletedLtkjJcsqdByTjhandtmh(String tjh, String tmh) {
        mapper.sdtbdeletedLtkjJcsqdByTjhandtmh(tjh,tmh);
    }
    @Override
    public void deletedLtkjJcsqdByTjhandtmh1(String tjh) {
        mapper.deletedLtkjJcsqdByTjhandtmh1(tjh);
    }
ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjJcycxmServiceImpl.java
@@ -24,4 +24,9 @@
    public void deletedByTjh(String s) {
        mapper.deletedByTjh(s);
    }
    @Override
    public void deletedByTjhAndXmm(String s, String xmmc) {
        mapper.deletedByTjhAndXmm(s,xmmc);
    }
}
ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjOrderRemarkServiceImpl.java
@@ -209,4 +209,9 @@
        return yxJcXx;
    }
    @Override
    public int updateTjOrderRemarkByTjzt(String tjNumber,String proId) {
        return mapper.updateTjOrderRemarkByTjzt(tjNumber, proId);
    }
}
ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjOrderServiceImpl.java
@@ -422,6 +422,11 @@
    }
    @Override
    public List<String> getJianChaTjNumWsh() {
        return tjOrderMapper.getJianChaTjNumWsh();
    }
    @Override
    public void tjQiandaodengji(String tjNum) {
        Map<String, Object> map = new HashMap<>();
        map.put("tjNum",tjNum);