zjh
2025-03-25 dc9f340fa83555c30655a0e42c175a91d81d65d2
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCheckController.java
@@ -37,6 +37,7 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import jodd.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
import lombok.var;
import org.aspectj.weaver.AjAttribute;
@@ -49,6 +50,7 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.Collator;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -56,6 +58,8 @@
import static com.ltkj.framework.datasource.DynamicDataSourceContextHolder.log;
import static org.apache.poi.hemf.record.emfplus.HemfPlusRecordType.save;
import static org.apache.poi.hemf.record.emfplus.HemfPlusRecordType.setClipRect;
import static org.jeecg.modules.jmreport.dyndb.util.b.a;
import static org.jeecg.modules.jmreport.dyndb.util.b.e;
/**
 * @Author: 西安路泰科技有限公司/赵佳豪
@@ -122,49 +126,65 @@
    private RedissonClient redissonClient;
    @Autowired
    private ITjRulesService rulesService;
    @Autowired
    private ITjProAdvicerulesService tjProAdvicerulesService;
    @Autowired
    private TjOrderYcxmService ycxmService;
    @Autowired
    private SysConfigController configController;
    @Autowired
    private TjJcycxmService jcycxmService;
    @GetMapping ("/ceshicc")
    @ApiOperation (value = "测试调用存储过程耗时接口")
    @RepeatSubmit
//    @Transactional
    public AjaxResult ceshicc(String s) {
    public AjaxResult ceshicc() {
        Map<String,Object> map=new HashMap<>();
        List<List<?>> tjpled = testMapper.tjplUpdateDetatilByVi(map);
        log.info(tjpled.toString());
        Integer object = (Integer) map.get("total");
        return AjaxResult.success(object);
        List<LtkjExamJcsqd> jcsqdList = testMapper.getCcXZxYyPacsLtkjExamJcsqd1("8003241206085556");
        if(null !=jcsqdList && !jcsqdList.isEmpty()){
            jcsqdService.deletedLtkjJcsqdByTjhAndTmh("8003241206085556");
            jcbgdService.deletedLtkjJcbgdByTjhAndTmh("8003241206085556");
            jcsqdService.saveBatch(jcsqdList);
            List<LtkjExamJcbgd> jcbgdList = testMapper.getCcXZxYyPacsLtkjExamJcbgd1("8003241206085556");
            if(null != jcbgdList && !jcbgdList.isEmpty())jcbgdService.saveBatch(jcbgdList);
            DynamicDataSourceContextHolder.clearDataSourceType();
        }
        return AjaxResult.success();
    }
    @GetMapping ("/ceshi")
    @ApiOperation (value = "测试调用lis视图数据接口")
    @RepeatSubmit
//    @Transactional
    public AjaxResult ceshi() {
        List<Map<String, Object>> ccXZxYyLisJgSt = testMapper.getCcXZxYyLisJgSt();
        return AjaxResult.success(ccXZxYyLisJgSt);
    }
//    @GetMapping ("/ceshi")
//    @ApiOperation (value = "测试调用lis视图数据接口")
//    @RepeatSubmit
////    @Transactional
//    public AjaxResult ceshi() {
//        List<Map<String, Object>> ccXZxYyLisJgSt = testMapper.getCcXZxYyLisJgSt();
//        return AjaxResult.success(ccXZxYyLisJgSt);
//    }
    @GetMapping ("/pacs")
    @ApiOperation (value = "测试调用pacs视图数据接口")
    @RepeatSubmit
    public AjaxResult pacs() {
        List<Map<String, Object>> ccXZxYyPacsJgSt = testMapper.getCcXZxYyPacsJgSt();
//    @GetMapping ("/pacs")
//    @ApiOperation (value = "测试调用pacs视图数据接口")
//    @RepeatSubmit
//    public AjaxResult pacs() {
//        List<Map<String, Object>> ccXZxYyPacsJgSt = testMapper.getCcXZxYyPacsJgSt();
//
//        List<LtkjExamJcsqd> list = testMapper.getCcXZxYyPacsLtkjExamJcsqd("");
//
//        log.info(list.toString());
//
//        List<LtkjExamJcbgd> list1 = testMapper.getCcXZxYyPacsLtkjExamJcbgd("");
//
//        log.info(list1.toString());
//
//        return AjaxResult.success(ccXZxYyPacsJgSt);
//    }
        List<LtkjExamJcsqd> list = testMapper.getCcXZxYyPacsLtkjExamJcsqd("");
        log.info(list.toString());
        List<LtkjExamJcbgd> list1 = testMapper.getCcXZxYyPacsLtkjExamJcbgd("");
        log.info(list1.toString());
        return AjaxResult.success(ccXZxYyPacsJgSt);
    }
    @GetMapping ("/getOperationPermissionsByTjNum")
    @ApiOperation (value = "(初审页面  和 医生页面)根据体检号获取是否可操作权限接口  true可操作  反之不可")
@@ -192,6 +212,7 @@
                                @ApiParam (value = "体检单号") @RequestParam (required = false) String tjNumber,
                                @ApiParam (value = "单位") @RequestParam (required = false) Long compId,
                                @ApiParam (value = "姓名)") @RequestParam (required = false) String name,
                                @ApiParam (value = "套餐名)") @RequestParam (required = false) String tcm,
                                @ApiParam (value = "开始时间") @RequestParam (required = false) String beginTime,
                                @ApiParam (value = "结束时间") @RequestParam (required = false) String endTime) {
@@ -277,7 +298,8 @@
        if (name == null) name = "";
        if (beginTime == null) beginTime = "";
        if (endTime == null) endTime = "";
        return AjaxResult.success(orderService.getCsCunChuGuoChengCustomerList(tjNumber, page, pageSize, checkStatus, value, beginTime, endTime, name));
        if (tcm == null) tcm = "";
        return AjaxResult.success(orderService.getCsCunChuGuoChengCustomerList(tjNumber, page, pageSize, checkStatus, value, beginTime, endTime, name,tcm));
    }
@@ -384,7 +406,7 @@
    @RepeatSubmit
//    @Transactional
    public AjaxResult dataSynchronization(@RequestParam String tjNumber) {
        String dqyyyqbm = configService.selectConfigByKey("dqyyyqbm");
        RLock lock = redissonClient.getLock("lock:check:dataSynchronization:" + tjNumber);
        try {
            boolean tryLock = lock.tryLock(3L, TimeUnit.SECONDS);
@@ -545,7 +567,7 @@
                            maps.put("ksbm", "体检中心");
                            maps.put("pagecount", 100);
                            maps.put("page", 1);
//                    AjaxResult results = service.getHISDataNew("Getexamreportinfo", maps);
                            LambdaQueryWrapper<HisApiConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
                            lambdaQueryWrapper.eq(HisApiConfig::getApiMethod, "Getexamreportinfo");
@@ -553,7 +575,15 @@
                            /*同步检查 his存储过程*/
                            AjaxResult results = jcsqdService.getTjJcProByHisCall("体检中心", order.getCardId(), "''", 100, 1, "'1'");
                            String jctbfs = configService.selectConfigByKey("jctbfs");
                            AjaxResult results =null;
                            if (jctbfs.equalsIgnoreCase("Y")){
                                results = service.getHISDataNew("Getexamreportinfo", maps);
                            }else{
                                results = jcsqdService.getTjJcProByHisCall("体检中心", order.getCardId(), "''", 100, 1, "'1'");
                            }
                            DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
                            DynamicDataSourceContextHolder.clearDataSourceType();
@@ -641,7 +671,7 @@
                        return AjaxResult.success("同步成功");
                    }
                    else if(null !=sfkqdshitulianjie && sfkqdshitulianjie.equalsIgnoreCase("Y")){
                        List<LtkjHysqd> hysqdList = testMapper.getCcXZxYyLtkjHysqdByLisVi(order.getTjNumber());
                        List<LtkjHysqd> hysqdList = testMapper.getCcXZxYyLtkjHysqdByLisVi(order.getTjNumber(),dqyyyqbm);
                        if(null != hysqdList && !hysqdList.isEmpty()){
                            for (LtkjHysqd hysqd : hysqdList) {
                                LtkjHysqd jybgid = ltkjHysqdService.getLtkjHysqdByTjhAndTmh(hysqd.getTjh(),hysqd.getTmh());
@@ -656,7 +686,7 @@
                            }
                            DynamicDataSourceContextHolder.clearDataSourceType();
                        }
                        List<LtkjExamJcsqd> jcsqdList = testMapper.getCcXZxYyPacsLtkjExamJcsqd(order.getTjNumber());
                        List<LtkjExamJcsqd> jcsqdList = testMapper.getCcXZxYyPacsLtkjExamJcsqd(order.getTjNumber(),dqyyyqbm);
                        if(null !=jcsqdList && !jcsqdList.isEmpty()){
                            jcsqdService.deletedLtkjJcsqdByTjhAndTmh(order.getCardId());
                            jcbgdService.deletedLtkjJcbgdByTjhAndTmh(order.getCardId());
@@ -683,7 +713,7 @@
            }
            return AjaxResult.error("该人员数据正在同步中,请稍等");
        } catch (InterruptedException e) {
            e.printStackTrace();
            log.error(String.valueOf(e),e.getMessage());
            return AjaxResult.error("该人员数据正在同步中,请稍等");
        }finally {
            lock.unlock();
@@ -707,7 +737,7 @@
                String doctorId = configService.selectConfigByKey("request_default_check_doctorId");
                //根据配置调取存储过程 将临时表数据存入预约表2023.12.12
                final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData");
                String dqyyyqbm = configService.selectConfigByKey("dqyyyqbm");
                final String sfkqdyhis = configService.selectConfigByKey("sfkqdyhis");
                TjOrder order = orderService.getOrderByTjNum(tjNumber);
                if (null != order) {
@@ -716,17 +746,21 @@
                    if ("Y".equals(getInfoFromSqlData)) {
                        tbhyxm(order);
                        //同步化验项目
                        testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), doctorId);
//                        testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), doctorId);
                        //同步检查项目
                        testMapper.updateDetailByTjJcCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), doctorId);
//                        testMapper.updateDetailByTjJcCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), doctorId);
                        asyncService.updateCheckType(order.getTjNumber());
                    }
                    // 11:42:04.617 [http-nio-5000-exec-72] ERROR c.a.d.p.DruidDataSource - [init,905] - init datasource error, url: jdbc:sqlserver://192.168.10.2:1433;DatabaseName=hospital;&characterEncoding=utf8
                    //com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“No appropriate protocol (protocol is disabled or cipher suites are inappropriate)”。
                    //
                    //开启和his对接
                    if (null != sfkqdyhis && sfkqdyhis.equals("Y")) {
                        List<String> baoGaoDans = ltkjHybgdService.getJianYanBaoGaoDan(order.getCardId());
                        List<String> jianChaBaoGaoDan = ltkjHybgdService.getJianChaBaoGaoDan(order.getCardId());
                        //同步检验
                        String resultMsg = "";
                        if (null != baoGaoDans && !baoGaoDans.isEmpty()) {
                            Date dates = new Date();
                            Map<String, Object> map = new HashMap<>();
@@ -741,43 +775,53 @@
                            String result1 = getAjaxResult(result);
                            JSONObject object = getJSONObject(result1);
                            String code = object.getStr("ResultCode");
                            if (null == code || !code.equals("0")) {
                                return AjaxResult.error("化验项目暂时未出结果,请稍后同步!!!");
                            }
                            JSONArray data = object.getJSONArray("ResultData");
                            for (Object datum : data) {
                                JSONObject jsonObject = (JSONObject) datum;
                                boolean isInsertHysqd = false;
                                LtkjHysqd hysqd = new LtkjHysqd();
                                hysqd.setTjh(order.getCardId());
                                hysqd.setTmh(jsonObject.getStr("JYBGID"));
                                hysqd.setBbbh(jsonObject.getStr("BBDM"));
                                hysqd.setBbmc(jsonObject.getStr("BBMC"));
                                hysqd.setXmid(jsonObject.getStr("JYXMDM"));
                                hysqd.setXmmc(jsonObject.getStr("JYXMMC"));
                                hysqd.setSqsj(jsonObject.getStr("SQRQ"));
                                hysqd.setSqys(jsonObject.getStr("SQRBH"));
                                hysqd.setJgsj(jsonObject.getStr("JYBGRQ"));
                                hysqd.setSqrxm(jsonObject.getStr("SQRXM"));
                                hysqd.setSqdh(jsonObject.getStr("SQDBH"));
                                hysqd.setShrdm(jsonObject.getStr("JYYSBH"));
                                hysqd.setShrxm(jsonObject.getStr("JYYSQM"));
                                hysqd.setJybgjg(jsonObject.getStr("JYBGJG"));
                                QueryWrapper<LtkjHysqd> queryWrapper = new QueryWrapper<>(hysqd);
                                List<LtkjHysqd> list = ltkjHysqdService.list(queryWrapper);
                                if (list.isEmpty())
                                    isInsertHysqd = true;
                                if (isInsertHysqd){
                                    saveHysqd(hysqd);
                                }else {
                                    saveHybgd(hysqd);
//                            if (null == code || !code.equals("0")) {
//                                return AjaxResult.error("化验项目暂时未出结果,请稍后同步!!!");
//                            }
                            if(null != code && code.equals("0")) {
                                JSONArray data = object.getJSONArray("ResultData");
                                for (Object datum : data) {
                                    JSONObject jsonObject = (JSONObject) datum;
                                    LtkjHysqd jybgid = ltkjHysqdService.getLtkjHysqdByTjhAndTmh(order.getCardId(), jsonObject.getStr("JYBGID"));
                                    if (null != jybgid) {
                                        ltkjHysqdService.deletedLtkjHysqdByTjhAndTmh(order.getCardId(), jsonObject.getStr("JYBGID"));
                                        ltkjHybgdService.deletedLtkjHybgdByTjhAndTmh(jybgid.getTmh());
                                    }
                                    boolean isInsertHysqd = false;
                                    LtkjHysqd hysqd = new LtkjHysqd();
                                    hysqd.setTjh(order.getCardId());
                                    hysqd.setTmh(jsonObject.getStr("JYBGID"));
                                    hysqd.setBbbh(jsonObject.getStr("BBDM"));
                                    hysqd.setBbmc(jsonObject.getStr("BBMC"));
                                    hysqd.setXmid(jsonObject.getStr("JYXMDM"));
                                    hysqd.setXmmc(jsonObject.getStr("JYXMMC"));
                                    hysqd.setSqsj(jsonObject.getStr("SQRQ"));
                                    hysqd.setSqys(jsonObject.getStr("SQRBH"));
                                    hysqd.setJgsj(jsonObject.getStr("JYBGRQ"));
                                    hysqd.setSqrxm(jsonObject.getStr("SQRXM"));
                                    hysqd.setSqdh(jsonObject.getStr("SQDBH"));
                                    hysqd.setShrdm(jsonObject.getStr("JYYSBH"));
                                    hysqd.setShrxm(jsonObject.getStr("JYYSQM"));
                                    hysqd.setJybgjg(jsonObject.getStr("JYBGJG"));
                                    hysqd.setCreateTime(new Date());
                                    QueryWrapper<LtkjHysqd> queryWrapper = new QueryWrapper<>(hysqd);
                                    List<LtkjHysqd> list = ltkjHysqdService.list(queryWrapper);
                                    if (list.isEmpty())
                                        isInsertHysqd = true;
                                    if (isInsertHysqd) {
                                        saveHysqd(hysqd);
                                    } else {
                                        saveHybgd(hysqd);
                                    }
                                }
                            }else{
                                resultMsg = "化验项目暂时未出结果,请稍后同步!!!";
                            }
                            //同步化验项目
                            testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), doctorId);
                        }
                        /*同步检查 his接口*/
                        if (null != jianChaBaoGaoDan && jianChaBaoGaoDan.size() > 0) {
                        if (null != jianChaBaoGaoDan && !jianChaBaoGaoDan.isEmpty()) {
                            Map<String, Object> maps = new HashMap<>();
                            maps.put("his_registration_id", order.getCardId());
                            maps.put("ksbm", "体检中心");
@@ -787,8 +831,14 @@
                            lambdaQueryWrapper.eq(HisApiConfig::getApiMethod, "Getexamreportinfo");
                            HisApiConfig hisApiConfig = hisApiConfigService.getOne(lambdaQueryWrapper);
                            /*同步检查 his存储过程*/
                            AjaxResult results = jcsqdService.getTjJcProByHisCall("体检中心", order.getCardId(), "''", 100, 1, "'1'");
                            DynamicDataSourceContextHolder.clearDataSourceType();
                            String jctbfs = configService.selectConfigByKey("jctbfs");
                            AjaxResult results =null;
                            if (jctbfs.equalsIgnoreCase("Y")){
                                results = service.getHISDataNew("Getexamreportinfo", maps);
                            }else{
                                results = jcsqdService.getTjJcProByHisCall("体检中心", order.getCardId(), "''", 100, 1, "'1'");
                                DynamicDataSourceContextHolder.clearDataSourceType();
                            }
                            log.info("检查项目查询返回值:      " + results.toString());
                            if (Integer.parseInt(results.get("code").toString()) == 200) {
                                List<Map<String, Object>> datas = (List<Map<String, Object>>) results.get("data");
@@ -829,28 +879,56 @@
                                            jcbgd.setJcbw(objectMap.get("JCBW").toString());
                                        if (null != objectMap.get("SQRQSJ") || !objectMap.get("SQRQSJ").equals(""))
                                            jcbgd.setSqsj(objectMap.get("SQRQSJ").toString());
                                        jcbgd.setCreateTime(new Date());
                                        jcbgdService.save(jcbgd);
                                    }
                                    jcsqdService.saveLtkjExamJcsqd(order.getCardId());
                        /*            List<LtkjExamJcsqd> jcsqdList = jcsqdService.getLtkjJcsqdByTjh(order.getCardId());
                                    if(null !=jcsqdList && !jcsqdList.isEmpty()) {
                                        for (LtkjExamJcsqd jcsqd : jcsqdList) {
                                            if (StringUtil.isNotBlank(jcsqd.getJgzt())) {
                                                String[] split = jcsqd.getJgzt().replaceAll("\n", "").split("。|;|;");
                                                for (String jg : split) {
                                                    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(dqyyyqbm);
                                                        String[] split1 = jcsqd.getJcxmid().split(";");
                                                        jcycxm.setProId(split1[0]);
                                                        jcycxm.setProName(jcsqd.getJcxmmc());
                                                        jcycxm.setCreateTime(new Date());
                                                        jcycxm.setJcjg(jg);
                                                        jcycxmService.save(jcycxm);
                                                    }
                                                }
                                            }
                                        }
                                    }*/
                                    testMapper.updateDetailByTjJcCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), doctorId);
                                }else {
                                    return AjaxResult.error("检查项目暂时未出结果,请稍后同步!!!");
//                                    return AjaxResult.error("检查项目暂时未出结果,请稍后同步!!!");
                                    resultMsg+="\n检查项目暂时未出结果,请稍后同步!!!";
                                }
                            }
                        }
                        return AjaxResult.success("同步成功");
                        if (StrUtil.isBlank(resultMsg))
                            return AjaxResult.success("同步成功");
                        else return AjaxResult.error(resultMsg);
                    }
                    //化验
                    testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), doctorId);
//                    testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), doctorId);
                    //检查
                    jcsqdService.saveLtkjExamJcsqd(order.getCardId());
//                    jcsqdService.saveLtkjExamJcsqd(order.getCardId());
                    return AjaxResult.success("同步成功");
                }
                return AjaxResult.error("未查到该人员体检记录");
            }
            return AjaxResult.error("该人员数据正在同步中,请稍等");
        } catch (InterruptedException e) {
            e.printStackTrace();
            log.error(String.valueOf(e),e.getMessage());
            return AjaxResult.error("该人员数据正在同步中,请稍等");
        } finally {
            lock.unlock();
@@ -892,6 +970,7 @@
                bgd.setShys(js.getStr("SHRBH"));
                bgd.setShysmc(js.getStr("SHRXM"));
                bgd.setYcbz(js.getStr("YCTS"));
                bgd.setCreateTime(new Date());
//                            bgd.setTpurl(js.getStr(""));
                QueryWrapper<LtkjHybgd> queryWrapper = new QueryWrapper<>(bgd);
                List<LtkjHybgd> list = ltkjHybgdService.list(queryWrapper);
@@ -946,7 +1025,7 @@
    private void tbhyxm(TjOrder order) {
        List<LtkjHysqd> one = testMapper.getHysqdByTmh(order.getCardId());
        if (one != null && one.size() > 0) {
        if (one != null && !one.isEmpty()) {
            for (LtkjHysqd ltkjHysqd : one) {
                ltkjHysqdService.deletedLtkjHysqdByTjhAndTmh(ltkjHysqd.getTjh(), ltkjHysqd.getTmh());
                ltkjHybgdService.deletedLtkjHybgdByTjhAndTmh(ltkjHysqd.getTmh());
@@ -955,7 +1034,7 @@
                    ltkjHysqdService.save(ltkjHysqd);
                    DynamicDataSourceContextHolder.clearDataSourceType();
                    List<LtkjHybgd> one1 = testMapper.getHybgdByTmh(ltkjHysqd.getTmh());
                    if (one1 != null && one1.size() > 0) {
                    if (one1 != null && !one1.isEmpty()) {
                        DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
                        ltkjHybgdService.saveBatch(one1);
                        DynamicDataSourceContextHolder.clearDataSourceType();
@@ -1231,6 +1310,7 @@
                    TjCustomer customer = customerService.getById(tjOrder.getUserId());
                    if (null != customer) {
                        customer.setCusNumber(customer.getCusNumber() + 1);
                        customer.setCardId("0");
                        if (customerService.updateById(customer)) {
                            asyncService.updateCheckType(tjNumber);
                            return AjaxResult.success("操作成功");
@@ -1520,7 +1600,9 @@
                                tjOrderDetail.setProResult(tjOrderDetail.getProResult());
                            }
                            dels.add(tjOrderDetail);
                            if(remark.getOrgType().equals(tjOrderDetail.getOrgType())){
                                dels.add(tjOrderDetail);
                            }
                        }
                    }
                    String summary = remark.getSummary();
@@ -1533,6 +1615,12 @@
                    if (dels.isEmpty()) {
                        continue;
                    }
                    dels=dels.stream().sorted(Comparator.comparing(TjOrderDetail::getProName, Collator.getInstance(Locale.CHINA))).collect(Collectors.toList());
                    dels = dels.stream()
                                .sorted(Comparator.comparingInt(
                                        tjPdfVO -> tjPdfVO.getProName().length() // 根据名字的长度排序
                                ))
                                .collect(Collectors.toList());
                    parent.put("sons", dels);
                    parent.put("remark", remark.getRemark());
                    parent.put("jgbx", remark.getJgbx());
@@ -1566,7 +1654,7 @@
    @PostMapping ("/checkUpdateOrderRemark")
    @ApiOperation (value = "总检修改备注接口")
    public AjaxResult checkUpdateOrderRemark(@RequestBody List<UpdateOrderRemarkVo> updateOrderRemarkVos) {
        if (null != updateOrderRemarkVos && updateOrderRemarkVos.size() > 0) {
        if (null != updateOrderRemarkVos && !updateOrderRemarkVos.isEmpty()) {
            for (UpdateOrderRemarkVo remarkVo : updateOrderRemarkVos) {
                LambdaQueryWrapper<TjOrderRemark> wqm = new LambdaQueryWrapper<>();
                wqm.eq(TjOrderRemark::getTjNumber, remarkVo.getTjNumber());
@@ -1621,19 +1709,96 @@
    @GetMapping ("/getzongjianyishengchakanyichangxiangmu")
    @ApiOperation (value = "总检查看异常项目接口")
    public AjaxResult getzongjianyishengchakanyichangxiangmu(@RequestParam String tjNum) {
        long l = System.currentTimeMillis();
        if (StrUtil.isNotBlank(tjNum)) {
            return zongjianyishengchakanyichangxiangmu(tjNum);
            TjOrder one = orderService.getOrderByTjNum(tjNum);
            if (one == null) {
                return AjaxResult.error("暂无数据!!");
            }
            String yqbm = configService.selectConfigByKey("common_api_service_hospbm");
            jcycxmService.deletedByTjh(tjNum);
            configController.zongjianshengchengyichangxiangmu(tjNum,yqbm);
        LambdaQueryWrapper<TjOrderYcxm> wq=new LambdaQueryWrapper<>();
        wq.eq(TjOrderYcxm::getTjh,tjNum);
        List<TjOrderYcxm> list = ycxmService.list(wq);
        if(null !=list && !list.isEmpty()){
            Collections.reverse(list);
            Map<String, List<TjOrderYcxm>> map = list.stream().collect(Collectors.groupingBy(TjOrderYcxm::getParentName));
            List<Map<String, Object>> maps = new ArrayList<>();
            for (Map.Entry<String, List<TjOrderYcxm>> entry : map.entrySet()) {
                Map<String, Object> parent = new HashMap<>();
                List<TjOrderDetail> dels = new ArrayList<>();
                for (TjOrderYcxm ycxm : entry.getValue()) {
                    TjOrderDetail detail=new TjOrderDetail();
                    detail.setOrderDetailId(Long.valueOf(ycxm.getId()));
                    detail.setProName(ycxm.getJcxm());
                    detail.setProResult(ycxm.getJcjg());
                    detail.setStanId(ycxm.getCkfw());
                    detail.setProAdvice(ycxm.getDw());
                    List<Map<String,Object>> btnrlist=new ArrayList<>();
                    String jynr = ycxm.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) btnrlist.add(objectMap);
                    }
                    detail.setAdvices(btnrlist);
                    dels.add(detail);
                }
                    parent.put("proName",entry.getKey());
                    parent.put("jyjc",entry.getValue().get(0).getJyjc());
                    parent.put("sone",dels);
                    maps.add(parent);
            }
            List<Map<String, Object>> mapList = zongjianyishengchakanyichangxiangmu(tjNum);
            List<Map<String, Object>> collect = mapList.stream()
                    .filter(b -> maps.stream()
                            .noneMatch(a -> a.get("proName").equals(b.get("proName"))))  // 过滤掉在 maps 中存在的相同元素
                    .collect(Collectors.toList());
            if(!collect.isEmpty()){
                maps.addAll(collect);
            }
            if(!maps.isEmpty()){
                List<Map<String, Object>> collect1 = maps.stream()
                        .sorted((map1, map2) -> map2.get("proName").toString().compareTo(map1.get("proName").toString()))
                        .collect(Collectors.toList());
                System.out.println("总耗时:"+(System.currentTimeMillis()-l));
                return AjaxResult.success(collect1);
            }
            System.out.println("总耗时:"+(System.currentTimeMillis()-l));
            return AjaxResult.success(maps);
        }else {
            List<Map<String, Object>> mapList = zongjianyishengchakanyichangxiangmu(tjNum);
            System.out.println("总耗时:"+(System.currentTimeMillis()-l));
            return AjaxResult.success(mapList);
        }
//            return zongjianyishengchakanyichangxiangmu(tjNum);
        }
        return AjaxResult.error();
    }
    private AjaxResult zongjianyishengchakanyichangxiangmu(String tjNumber) {
//        asyncService.updateCheckType(tjNumber);
        TjOrder one = orderService.getOrderByTjNum(tjNumber);
    @GetMapping ("/delzongjianyishengchakanyichangxiangmu")
    @ApiOperation (value = "总检删除异常项目接口")
    public AjaxResult delzongjianyishengchakanyichangxiangmu(@RequestParam String id) {
        ycxmService.removeById(id);
        return AjaxResult.success();
    }
        if (one == null) {
            return AjaxResult.error("暂无数据!!");
        }
    /*private List<Map<String, Object>> zongjianyishengchakanyichangxiangmu(String tjNumber) {
//        asyncService.updateCheckType(tjNumber);
        List<TjOrderRemark> remarkList = orderRemarkService.getzongjianyishengchakanyichangxiangmu(tjNumber);
        List<TjOrderDetail> tjOrderDetails = detailService.getzongjianyishengchakanyichangxiangmu(tjNumber);
        List<Map<String, Object>> list = new ArrayList<>();
@@ -1645,10 +1810,31 @@
                    for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
                        if (remark.getProsId().equals(tjOrderDetail.getProsId())) {
                            if(null !=tjOrderDetail.getProId()&& null !=tjOrderDetail.getYcbz()){
                                List<Map<String,Object>> maps= rulesService.getyichangxiangmujianyiguize(tjOrderDetail.getProId().toString(),"",tjOrderDetail.getYcbz(),tjNumber);
                                if(null !=maps && !maps.isEmpty()){
                                    tjOrderDetail.setAdvices(maps);
                                if(!tjOrderDetail.getDeptId().equals("2")){
                                    List<Map<String,Object>> maps= rulesService.getyichangxiangmujianyiguize(tjOrderDetail.getProId().toString()
                                            ,"",tjOrderDetail.getYcbz().replaceAll(" ", ""),tjNumber
                                            ,tjOrderDetail.getProName().replaceAll("[((][^))]*[))]", "")
                                                    .replaceAll("[ 测定检测]","")
                                            ,tjOrderDetail.getProResult());
                                    if(null !=maps && !maps.isEmpty()){
                                        tjOrderDetail.setAdvices(maps);
                                    }
                                }else {
                                    String[] split = tjOrderDetail.getProResult().split("。|,|,");
                                    List<Map<String,Object>> mapList=new ArrayList<>();
                                    for (String s : split) {
                                                s = s.replaceAll("\n", "");
//                                        Map<String,Object> maps= rulesService.getyichangxiangmujianyiguizeJianCha(s);
                                        Map<String,Object> maps= tjProAdvicerulesService.getyichangxiangmujianyiguizeJianCha(remark.getKs(),s,"0");
                                        if(null !=maps && !maps.isEmpty()){
                                            Object bt = maps.get("bt");
                                            Object nr = maps.get("nr");
                                            if(null !=bt || null !=nr) mapList.add(maps);
                                        }
                                    }
                                    tjOrderDetail.setAdvices(mapList);
                                }
                            }
                            dels.add(tjOrderDetail);
@@ -1660,13 +1846,73 @@
                        parent.put("sone",dels);
                        list.add(parent);
                    }
                } else {
                    return AjaxResult.success("该人员无异常项目");
                }
            }
            return AjaxResult.success(list);
        }
        return AjaxResult.success("该人员没有体检项目数据!");
        return list;
    }*/
    private List<Map<String, Object>> zongjianyishengchakanyichangxiangmu(String tjNumber) {
//        asyncService.updateCheckType(tjNumber);
        List<TjOrderRemark> remarkList = orderRemarkService.getzongjianyishengchakanyichangxiangmu(tjNumber);
        List<TjOrderDetail> tjOrderDetails = detailService.getzongjianyishengchakanyichangxiangmu(tjNumber);
        List<Map<String, Object>> list = new ArrayList<>();
        if (null != remarkList && !remarkList.isEmpty()) {
            for (TjOrderRemark remark : remarkList) {
                Map<String, Object> parent = new HashMap<>();
                if (null != tjOrderDetails && !tjOrderDetails.isEmpty()) {
                    List<TjOrderDetail> dels = new ArrayList<>();
                    for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
                        if (remark.getProsId().equals(tjOrderDetail.getProsId())) {
                            if(null !=tjOrderDetail.getProId()&& null !=tjOrderDetail.getYcbz()){
                                if(!tjOrderDetail.getDeptId().equals("2")){
                                    List<Map<String,Object>> maps= rulesService.getyichangxiangmujianyiguize(tjOrderDetail.getProId().toString()
                                            ,tjOrderDetail.getProName().replaceAll("[((][^))]*[))]", "")
                                                    .replaceAll("[ 测定检测 ◆]","").replaceAll("\\[.*?\\]", "")
                                            ,tjOrderDetail.getYcbz().replaceAll(" ", ""),tjNumber
                                            ,tjOrderDetail.getProName().replaceAll("[((][^))]*[\u4e00-\u9fa5]+[^))]*[))]", "")
                                                    .replaceAll("[ 测定检测 ◆]","").replaceAll("\\[.*?\\]", "")
                                            ,tjOrderDetail.getProResult());
                                    if(null !=maps && !maps.isEmpty()){
                                        tjOrderDetail.setAdvices(maps);
                                    }
                                }else {
                                    String[] split = tjOrderDetail.getProResult().split("。|,|,");
                                    List<Map<String,Object>> mapList=new ArrayList<>();
                                    for (String s : split) {
                                        s = s.replaceAll("\n", "");
//                                        Map<String,Object> maps= rulesService.getyichangxiangmujianyiguizeJianCha(s);
                                        Map<String,Object> maps= tjProAdvicerulesService.getyichangxiangmujianyiguizeJianCha(remark.getKs(),s,"0");
                                        if(null !=maps && !maps.isEmpty()){
                                            Object bt = maps.get("bt");
                                            Object nr = maps.get("nr");
                                            if(null !=bt || null !=nr) mapList.add(maps);
                                        }
                                    }
                                    tjOrderDetail.setAdvices(mapList);
                                }
                            }
                            dels.add(tjOrderDetail);
                        }
                    }
                    if(!dels.isEmpty()){
                        parent.put("proName",remark.getProName());
                        parent.put("jyjc",remark.getJyjc());
                        parent.put("sone",dels);
                        list.add(parent);
                    }
                }
            }
        }
        return list;
    }
    @GetMapping ("/chushenyemianchakanxiangmujieguo")
@@ -1684,5 +1930,56 @@
    }
    @PostMapping ("/addOrderYcXmByTjh")
    @ApiOperation (value = "总检医生页面新增异常项目建议")
    public AjaxResult addOrderYcXmJyByTjh(@RequestBody List<TjOrderYcxm> ycxms) {
        if(null !=ycxms && !ycxms.isEmpty()){
            String tjh = ycxms.get(0).getTjh();
            if(StringUtils.isNotBlank(tjh)){
                ycxmService.delOrderYcXmJyByTjh(tjh);
                for (TjOrderYcxm ycxm : ycxms) {
                    ycxm.setJynr(JSONUtil.toJsonStr(ycxm.getMap()));
                }
//                List<TjOrderYcxm> collect = ycxms.stream().distinct().collect(Collectors.toList());
                ycxmService.saveBatch(ycxms);
                return AjaxResult.success();
            }
        }
        return AjaxResult.success();
    }
    /**
     * 同步sql server数据到本地数据库数据接口
     */
    @GetMapping ("/newdataSynchronization")
    @ApiOperation (value = "最新公共同步sql server数据到本地数据库数据接口")
    @RepeatSubmit
    public AjaxResult newdataSynchronization(@RequestParam String tjNumber) {
        try {
            //根据配置调取存储过程 将临时表数据存入预约表2023.12.12
            final String sfkqdyhis = configService.selectConfigByKey("sfkqdyhis");
            TjOrder order = orderService.getOrderByTjNum(tjNumber);
            if (null != order) {
                if (null != sfkqdyhis && sfkqdyhis.equals("Y")) {
                    dataSynchronizationApi(tjNumber);
                }else {
                    configController.shoudongtbjyjcwsxmjg("jyjc",tjNumber);
                }
                return AjaxResult.success("同步成功");
            }
            return AjaxResult.error("未查到该人员体检记录");
        } catch (Exception e) {
//            throw new RuntimeException(ex);
            log.error(String.valueOf(e),e.getMessage());
            return AjaxResult.error("该人员数据正在同步中,请稍等");
        }
    }
}