zjh
2024-12-21 88c2ff3560c16a0d46493cd3d77ef7acb643bd96
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCheckController.java
@@ -40,6 +40,8 @@
import lombok.extern.slf4j.Slf4j;
import lombok.var;
import org.aspectj.weaver.AjAttribute;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
@@ -48,6 +50,7 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import static com.ltkj.framework.datasource.DynamicDataSourceContextHolder.log;
@@ -60,7 +63,7 @@
 */
@RestController
@RequestMapping ("/check")
@Api (tags = "总检医师相关接口")
@Api (tags = "AAAAAAAAAAAA总检医师相关接口")
@Slf4j
public class TjCheckController {
    @Resource
@@ -115,6 +118,61 @@
    private HisApiGetMethodService service;
    @Autowired
    private HisApiConfigService hisApiConfigService;
    @Autowired
    private RedissonClient redissonClient;
    @Autowired
    private ITjRulesService rulesService;
    @GetMapping ("/ceshicc")
    @ApiOperation (value = "测试调用存储过程耗时接口")
    @RepeatSubmit
//    @Transactional
    public AjaxResult ceshicc() {
        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 ("/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);
//    }
    @GetMapping ("/getOperationPermissionsByTjNum")
    @ApiOperation (value = "(初审页面  和 医生页面)根据体检号获取是否可操作权限接口  true可操作  反之不可")
@@ -265,8 +323,13 @@
//            });
//        }
        List<CsProVo> list = orderRemarkService.cSWebGetProByTjNumAndOrderId(tjNumber);
        if (null != list && list.size() > 0) {
        List<CsProVo> list = getCsProVos(tjNumber,false);
        return AjaxResult.success(list);
    }
    public List<CsProVo> getCsProVos(String tjNumber,boolean sfzpacs) {
        List<CsProVo> list = orderRemarkService.cSWebGetProByTjNumAndOrderId(tjNumber,sfzpacs);
        if (null != list && !list.isEmpty()) {
            list.sort(new Comparator<CsProVo>() {
                @Override
                public int compare(CsProVo o1, CsProVo o2) {
@@ -274,7 +337,7 @@
                }
            });
        }
        return AjaxResult.success(list);
        return list;
    }
@@ -330,17 +393,22 @@
//    @Transactional
    public AjaxResult dataSynchronization(@RequestParam String tjNumber) {
        //根据配置调取存储过程 将临时表数据存入预约表2023.12.12
        final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData");
        RLock lock = redissonClient.getLock("lock:check:dataSynchronization:" + tjNumber);
        try {
            boolean tryLock = lock.tryLock(3L, TimeUnit.SECONDS);
            if (tryLock){
                //根据配置调取存储过程 将临时表数据存入预约表2023.12.12
                final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData");
        final String sfkqdyhis = configService.selectConfigByKey("sfkqdyhis");
        TjOrder order = orderService.getOrderByTjNum(tjNumber);
        if (null != order) {
                final String sfkqdyhis = configService.selectConfigByKey("sfkqdyhis");
                final String sfkqdshitulianjie = configService.selectConfigByKey("sfkqdshitulianjie");
                TjOrder order = orderService.getOrderByTjNum(tjNumber);
                if (null != order) {
            //开启字典弹窗
            if ("Y".equals(getInfoFromSqlData)) {
                tbhyxm(order);
                //                List<LtkjExamJcsqd> one2 = testMapper.getExamJcsqdTmh(tjNumber);
                    //开启字典弹窗
                    if ("Y".equals(getInfoFromSqlData)) {
                        tbhyxm(order);
                        //                List<LtkjExamJcsqd> one2 = testMapper.getExamJcsqdTmh(tjNumber);
//                if (one2 != null && one2.size() > 0) {
//                    DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
//                    ltkjExamJcsqdService.saveBatch(one2);
@@ -354,247 +422,283 @@
//                        }
//                    }
//                }
                //同步化验项目
                testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), UserHoder.getLoginUser().getUserId());
                //同步检查项目
                testMapper.updateDetailByTjJcCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), UserHoder.getLoginUser().getUserId());
                asyncService.updateCheckType(order.getTjNumber());
                        //同步化验项目
                        testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), UserHoder.getLoginUser().getUserId());
                        //同步检查项目
                        testMapper.updateDetailByTjJcCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), UserHoder.getLoginUser().getUserId());
                        asyncService.updateCheckType(order.getTjNumber());
            }
            //开启和his对接
            if (null != sfkqdyhis && sfkqdyhis.equals("Y")) {
                List<String> baoGaoDans = ltkjHybgdService.getJianYanBaoGaoDan(order.getCardId());
                List<String> jianChaBaoGaoDan = ltkjHybgdService.getJianChaBaoGaoDan(order.getCardId());
                //同步检验
                if (null != baoGaoDans && baoGaoDans.size() > 0) {
                    Date dates = new Date();
                    Map<String, Object> map = new HashMap<>();
                    map.put("his_registration_id", order.getCardId());
                    map.put("ksbm", "");
                    map.put("pationid", "");
                    map.put("ksrq", DateUtil.format(DateUtil.beginOfDay(order.getCreateTime()), "yyyy-MM-dd HH:mm:ss"));
                    map.put("jsrq", DateUtil.format(DateUtil.endOfDay(dates), "yyyy-MM-dd HH:mm:ss"));
                    map.put("pagecount", 10);
                    map.put("page", 1);
                    AjaxResult result = controller.Getlabreportinfo(map);
                    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;
                        LtkjHysqd jybgid = ltkjHysqdService.getLtkjHysqdByTjhAndTmh(order.getCardId(), jsonObject.getStr("JYBGID"));
                        if (null != jybgid) {
                            ltkjHysqdService.deletedLtkjHysqdByTjhAndTmh(order.getCardId(), jsonObject.getStr("JYBGID"));
                            ltkjHybgdService.deletedLtkjHybgdByTjhAndTmh(jybgid.getTmh());
                        }
                        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"));
                        if (ltkjHysqdService.save(hysqd)) {
                            Map<String, Object> hashMap = new HashMap<>();
                            hashMap.put("jybgid", hysqd.getTmh());
                            AjaxResult bgdres = controller.Getlabdetailinfo(hashMap);
                            String result2 = getAjaxResult(bgdres);
                            JSONObject object1 = getJSONObject(result2);
                            String code1 = object1.getStr("ResultCode");
                            if (null != code1 && code1.equals("0")) {
                                JSONArray datas = object1.getJSONArray("ResultData");
                                for (Object o : datas) {
                                    JSONObject js = (JSONObject) o;
                    //开启和his对接
                    if (null != sfkqdyhis && sfkqdyhis.equals("Y")) {
                        List<String> baoGaoDans = ltkjHybgdService.getJianYanBaoGaoDan(order.getCardId());
                        List<String> jianChaBaoGaoDan = ltkjHybgdService.getJianChaBaoGaoDan(order.getCardId());
                        //同步检验
                        if (null != baoGaoDans && baoGaoDans.size() > 0) {
                            Date dates = new Date();
                            Map<String, Object> map = new HashMap<>();
                            map.put("his_registration_id", order.getCardId());
                            map.put("ksbm", "");
                            map.put("pationid", "");
                            map.put("ksrq", DateUtil.format(DateUtil.beginOfDay(order.getCreateTime()), "yyyy-MM-dd HH:mm:ss"));
                            map.put("jsrq", DateUtil.format(DateUtil.endOfDay(dates), "yyyy-MM-dd HH:mm:ss"));
                            map.put("pagecount", 10);
                            map.put("page", 1);
                            AjaxResult result = controller.Getlabreportinfo(map);
                            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;
                                LtkjHysqd jybgid = ltkjHysqdService.getLtkjHysqdByTjhAndTmh(order.getCardId(), jsonObject.getStr("JYBGID"));
                                if (null != jybgid) {
                                    ltkjHysqdService.deletedLtkjHysqdByTjhAndTmh(order.getCardId(), jsonObject.getStr("JYBGID"));
                                    ltkjHybgdService.deletedLtkjHybgdByTjhAndTmh(jybgid.getTmh());
                                }
                                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"));
                                if (ltkjHysqdService.save(hysqd)) {
                                    Map<String, Object> hashMap = new HashMap<>();
                                    hashMap.put("jybgid", hysqd.getTmh());
                                    AjaxResult bgdres = controller.Getlabdetailinfo(hashMap);
                                    String result2 = getAjaxResult(bgdres);
                                    JSONObject object1 = getJSONObject(result2);
                                    String code1 = object1.getStr("ResultCode");
                                    if (null != code1 && code1.equals("0")) {
                                        JSONArray datas = object1.getJSONArray("ResultData");
                                        for (Object o : datas) {
                                            JSONObject js = (JSONObject) o;
//                            ltkjHybgdService.deletedLtkjHybgdByTjhAndTmh(jsonObject.getStr("JYBGID"));
                                    LtkjHybgd bgd = new LtkjHybgd();
                                    bgd.setTmh(hysqd.getTmh());
                                    bgd.setJcxmid(js.getStr("JCZBDM"));
                                    bgd.setJcxm(js.getStr("JCZBMC"));
                                    bgd.setTdh(js.getStr(""));
                                    bgd.setJyjg(js.getStr("JCZBJG"));
                                    bgd.setJgdw(js.getStr("JLDW"));
                                    bgd.setFwzdz(js.getStr(""));
                                    bgd.setFwzgz(js.getStr(""));
                                    bgd.setFwz(js.getStr("CKZFW"));
                                    bgd.setJysj(js.getStr("BGRQ"));
                                    bgd.setJyys(js.getStr("JCRBH"));
                                    bgd.setShsj(js.getStr("BGRQ"));
                                    bgd.setShsj(js.getStr("BGRQ"));
                                    bgd.setShys(js.getStr("SHRBH"));
                                    bgd.setShysmc(js.getStr("SHRXM"));
                                    bgd.setYcbz(js.getStr("YCTS"));
                                            LtkjHybgd bgd = new LtkjHybgd();
                                            bgd.setTmh(hysqd.getTmh());
                                            bgd.setJcxmid(js.getStr("JCZBDM"));
                                            bgd.setJcxm(js.getStr("JCZBMC"));
                                            bgd.setTdh(js.getStr(""));
                                            bgd.setJyjg(js.getStr("JCZBJG"));
                                            bgd.setJgdw(js.getStr("JLDW"));
                                            bgd.setFwzdz(js.getStr(""));
                                            bgd.setFwzgz(js.getStr(""));
                                            bgd.setFwz(js.getStr("CKZFW"));
                                            bgd.setJysj(js.getStr("BGRQ"));
                                            bgd.setJyys(js.getStr("JCRBH"));
                                            bgd.setShsj(js.getStr("BGRQ"));
                                            bgd.setShsj(js.getStr("BGRQ"));
                                            bgd.setShys(js.getStr("SHRBH"));
                                            bgd.setShysmc(js.getStr("SHRXM"));
                                            bgd.setYcbz(js.getStr("YCTS"));
//                            bgd.setTpurl(js.getStr(""));
                                    ltkjHybgdService.save(bgd);
                                            ltkjHybgdService.save(bgd);
                                        }
                                    }
                                    Map<String, Object> fbhashMap = new HashMap<>();
                                    fbhashMap.put("jybgid", hysqd.getTmh());
                                    AjaxResult fbres = controller.Getlabgermrepinfo(fbhashMap);
                                    String ajaxResult = getAjaxResult(fbres);
                                    JSONObject fbobject = getJSONObject(ajaxResult);
                                    String fbcode = fbobject.getStr("ResultCode");
                                    if (null != fbcode && fbcode.equals("0")) {
                                        JSONArray datas = fbobject.getJSONArray("ResultData");
                                        for (Object o : datas) {
                                            JSONObject js = (JSONObject) o;
                                            LtkjHybgd bgd = new LtkjHybgd();
                                            bgd.setTmh(hysqd.getTmh());
                                            bgd.setJcxmid(hysqd.getXmid());
                                            bgd.setJcxm(hysqd.getXmmc());
                                            bgd.setTdh(js.getStr(""));
                                            bgd.setJyjg(js.getStr("JCJG"));
                                            bgd.setJgdw("/");
                                            bgd.setFwzdz("/");
                                            bgd.setFwzgz("/");
                                            bgd.setFwz("/");
                                            bgd.setJysj(js.getStr("BGRQ"));
                                            bgd.setJyys(hysqd.getSqrxm());
                                            bgd.setShsj(js.getStr("BGRQ"));
                                            bgd.setShys(hysqd.getShrdm());
                                            bgd.setShysmc(hysqd.getShrxm());
                                            ltkjHybgdService.save(bgd);
                                        }
                                    }
                                }
                            }
                            Map<String, Object> fbhashMap = new HashMap<>();
                            fbhashMap.put("jybgid", hysqd.getTmh());
                            AjaxResult fbres = controller.Getlabgermrepinfo(fbhashMap);
                            String ajaxResult = getAjaxResult(fbres);
                            JSONObject fbobject = getJSONObject(ajaxResult);
                            String fbcode = fbobject.getStr("ResultCode");
                            if (null != fbcode && fbcode.equals("0")) {
                                JSONArray datas = fbobject.getJSONArray("ResultData");
                                for (Object o : datas) {
                                    JSONObject js = (JSONObject) o;
                                    LtkjHybgd bgd = new LtkjHybgd();
                                    bgd.setTmh(hysqd.getTmh());
                                    bgd.setJcxmid(hysqd.getXmid());
                                    bgd.setJcxm(hysqd.getXmmc());
                                    bgd.setTdh(js.getStr(""));
                                    bgd.setJyjg(js.getStr("JCJG"));
                                    bgd.setJgdw("/");
                                    bgd.setFwzdz("/");
                                    bgd.setFwzgz("/");
                                    bgd.setFwz("/");
                                    bgd.setJysj(js.getStr("BGRQ"));
                                    bgd.setJyys(hysqd.getSqrxm());
                                    bgd.setShsj(js.getStr("BGRQ"));
                                    bgd.setShys(hysqd.getShrdm());
                                    bgd.setShysmc(hysqd.getShrxm());
                                    ltkjHybgdService.save(bgd);
                                }
                            }
                            //同步化验项目
                            testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), UserHoder.getLoginUser().getUserId());
                        }
                    }
                    //同步化验项目
                    testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), UserHoder.getLoginUser().getUserId());
                }
                /*同步检查 his接口*/
                if (null != jianChaBaoGaoDan && jianChaBaoGaoDan.size() > 0) {
                    Map<String, Object> maps = new HashMap<>();
                    maps.put("his_registration_id", order.getCardId());
                    maps.put("ksbm", "体检中心");
                    maps.put("pagecount", 100);
                    maps.put("page", 1);
                        /*同步检查 his接口*/
                        if (null != jianChaBaoGaoDan && jianChaBaoGaoDan.size() > 0) {
                            Map<String, Object> maps = new HashMap<>();
                            maps.put("his_registration_id", order.getCardId());
                            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");
                    HisApiConfig hisApiConfig = hisApiConfigService.getOne(lambdaQueryWrapper);
                            LambdaQueryWrapper<HisApiConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
                            lambdaQueryWrapper.eq(HisApiConfig::getApiMethod, "Getexamreportinfo");
                            HisApiConfig hisApiConfig = hisApiConfigService.getOne(lambdaQueryWrapper);
                    /*同步检查 his存储过程*/
                    AjaxResult results = jcsqdService.getTjJcProByHisCall("体检中心", order.getCardId(), "''", 100, 1, "'1'");
                            /*同步检查 his存储过程*/
                            AjaxResult results = jcsqdService.getTjJcProByHisCall("体检中心", order.getCardId(), "''", 100, 1, "'1'");
                    DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
                    DynamicDataSourceContextHolder.clearDataSourceType();
                            DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
                            DynamicDataSourceContextHolder.clearDataSourceType();
                    log.info("检查项目查询返回值:      " + results.toString());
                            log.info("检查项目查询返回值:      " + results.toString());
                    if (Integer.parseInt(results.get("code").toString()) == 200) {
                        List<Map<String, Object>> datas = (List<Map<String, Object>>) results.get("data");
                        if (null != datas && datas.size() > 0) {
                            if (Integer.parseInt(results.get("code").toString()) == 200) {
                                List<Map<String, Object>> datas = (List<Map<String, Object>>) results.get("data");
                                if (null != datas && datas.size() > 0) {
                                    jcsqdService.deletedLtkjJcsqdByTjhAndTmh(order.getCardId());
                                    jcbgdService.deletedLtkjJcbgdByTjhAndTmh(order.getCardId());
                                    for (Map<String, Object> objectMap : datas) {
                                        //保存入参出参
//                                service.save((JSONObject)objectMap,"Getexamreportinfo",hisApiConfig,JSONUtil.toJsonStr(maps));
                                        service.save(JSONUtil.parseObj(objectMap), "Getexamreportinfo", hisApiConfig, JSONUtil.toJsonStr(maps));
                                        LtkjExamJcbgd jcbgd = new LtkjExamJcbgd();
                                        jcbgd.setTjh(order.getCardId());
                                        if (null != objectMap.get("JCBGID") || !objectMap.get("JCBGID").equals(""))
                                            jcbgd.setTmh(objectMap.get("JCBGID").toString());
                                        if (null != objectMap.get("JCXMDM") || !objectMap.get("JCXMDM").equals(""))
                                            jcbgd.setXmdm(objectMap.get("JCXMDM").toString());
                                        if (null != objectMap.get("JCXMMC") || !objectMap.get("JCXMMC").equals(""))
                                            jcbgd.setXmmc(objectMap.get("JCXMMC").toString());
                                        if (null != objectMap.get("JCXMJG") || !objectMap.get("JCXMJG").equals(""))
                                            jcbgd.setBgNr(objectMap.get("JCXMJG").toString());
                                        if (null != objectMap.get("reporturl") || !objectMap.get("reporturl").equals(""))
                                            jcbgd.setBgUrl(objectMap.get("reporturl").toString());
                                        if (null != objectMap.get("SHYSQM") || !objectMap.get("SHYSQM").equals(""))
                                            jcbgd.setShysxm(objectMap.get("SHYSQM").toString());
                                        if (null != objectMap.get("SHYSBH") || !objectMap.get("SHYSBH").equals(""))
                                            jcbgd.setShysdm(objectMap.get("SHYSBH").toString());
                                        if (null != objectMap.get("YXZD") || !objectMap.get("YXZD").equals(""))
                                            jcbgd.setYxzd(objectMap.get("YXZD").toString());
                                        if (null != objectMap.get("YXBX") || !objectMap.get("YXBX").equals("")) {
                                            if (objectMap.get("YXBX").toString().equals("null")) {
                                                jcbgd.setYxbx("未检异常");
                                            } else {
                                                jcbgd.setYxbx(objectMap.get("YXBX").toString());
                                            }
                                        }
                                        if (null != objectMap.get("SJJLSJ") || !objectMap.get("SJJLSJ").equals(""))
                                            jcbgd.setZdsj(objectMap.get("SJJLSJ").toString());
                                        if (null != objectMap.get("JCBW") || !objectMap.get("JCBW").equals(""))
                                            jcbgd.setJcbw(objectMap.get("JCBW").toString());
                                        if (null != objectMap.get("SQRQSJ") || !objectMap.get("SQRQSJ").equals(""))
                                            jcbgd.setSqsj(objectMap.get("SQRQSJ").toString());
                                        jcbgdService.save(jcbgd);
                                    }
                                    jcsqdService.saveLtkjExamJcsqd(order.getCardId());
                                    int maxRetries=3;
                                    for (int attempt = 0; attempt < maxRetries; attempt++) {
                                        try {
                                            testMapper.updateDetailByTjJcCall(order.getCardId(),
                                                    String.valueOf(order.getOrderId()), order.getTjNumber(), UserHoder.getLoginUser().getUserId());
                                            break;
                                        } catch (Exception e) {
                                            if (attempt==maxRetries-1){
                                                throw e;
                                            }
                                            try {
                                                Thread.sleep(1000);
                                            } catch (InterruptedException ignored) {
                                            }
                                        }
                                    }
                                }else {
                                    return AjaxResult.error("检查项目暂时未出结果,请稍后同步!!!");
                                }
                            }
                        }
                        return AjaxResult.success("同步成功");
                    }
                    else if(null !=sfkqdshitulianjie && sfkqdshitulianjie.equalsIgnoreCase("Y")){
                        List<LtkjHysqd> hysqdList = testMapper.getCcXZxYyLtkjHysqdByLisVi(order.getTjNumber());
                        if(null != hysqdList && !hysqdList.isEmpty()){
                            for (LtkjHysqd hysqd : hysqdList) {
                                LtkjHysqd jybgid = ltkjHysqdService.getLtkjHysqdByTjhAndTmh(hysqd.getTjh(),hysqd.getTmh());
                                if (null != jybgid) {
                                    ltkjHysqdService.deletedLtkjHysqdByTjhAndTmh(hysqd.getTjh(),hysqd.getTmh());
                                    ltkjHybgdService.deletedLtkjHybgdByTjhAndTmh(hysqd.getTmh());
                                }
                                if (ltkjHysqdService.save(hysqd)) {
                                    List<LtkjHybgd> hybgdList = testMapper.getCcXZxYyLtkjHybgdByLisVi(hysqd.getTmh());
                                    ltkjHybgdService.saveBatch(hybgdList);
                                }
                            }
                            DynamicDataSourceContextHolder.clearDataSourceType();
                        }
                        List<LtkjExamJcsqd> jcsqdList = testMapper.getCcXZxYyPacsLtkjExamJcsqd(order.getTjNumber());
                        if(null !=jcsqdList && !jcsqdList.isEmpty()){
                            jcsqdService.deletedLtkjJcsqdByTjhAndTmh(order.getCardId());
                            jcbgdService.deletedLtkjJcbgdByTjhAndTmh(order.getCardId());
                            for (Map<String, Object> objectMap : datas) {
                                //保存入参出参
//                                service.save((JSONObject)objectMap,"Getexamreportinfo",hisApiConfig,JSONUtil.toJsonStr(maps));
                                service.save(JSONUtil.parseObj(objectMap), "Getexamreportinfo", hisApiConfig, JSONUtil.toJsonStr(maps));
                                LtkjExamJcbgd jcbgd = new LtkjExamJcbgd();
                                jcbgd.setTjh(order.getCardId());
                                if (null != objectMap.get("JCBGID") || !objectMap.get("JCBGID").equals(""))
                                    jcbgd.setTmh(objectMap.get("JCBGID").toString());
                                if (null != objectMap.get("JCXMDM") || !objectMap.get("JCXMDM").equals(""))
                                    jcbgd.setXmdm(objectMap.get("JCXMDM").toString());
                                if (null != objectMap.get("JCXMMC") || !objectMap.get("JCXMMC").equals(""))
                                    jcbgd.setXmmc(objectMap.get("JCXMMC").toString());
                                if (null != objectMap.get("JCXMJG") || !objectMap.get("JCXMJG").equals(""))
                                    jcbgd.setBgNr(objectMap.get("JCXMJG").toString());
                                if (null != objectMap.get("reporturl") || !objectMap.get("reporturl").equals(""))
                                    jcbgd.setBgUrl(objectMap.get("reporturl").toString());
                                if (null != objectMap.get("SHYSQM") || !objectMap.get("SHYSQM").equals(""))
                                    jcbgd.setShysxm(objectMap.get("SHYSQM").toString());
                                if (null != objectMap.get("SHYSBH") || !objectMap.get("SHYSBH").equals(""))
                                    jcbgd.setShysdm(objectMap.get("SHYSBH").toString());
                                if (null != objectMap.get("YXZD") || !objectMap.get("YXZD").equals(""))
                                    jcbgd.setYxzd(objectMap.get("YXZD").toString());
                                if (null != objectMap.get("YXBX") || !objectMap.get("YXBX").equals("")) {
                                    if (objectMap.get("YXBX").toString().equals("null")) {
                                        jcbgd.setYxbx("未检异常");
                                    } else {
                                        jcbgd.setYxbx(objectMap.get("YXBX").toString());
                                    }
                                }
                                if (null != objectMap.get("SJJLSJ") || !objectMap.get("SJJLSJ").equals(""))
                                    jcbgd.setZdsj(objectMap.get("SJJLSJ").toString());
                                if (null != objectMap.get("JCBW") || !objectMap.get("JCBW").equals(""))
                                    jcbgd.setJcbw(objectMap.get("JCBW").toString());
                                if (null != objectMap.get("SQRQSJ") || !objectMap.get("SQRQSJ").equals(""))
                                    jcbgd.setSqsj(objectMap.get("SQRQSJ").toString());
                                jcbgdService.save(jcbgd);
                            }
                            jcsqdService.saveLtkjExamJcsqd(order.getCardId());
                            int maxRetries=3;
                            for (int attempt = 0; attempt < maxRetries; attempt++) {
                                try {
                                    testMapper.updateDetailByTjJcCall(order.getCardId(),
                                            String.valueOf(order.getOrderId()), order.getTjNumber(), UserHoder.getLoginUser().getUserId());
                                    break;
                                } catch (Exception e) {
                                    if (attempt==maxRetries-1){
                                        throw e;
                                    }
                                    try {
                                        Thread.sleep(1000);
                                    } catch (InterruptedException ignored) {
                                    }
                                }
                            }
                        }else {
                            return AjaxResult.error("检查项目暂时未出结果,请稍后同步!!!");
                            jcsqdService.saveBatch(jcsqdList);
                            List<LtkjExamJcbgd> jcbgdList = testMapper.getCcXZxYyPacsLtkjExamJcbgd(order.getCardId());
                            if(null != jcbgdList && !jcbgdList.isEmpty())jcbgdService.saveBatch(jcbgdList);
                            DynamicDataSourceContextHolder.clearDataSourceType();
                        }
//                        String tjNumber1 = order.getTjNumber();
//                        log.info("查询出来的体检号是: " + tjNumber1);
//                        log.info("传过来的的体检号是: "+tjNumber);
                        Map<String,Object> map=new HashMap<>();
                        map.put("tjnum",tjNumber);
                        testMapper.tjUpdateDetatilByVi(map);
                    }else {
                        //化验
                        testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), UserHoder.getLoginUser().getUserId());
                    }
                  //检查
                    orderService.tjLispacstongbujianyi(null,null,null,null);
                    return AjaxResult.success("同步成功");
                }
                return AjaxResult.success("同步成功");
                //同步检查项目给redis缓存现在不用了
//                asyncService.updateCheckType(order.getTjNumber());
                return AjaxResult.error("未查到该人员体检记录");
            }
            //化验
            testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), UserHoder.getLoginUser().getUserId());
            //检查
//            jcsqdService.saveLtkjExamJcsqd(order.getCardId());
            return AjaxResult.success("同步成功");
            return AjaxResult.error("该人员数据正在同步中,请稍等");
        } catch (InterruptedException e) {
            e.printStackTrace();
            return AjaxResult.error("该人员数据正在同步中,请稍等");
        }finally {
            lock.unlock();
        }
        return AjaxResult.error("未查到该人员体检记录");
    }
    /**
     * 同步sql server数据到本地数据库数据接口
@@ -604,148 +708,161 @@
    @RepeatSubmit
//    @Transactional
    public AjaxResult dataSynchronizationApi(@RequestParam String tjNumber) {
        //根据配置调取存储过程 将临时表数据存入预约表2023.12.12
        final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData");
        RLock lock = redissonClient.getLock("lock:check:dataSynchronization:" + tjNumber);
        try {
            boolean tryLock = lock.tryLock(3L, TimeUnit.SECONDS);
            if (tryLock){
                String doctorId = configService.selectConfigByKey("request_default_check_doctorId");
                //根据配置调取存储过程 将临时表数据存入预约表2023.12.12
                final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData");
        final String sfkqdyhis = configService.selectConfigByKey("sfkqdyhis");
        TjOrder order = orderService.getOrderByTjNum(tjNumber);
        if (null != order) {
                final String sfkqdyhis = configService.selectConfigByKey("sfkqdyhis");
                TjOrder order = orderService.getOrderByTjNum(tjNumber);
                if (null != order) {
            //开启字典弹窗
            if ("Y".equals(getInfoFromSqlData)) {
                tbhyxm(order);
                //同步化验项目
                testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), "148");
                //同步检查项目
                testMapper.updateDetailByTjJcCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), "148");
                asyncService.updateCheckType(order.getTjNumber());
                    //开启字典弹窗
                    if ("Y".equals(getInfoFromSqlData)) {
                        tbhyxm(order);
                        //同步化验项目
                        testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), doctorId);
                        //同步检查项目
                        testMapper.updateDetailByTjJcCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), doctorId);
                        asyncService.updateCheckType(order.getTjNumber());
            }
            //开启和his对接
            if (null != sfkqdyhis && sfkqdyhis.equals("Y")) {
                List<String> baoGaoDans = ltkjHybgdService.getJianYanBaoGaoDan(order.getCardId());
                List<String> jianChaBaoGaoDan = ltkjHybgdService.getJianChaBaoGaoDan(order.getCardId());
                //同步检验
                if (null != baoGaoDans && !baoGaoDans.isEmpty()) {
                    Date dates = new Date();
                    Map<String, Object> map = new HashMap<>();
                    map.put("his_registration_id", order.getCardId());
                    map.put("ksbm", "");
                    map.put("pationid", "");
                    map.put("ksrq", DateUtil.format(DateUtil.beginOfDay(order.getCreateTime()), "yyyy-MM-dd HH:mm:ss"));
                    map.put("jsrq", DateUtil.format(DateUtil.endOfDay(dates), "yyyy-MM-dd HH:mm:ss"));
                    map.put("pagecount", 10);
                    map.put("page", 1);
                    AjaxResult result = controller.Getlabreportinfo(map);
                    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);
                        }
                    }
                    //同步化验项目
                    testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), "148");
                }
                /*同步检查 his接口*/
                if (null != jianChaBaoGaoDan && jianChaBaoGaoDan.size() > 0) {
                    Map<String, Object> maps = new HashMap<>();
                    maps.put("his_registration_id", order.getCardId());
                    maps.put("ksbm", "体检中心");
                    maps.put("pagecount", 100);
                    maps.put("page", 1);
                    LambdaQueryWrapper<HisApiConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
                    lambdaQueryWrapper.eq(HisApiConfig::getApiMethod, "Getexamreportinfo");
                    HisApiConfig hisApiConfig = hisApiConfigService.getOne(lambdaQueryWrapper);
                    /*同步检查 his存储过程*/
                    AjaxResult 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");
                        if (null != datas && !datas.isEmpty()) {
                            jcsqdService.deletedLtkjJcsqdByTjhAndTmh(order.getCardId());
                            jcbgdService.deletedLtkjJcbgdByTjhAndTmh(order.getCardId());
                            for (Map<String, Object> objectMap : datas) {
                                //保存入参出参
                                service.save(JSONUtil.parseObj(objectMap), "Getexamreportinfo", hisApiConfig, JSONUtil.toJsonStr(maps));
                                LtkjExamJcbgd jcbgd = new LtkjExamJcbgd();
                                jcbgd.setTjh(order.getCardId());
                                if (null != objectMap.get("JCBGID") || !objectMap.get("JCBGID").equals(""))
                                    jcbgd.setTmh(objectMap.get("JCBGID").toString());
                                if (null != objectMap.get("JCXMDM") || !objectMap.get("JCXMDM").equals(""))
                                    jcbgd.setXmdm(objectMap.get("JCXMDM").toString());
                                if (null != objectMap.get("JCXMMC") || !objectMap.get("JCXMMC").equals(""))
                                    jcbgd.setXmmc(objectMap.get("JCXMMC").toString());
                                if (null != objectMap.get("JCXMJG") || !objectMap.get("JCXMJG").equals(""))
                                    jcbgd.setBgNr(objectMap.get("JCXMJG").toString());
                                if (null != objectMap.get("reporturl") || !objectMap.get("reporturl").equals(""))
                                    jcbgd.setBgUrl(objectMap.get("reporturl").toString());
                                if (null != objectMap.get("SHYSQM") || !objectMap.get("SHYSQM").equals(""))
                                    jcbgd.setShysxm(objectMap.get("SHYSQM").toString());
                                if (null != objectMap.get("SHYSBH") || !objectMap.get("SHYSBH").equals(""))
                                    jcbgd.setShysdm(objectMap.get("SHYSBH").toString());
                                if (null != objectMap.get("YXZD") || !objectMap.get("YXZD").equals(""))
                                    jcbgd.setYxzd(objectMap.get("YXZD").toString());
                                if (null != objectMap.get("YXBX") || !objectMap.get("YXBX").equals("")) {
                                    if (objectMap.get("YXBX").toString().equals("null")) {
                                        jcbgd.setYxbx("未检异常");
                                    } else {
                                        jcbgd.setYxbx(objectMap.get("YXBX").toString());
                                    }
                                }
                                if (null != objectMap.get("SJJLSJ") || !objectMap.get("SJJLSJ").equals(""))
                                    jcbgd.setZdsj(objectMap.get("SJJLSJ").toString());
                                if (null != objectMap.get("JCBW") || !objectMap.get("JCBW").equals(""))
                                    jcbgd.setJcbw(objectMap.get("JCBW").toString());
                                if (null != objectMap.get("SQRQSJ") || !objectMap.get("SQRQSJ").equals(""))
                                    jcbgd.setSqsj(objectMap.get("SQRQSJ").toString());
                                jcbgdService.save(jcbgd);
                    //开启和his对接
                    if (null != sfkqdyhis && sfkqdyhis.equals("Y")) {
                        List<String> baoGaoDans = ltkjHybgdService.getJianYanBaoGaoDan(order.getCardId());
                        List<String> jianChaBaoGaoDan = ltkjHybgdService.getJianChaBaoGaoDan(order.getCardId());
                        //同步检验
                        if (null != baoGaoDans && !baoGaoDans.isEmpty()) {
                            Date dates = new Date();
                            Map<String, Object> map = new HashMap<>();
                            map.put("his_registration_id", order.getCardId());
                            map.put("ksbm", "");
                            map.put("pationid", "");
                            map.put("ksrq", DateUtil.format(DateUtil.beginOfDay(order.getCreateTime()), "yyyy-MM-dd HH:mm:ss"));
                            map.put("jsrq", DateUtil.format(DateUtil.endOfDay(dates), "yyyy-MM-dd HH:mm:ss"));
                            map.put("pagecount", 10);
                            map.put("page", 1);
                            AjaxResult result = controller.Getlabreportinfo(map);
                            String result1 = getAjaxResult(result);
                            JSONObject object = getJSONObject(result1);
                            String code = object.getStr("ResultCode");
                            if (null == code || !code.equals("0")) {
                                return AjaxResult.error("化验项目暂时未出结果,请稍后同步!!!");
                            }
                            jcsqdService.saveLtkjExamJcsqd(order.getCardId());
                            testMapper.updateDetailByTjJcCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), "148");
                        }else {
                            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);
                                }
                            }
                            //同步化验项目
                            testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), doctorId);
                        }
                        /*同步检查 his接口*/
                        if (null != jianChaBaoGaoDan && jianChaBaoGaoDan.size() > 0) {
                            Map<String, Object> maps = new HashMap<>();
                            maps.put("his_registration_id", order.getCardId());
                            maps.put("ksbm", "体检中心");
                            maps.put("pagecount", 100);
                            maps.put("page", 1);
                            LambdaQueryWrapper<HisApiConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
                            lambdaQueryWrapper.eq(HisApiConfig::getApiMethod, "Getexamreportinfo");
                            HisApiConfig hisApiConfig = hisApiConfigService.getOne(lambdaQueryWrapper);
                            /*同步检查 his存储过程*/
                            AjaxResult 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");
                                if (null != datas && !datas.isEmpty()) {
                                    jcsqdService.deletedLtkjJcsqdByTjhAndTmh(order.getCardId());
                                    jcbgdService.deletedLtkjJcbgdByTjhAndTmh(order.getCardId());
                                    for (Map<String, Object> objectMap : datas) {
                                        //保存入参出参
                                        service.save(JSONUtil.parseObj(objectMap), "Getexamreportinfo", hisApiConfig, JSONUtil.toJsonStr(maps));
                                        LtkjExamJcbgd jcbgd = new LtkjExamJcbgd();
                                        jcbgd.setTjh(order.getCardId());
                                        if (null != objectMap.get("JCBGID") || !objectMap.get("JCBGID").equals(""))
                                            jcbgd.setTmh(objectMap.get("JCBGID").toString());
                                        if (null != objectMap.get("JCXMDM") || !objectMap.get("JCXMDM").equals(""))
                                            jcbgd.setXmdm(objectMap.get("JCXMDM").toString());
                                        if (null != objectMap.get("JCXMMC") || !objectMap.get("JCXMMC").equals(""))
                                            jcbgd.setXmmc(objectMap.get("JCXMMC").toString());
                                        if (null != objectMap.get("JCXMJG") || !objectMap.get("JCXMJG").equals(""))
                                            jcbgd.setBgNr(objectMap.get("JCXMJG").toString());
                                        if (null != objectMap.get("reporturl") || !objectMap.get("reporturl").equals(""))
                                            jcbgd.setBgUrl(objectMap.get("reporturl").toString());
                                        if (null != objectMap.get("SHYSQM") || !objectMap.get("SHYSQM").equals(""))
                                            jcbgd.setShysxm(objectMap.get("SHYSQM").toString());
                                        if (null != objectMap.get("SHYSBH") || !objectMap.get("SHYSBH").equals(""))
                                            jcbgd.setShysdm(objectMap.get("SHYSBH").toString());
                                        if (null != objectMap.get("YXZD") || !objectMap.get("YXZD").equals(""))
                                            jcbgd.setYxzd(objectMap.get("YXZD").toString());
                                        if (null != objectMap.get("YXBX") || !objectMap.get("YXBX").equals("")) {
                                            if (objectMap.get("YXBX").toString().equals("null")) {
                                                jcbgd.setYxbx("未检异常");
                                            } else {
                                                jcbgd.setYxbx(objectMap.get("YXBX").toString());
                                            }
                                        }
                                        if (null != objectMap.get("SJJLSJ") || !objectMap.get("SJJLSJ").equals(""))
                                            jcbgd.setZdsj(objectMap.get("SJJLSJ").toString());
                                        if (null != objectMap.get("JCBW") || !objectMap.get("JCBW").equals(""))
                                            jcbgd.setJcbw(objectMap.get("JCBW").toString());
                                        if (null != objectMap.get("SQRQSJ") || !objectMap.get("SQRQSJ").equals(""))
                                            jcbgd.setSqsj(objectMap.get("SQRQSJ").toString());
                                        jcbgdService.save(jcbgd);
                                    }
                                    jcsqdService.saveLtkjExamJcsqd(order.getCardId());
                                    testMapper.updateDetailByTjJcCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), doctorId);
                                }else {
                                    return AjaxResult.error("检查项目暂时未出结果,请稍后同步!!!");
                                }
                            }
                        }
                        return AjaxResult.success("同步成功");
                    }
                    //化验
                    testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), doctorId);
                    //检查
                    jcsqdService.saveLtkjExamJcsqd(order.getCardId());
                    return AjaxResult.success("同步成功");
                }
                return AjaxResult.success("同步成功");
                return AjaxResult.error("未查到该人员体检记录");
            }
            //化验
            testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), "148");
            //检查
            jcsqdService.saveLtkjExamJcsqd(order.getCardId());
            return AjaxResult.success("同步成功");
            return AjaxResult.error("该人员数据正在同步中,请稍等");
        } catch (InterruptedException e) {
            e.printStackTrace();
            return AjaxResult.error("该人员数据正在同步中,请稍等");
        } finally {
            lock.unlock();
        }
        return AjaxResult.error("未查到该人员体检记录");
    }
    private void saveHysqd(LtkjHysqd hysqd) {
@@ -1098,8 +1215,12 @@
                                      @ApiParam (value = "总检建议") @RequestParam (required = false) String advice,
                                      @ApiParam (value = "审核状态0待审核1已审核") @RequestParam Integer checkStatus) {
        int num = orderRemarkService.getTjYqOrderRemarkByTjNum(tjNumber);
        if (num > 0) return AjaxResult.error("有延期项目暂不能生成报告!!!");
        String config = configService.selectConfigByKey("sfjcwjhyqxm");
        if(null != config && config.equalsIgnoreCase("Y")){
            int num = orderRemarkService.getTjYqOrderRemarkByTjNum(tjNumber);
            if (num > 0) return AjaxResult.error("存在未检或延期项目暂不能生成报告!!!");
        }
        Date date = new Date();
        if (null != tjNumber) {
            Long userId = Long.valueOf(SecurityUtils.getLoginUser().getUserId());
            SysUser sysUser = userService.getById(userId);
@@ -1111,17 +1232,14 @@
                tjOrder.setCheckStatus(checkStatus);
                tjOrder.setStatus(TjConstants.TJ_CHECK);
                tjOrder.setCheckDoctor(sysUser.getNickName());
                tjOrder.setCheckTime(new Date());
                tjOrder.setCheckTime(date);
                tjOrder.setStatus(401);
                tjOrder.setFinishTime(date);
                if (orderService.updateById(tjOrder)) {
                    TjCustomer customer = customerService.getById(tjOrder.getUserId());
                    if (null != customer) {
                        customer.setCusNumber(customer.getCusNumber() + 1);
                        if (customerService.updateById(customer)) {
//                            LambdaQueryWrapper<TbTransition> wqq = new LambdaQueryWrapper<>();
//                            wqq.eq(TbTransition::getCusId, customer.getCusIdcard());
//                            wqq.eq(TbTransition::getCardId, customer.getCardId());
//                            transitionService.remove(wqq);
                            asyncService.updateCheckType(tjNumber);
                            return AjaxResult.success("操作成功");
                        }
@@ -1269,14 +1387,14 @@
        List<TjOrderDetail> tjOrderDetails = detailService.addHuaYanTable(tjNumber);
        if (null != remarkList && remarkList.size() > 0) {
        if (null != remarkList && !remarkList.isEmpty()) {
            for (TjOrderRemark remark : remarkList) {
                Map<String, Object> parent = new HashMap<>();
                parent.put("checkAdvice", one.getCheckAdvice());
                parent.put("parent", remark.getProName());
                parent.put("parentId", remark.getProId().toString());
                List<TjOrderDetail> dels = new ArrayList<>();
                if (null != tjOrderDetails && tjOrderDetails.size() > 0) {
                if (null != tjOrderDetails && !tjOrderDetails.isEmpty()) {
                    for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
                        if (remark.getProId().equals(tjOrderDetail.getProId())) {
                            String ckfw = tjOrderDetail.getStanId();
@@ -1357,7 +1475,7 @@
        List<TjOrderDetail> tjOrderDetails = detailService.addHuaYanAndCgTable(tjNumber);
        if (null != remarkList && remarkList.size() > 0) {
        if (null != remarkList && !remarkList.isEmpty()) {
            for (TjOrderRemark remark : remarkList) {
                Map<String, Object> parent = new HashMap<>();
                parent.put("checkAdvice", one.getCheckAdvice());
@@ -1366,7 +1484,7 @@
                parent.put("xmlb", remark.getXmlb());
                parent.put("", remark.getXmlb());
                List<TjOrderDetail> dels = new ArrayList<>();
                if (null != tjOrderDetails && tjOrderDetails.size() > 0) {
                if (null != tjOrderDetails && !tjOrderDetails.isEmpty()) {
                    for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
                        if (remark.getProsId().equals(tjOrderDetail.getProsId())) {
                            String ckfw = tjOrderDetail.getStanId();
@@ -1392,7 +1510,7 @@
                                        }else {
                                            tjOrderDetail.setYcbz("");
                                        }
                                        if (null != tjOrderDetail.getYcbz() && !tjOrderDetail.getYcbz().equals("")) {
                                        if (null != tjOrderDetail.getYcbz() && !tjOrderDetail.getYcbz().isEmpty()) {
                                            tjOrderDetail.setProResult(tjOrderDetail.getProResult() + " [" + tjOrderDetail.getYcbz() + "]");
                                        }
                                    }else {
@@ -1404,7 +1522,6 @@
                                        if (tjOrderDetail.getProResult() != null && tjOrderDetail.getProResult().contains("阳")) tjOrderDetail.setYcbz("↑");
                                    }
                                } catch (NumberFormatException ignored) {
                                    ignored.printStackTrace();
                                }
                            }else {
                                tjOrderDetail.setYcbz("");
@@ -1421,7 +1538,7 @@
                    } else {
                        parent.put("parentAdvice", null);
                    }
                    if (dels.size() == 0) {
                    if (dels.isEmpty()) {
                        continue;
                    }
                    parent.put("sons", dels);
@@ -1507,4 +1624,73 @@
        return AjaxResult.success(map);
    }
    @GetMapping ("/getzongjianyishengchakanyichangxiangmu")
    @ApiOperation (value = "总检查看异常项目接口")
    public AjaxResult getzongjianyishengchakanyichangxiangmu(@RequestParam String tjNum) {
        if (StrUtil.isNotBlank(tjNum)) {
            return zongjianyishengchakanyichangxiangmu(tjNum);
        }
        return AjaxResult.error();
    }
    private AjaxResult zongjianyishengchakanyichangxiangmu(String tjNumber) {
//        asyncService.updateCheckType(tjNumber);
        TjOrder one = orderService.getOrderByTjNum(tjNumber);
        if (one == null) {
            return AjaxResult.error("暂无数据!!");
        }
        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()){
                                List<Map<String,Object>> maps= rulesService.getyichangxiangmujianyiguize(tjOrderDetail.getProId().toString(),"",tjOrderDetail.getYcbz(),tjNumber);
                                if(null !=maps && !maps.isEmpty()){
                                    tjOrderDetail.setAdvices(maps);
                                }
                            }
                            dels.add(tjOrderDetail);
                        }
                    }
                    if(!dels.isEmpty()){
                        parent.put("proName",remark.getProName());
                        parent.put("jyjc",remark.getJyjc());
                        parent.put("sone",dels);
                        list.add(parent);
                    }
                } else {
                    return AjaxResult.success("该人员无异常项目");
                }
            }
            return AjaxResult.success(list);
        }
        return AjaxResult.success("该人员没有体检项目数据!");
    }
    @GetMapping ("/chushenyemianchakanxiangmujieguo")
    @ApiOperation (value = "初审页面查看项目结果接口")
    public AjaxResult chushenyemianchakanxiangmujieguo(@RequestParam String proId,@RequestParam String tjNum) {
        List<Map<String,Object>> maps = projectService.tjCsXmjgcx(tjNum,proId);
        return AjaxResult.success(maps);
    }
    @GetMapping ("/panduaniscunzaiweijian")
    @ApiOperation (value = "初审页面查看项目前判断是否全部未检接口")
    public AjaxResult panduaniscunzaiweijian(@RequestParam String tjNum) {
        int a = orderRemarkService.panduaniscunzaiweijian(tjNum);
        return AjaxResult.success(a);
    }
}