zhaowenxuan
昨天 dedacd79c93f8ef95e0cb986f5e7fbd27ddbd907
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCheckController.java
@@ -1,5 +1,6 @@
package com.ltkj.web.controller.system;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
@@ -7,10 +8,12 @@
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ltkj.common.annotation.RepeatSubmit;
import com.ltkj.common.core.domain.AjaxResult;
import com.ltkj.common.core.domain.entity.SysDept;
import com.ltkj.common.core.domain.entity.SysUser;
import com.ltkj.common.core.redis.RedisCache;
import com.ltkj.common.enums.DataSourceType;
@@ -23,6 +26,7 @@
import com.ltkj.hosp.mapper.TestMapper;
import com.ltkj.hosp.service.*;
import com.ltkj.hosp.sqlDomain.*;
import com.ltkj.hosp.vo.ProFcListVo;
import com.ltkj.hosp.vodomain.CsProVo;
import com.ltkj.hosp.vodomain.UpdateOrderRemarkVo;
import com.ltkj.mall.mallOrderUtils.TjConstants;
@@ -31,12 +35,16 @@
import com.ltkj.system.service.ISysUserService;
import com.ltkj.web.controller.his.HisApiGetMethodService;
import com.ltkj.web.controller.his.HisApiMethodService;
import com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException;
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;
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;
@@ -44,20 +52,24 @@
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;
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: 西安路泰科技有限公司/赵佳豪
 * @Date: 2022/12/6 14:29
 */
@RestController
@RequestMapping ("/check")
@Api (tags = "总检医师相关接口")
@RequestMapping("/check")
@Api(tags = "AAAAAAAAAAAA总检医师相关接口")
@Slf4j
public class TjCheckController {
    @Resource
@@ -110,11 +122,75 @@
    private HisApiMethodService controller;
    @Autowired
    private HisApiGetMethodService service;
    @Autowired
    private HisApiConfigService hisApiConfigService;
    @Autowired
    private RedissonClient redissonClient;
    @Autowired
    private ITjRulesService rulesService;
    @Autowired
    private ITjProAdvicerulesService tjProAdvicerulesService;
    @Autowired
    private TjOrderYcxmService ycxmService;
    @Autowired
    private SysConfigController configController;
    @Autowired
    private TjJcycxmService jcycxmService;
    @Resource
    private TjXdtgmdjgService xdtgmdjgService;
    @Resource
    private TjXdPictureController pictureController;
    @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 ("/getOperationPermissionsByTjNum")
    @ApiOperation (value = "(初审页面  和 医生页面)根据体检号获取是否可操作权限接口  true可操作  反之不可")
    public AjaxResult getOperationPermissionsByTjNum(@ApiParam (value = "体检号") @RequestParam String tjNumber) {
//    @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可操作  反之不可")
    public AjaxResult getOperationPermissionsByTjNum(@ApiParam(value = "体检号") @RequestParam String tjNumber) {
        TjOrder order = orderService.getOrderByTjNum(tjNumber);
        if (null != order) {
            Integer status = order.getStatus();
@@ -129,17 +205,18 @@
    }
    @GetMapping ("/getCsList")
    @ApiOperation (value = "初审查询体检记录客户列表")//0待1已
    @GetMapping("/getCsList")
    @ApiOperation(value = "初审查询体检记录客户列表")//0待1已
    @Transactional
    public AjaxResult getCsList(@ApiParam (value = "审核状态  0待审核  1已审核") @RequestParam (required = false) Integer checkStatus,
                                @ApiParam (value = "页码数(默认1)") @RequestParam (defaultValue = "1") Integer page,
                                @ApiParam (value = "显示条数(默认10)") @RequestParam (defaultValue = "10") Integer pageSize,
                                @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 beginTime,
                                @ApiParam (value = "结束时间") @RequestParam (required = false) String endTime) {
    public AjaxResult getCsList(@ApiParam(value = "审核状态  0待审核  1已审核") @RequestParam(required = false) Integer checkStatus,
                                @ApiParam(value = "页码数(默认1)") @RequestParam(defaultValue = "1") Integer page,
                                @ApiParam(value = "显示条数(默认10)") @RequestParam(defaultValue = "10") Integer pageSize,
                                @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) {
//        DateTime beginTimes = null;
//        DateTime endTimes = null;
@@ -223,16 +300,17 @@
        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));
    }
    /**
     * 初审
     */
    @GetMapping ("/cSWebGetProByTjNumAndOrderId")
    @ApiOperation (value = "(初审页面)点击体检人员展示体检项目接口")
    public AjaxResult cSWebGetProByTjNumAndOrderId(@ApiParam (value = "体检号") @RequestParam String tjNumber) {
    @GetMapping("/cSWebGetProByTjNumAndOrderId")
    @ApiOperation(value = "(初审页面)点击体检人员展示体检项目接口")
    public AjaxResult cSWebGetProByTjNumAndOrderId(@ApiParam(value = "体检号") @RequestParam String tjNumber) {
//        List<TjOrderRemark> orderRemarkList = orderRemarkService.getTjOrderRemarkListByTjNum(tjNumber);
//        List<CsProVo> list = new ArrayList<>();
//        if (null != orderRemarkList && orderRemarkList.size() > 0) {
@@ -261,8 +339,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) {
@@ -270,19 +353,30 @@
                }
            });
        }
        return AjaxResult.success(list);
        return list;
    }
    @PostMapping("/newaddOrderYcXmJyByTjh")
    @ApiOperation(value = "总检医生页面新增异常项目建议(单个)")
    public AjaxResult newaddOrderYcXmJyByTjh(@RequestBody TjOrderYcxm ycxm) {
        ycxm.setJynr(JSONUtil.toJsonStr(ycxm.getMap()));
        ycxmService.saveOrUpdate(ycxm);
        return AjaxResult.success();
    }
    /**
     * 初审
     */
    @GetMapping ("/confirmOrder")
    @ApiOperation (value = "初审(并修改状态)接口")
    @GetMapping("/confirmOrder")
    @ApiOperation(value = "初审(并修改状态)接口")
    @Transactional
    public AjaxResult confirmOrder(@ApiParam (value = "tjNumber") @RequestParam String tjNumber,
                                   @ApiParam (value = "状态 0同意 1拒绝 默认同意") @RequestParam (defaultValue = "0") Integer status,
                                   @ApiParam (value = "驳回理由") @RequestParam (required = false) String remark) {
    public AjaxResult confirmOrder(@ApiParam(value = "tjNumber") @RequestParam String tjNumber,
                                   @ApiParam(value = "状态 0同意 1拒绝 默认同意") @RequestParam(defaultValue = "0") Integer status,
                                   @ApiParam(value = "驳回理由") @RequestParam(required = false) String remark) {
        int num = orderRemarkService.getTjYqOrderRemarkByTjNum(tjNumber);
        if (num > 0) return AjaxResult.error("请检查是否存在未检或延期项目");
        if (null != tjNumber) {
@@ -295,7 +389,7 @@
                tjOrder.setConfirmStatus(String.valueOf(status));
                if (status == 0) {
                    tjOrder.setStatus(TjConstants.TJ_CHECK);
                    asyncService.updateCheckType(tjNumber);
//                    asyncService.updateCheckType(tjNumber);
                } else {
                    tjOrder.setStatus(TjConstants.TJ_REFUSED);
                }
@@ -305,8 +399,8 @@
                    confirmLog.setTjNum(tjNumber);
                    confirmLog.setStatus(status);
                    confirmLogService.save(confirmLog);
                    asyncService.wCScheckSetCustomerLisByRedis(orderService.getCsTjOrderList(tjNumber, 0, null, null, null));
                    asyncService.yCScheckSetCustomerLisByRedis(orderService.getCsTjOrderList(tjNumber, 1, null, null, null));
//                    asyncService.wCScheckSetCustomerLisByRedis(orderService.getCsTjOrderList(tjNumber, 0, null, null, null));
//                    asyncService.yCScheckSetCustomerLisByRedis(orderService.getCsTjOrderList(tjNumber, 1, null, null, null));
                    return AjaxResult.success("操作成功");
                }
                return AjaxResult.error("操作失败");
@@ -320,25 +414,28 @@
    /**
     * 同步sql server数据到本地数据库数据接口
     */
    @GetMapping ("/dataSynchronization")
    @ApiOperation (value = "同步sql server数据到本地数据库数据接口")
    @GetMapping("/dataSynchronization")
    @ApiOperation(value = "同步sql server数据到本地数据库数据接口")
    @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);
            if (tryLock) {
                //根据配置调取存储过程 将临时表数据存入预约表2023.12.12
                final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData");
                final String sfkqdyhis = configService.selectConfigByKey("sfkqdyhis");
                final String sfkqdshitulianjie = configService.selectConfigByKey("sfkqdshitulianjie");
                TjOrder order = orderService.getOrderByTjNum(tjNumber);
                if (null != order) {
        //根据配置调取存储过程 将临时表数据存入预约表2023.12.12
        final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData");
        final String sfkqdyhis = configService.selectConfigByKey("sfkqdyhis");
        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);
@@ -352,212 +449,650 @@
//                        }
//                    }
//                }
                //同步化验项目
                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());
                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();
                            String jytbfs = configService.selectConfigByKey("jytbfs");
                            AjaxResult result;
                            if (StrUtil.isBlank(jytbfs) || jytbfs.equalsIgnoreCase("Y")){
                                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);
                                result = controller.Getlabreportinfo(map);
                            }else{
                                result = ltkjHysqdService.getAsyncDataByPro("体检中心", order.getCardId(), "''", 100, 1);
                            }
                            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)) {
                                    if(StrUtil.isBlank(jytbfs) || jytbfs.equalsIgnoreCase("Y")){
                                        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);
                                }
                            }
                        }
                    }
                    /*同步检查 his接口*/
//                    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);
                    /*同步检查 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.size()>0){
                            jcsqdService.deletedLtkjJcsqdByTjhAndTmh(order.getCardId());
                            jcbgdService.deletedLtkjJcbgdByTjhAndTmh(order.getCardId());
                            for (Map<String, Object> objectMap : datas) {
//                                LtkjExamJcsqd jybgid = jcsqdService.getLtkjJcsqdByTjhAndTmh(order.getCardId(), objectMap.get("JCBGID").toString());
//                                if (null != jybgid) {
//                                    jcsqdService.deletedLtkjJcsqdByTjhAndTmh(order.getCardId(), objectMap.get("JCBGID").toString());
//                                    jcbgdService.deletedLtkjJcbgdByTjhAndTmh(jybgid.getTmh());
//                                }
                                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("未检异常");
                                        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);
                                            }
                                        }
                                    }else {
                                        jcbgd.setYxbx(objectMap.get("YXBX").toString());
                                        saveHybgdPro(hysqd);
                                    }
                                }
                                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.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());
                //同步检查项目
                testMapper.updateDetailByTjJcCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), UserHoder.getLoginUser().getUserId());
                asyncService.updateCheckType(order.getTjNumber());
                        /*同步检查 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存储过程*/
                            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();
                            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) {
                                    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(), dqyyyqbm);
                        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(), dqyyyqbm);
                        if (null != jcsqdList && !jcsqdList.isEmpty()) {
                            jcsqdService.deletedLtkjJcsqdByTjhAndTmh(order.getCardId());
                            jcbgdService.deletedLtkjJcbgdByTjhAndTmh(order.getCardId());
                            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.error("未查到该人员体检记录");
            }
            return AjaxResult.success("同步成功");
//            return AjaxResult.error("化验项目暂时无结果,请稍后同步!!!");
            return AjaxResult.error("该人员数据正在同步中,请稍等");
        } catch (InterruptedException e) {
            log.error(String.valueOf(e), e.getMessage());
            return AjaxResult.error("该人员数据正在同步中,请稍等");
        } finally {
            lock.unlock();
        }
        return AjaxResult.error();
    }
    /**
     * 同步sql server数据到本地数据库数据接口
     */
    @GetMapping("/dataSynchronizationApi")
    @ApiOperation(value = "同步sql server数据到本地数据库数据接口")
    @RepeatSubmit
//    @Transactional
    public AjaxResult dataSynchronizationApi(@RequestParam String tjNumber) {
        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) {
                    //开启字典弹窗
                    if ("Y".equals(getInfoFromSqlData)) {
                        tbhyxm(order);
                        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());
                        //同步检验
                        String resultMsg = "";
                        if (null != baoGaoDans && !baoGaoDans.isEmpty()) {
                            Date dates = new Date();
                            String jytbfs = configService.selectConfigByKey("jytbfs");
                            AjaxResult result;
                            if (StrUtil.isBlank(jytbfs) || jytbfs.equalsIgnoreCase("Y")){
                                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);
                                result = controller.Getlabreportinfo(map);
                            }else {
                                result = ltkjHysqdService.getAsyncDataByPro("体检中心", order.getCardId(), "''", 100, 1);
                            }
                            log.info("检验项目查询返回值:      " + JSONUtil.toJsonStr(result));
                            String result1 = getAjaxResult(result);
                            JSONObject object = getJSONObject(result1);
                            String code = object.getStr("ResultCode");
                            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"));// 检验报告 ID
                                    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(StrUtil.isBlank(jytbfs) || jytbfs.equalsIgnoreCase("Y")){
                                        if (isInsertHysqd) {
                                            saveHysqd(hysqd);
                                        } else {
                                            saveHybgd(hysqd);
                                        }
                                    }else {
                                        if (isInsertHysqd) {
                                            saveHysqdPro(hysqd);
                                        } else {
                                            saveHybgdPro(hysqd);
                                        }
                                    }
                                }
                            } else {
                                resultMsg = "化验项目暂时未出结果,请稍后同步!!!";
                            }
                            //同步化验项目
                            testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), doctorId);
                        }
                        /*同步检查 his接口*/
                        if (null != jianChaBaoGaoDan && !jianChaBaoGaoDan.isEmpty()) {
                            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存储过程*/
                            String jctbfs = configService.selectConfigByKey("jctbfs");
                            AjaxResult results = null;
                            if (StrUtil.isBlank(jctbfs) || jctbfs.equalsIgnoreCase("Y")) {
                                results = service.getHISDataNew("Getexamreportinfo", maps);
                            } else {
                                results = jcsqdService.getTjJcProByHisCall("体检中心", order.getCardId(), "''", 100, 1, "'1'");
                                DynamicDataSourceContextHolder.clearDataSourceType();
                            }
                            log.info("检查项目查询返回值:      " + JSONUtil.toJsonStr(results));
                            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());
                                        jcbgd.setCreateTime(new Date());
                                        jcbgdService.save(jcbgd);
                                    }
                                    jcsqdService.saveLtkjExamJcsqd(order.getCardId());
//                                    List<LtkjExamJcsqd> jcsqdList = jcsqdService.getLtkjJcsqdByTjh(order.getCardId());
//                                    jcycxmService.deletedByTjh(order.getTjNumber());
//                                    if(!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("jczyy");
//                                                        String[] split1 = jcsqd.getJcxmid().split(";");
//                                                        jcycxm.setProId(split1[0]);
//                                                        jcycxm.setProName(jcsqd.getJcxmmc());
//                                                        jcycxm.setCreateTime(new Date());
//                                                        jcycxm.setJcjg(jg);
//                                                        jcycxmService.save(jcycxm);
//                                                    }
//                                                }
//                                            }
//                                        }
//                                    }
                                    configController.tjjcycxm(tjNumber,  "0");
                                    testMapper.updateDetailByTjJcCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), doctorId);
                                } else {
                                    resultMsg += "\n检查项目暂时未出结果,请稍后同步!!!";
                                }
                            }
                        }
                        if (StrUtil.isBlank(resultMsg))
                            return AjaxResult.success("同步成功");
                        else return AjaxResult.error(resultMsg);
                    }
                    return AjaxResult.success("同步成功");
                }
                return AjaxResult.error("未查到该人员体检记录");
            }
            return AjaxResult.error("该人员数据正在同步中,请稍等");
        } catch (InterruptedException e) {
            log.error(String.valueOf(e), e.getMessage());
            return AjaxResult.error("该人员数据正在同步中,请稍等");
        } finally {
            lock.unlock();
        }
    }
    private void saveHysqd(LtkjHysqd hysqd) {
        if (ltkjHysqdService.save(hysqd)) {
            saveHybgd(hysqd);
        }
    }
    private void saveHysqdPro(LtkjHysqd hysqd) {
        if (ltkjHysqdService.save(hysqd)) {
            saveHybgdPro(hysqd);
        }
    }
    private void saveHybgd(LtkjHysqd 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"));
                bgd.setCreateTime(new Date());
//                            bgd.setTpurl(js.getStr(""));
                QueryWrapper<LtkjHybgd> queryWrapper = new QueryWrapper<>(bgd);
                List<LtkjHybgd> list = ltkjHybgdService.list(queryWrapper);
                if (list.isEmpty())
                    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());
                QueryWrapper<LtkjHybgd> queryWrapper = new QueryWrapper<>(bgd);
                List<LtkjHybgd> list = ltkjHybgdService.list(queryWrapper);
                if (list.isEmpty())
                    ltkjHybgdService.save(bgd);
            }
        }
    }
    private void saveHybgdPro(LtkjHysqd hysqd) {
        List<Map<String, Object>> mapList = ltkjHysqdService.getAsyncJybgdByPro(hysqd.getTmh());
        log.info("usp_his_getlabdetailinfolttj 返回->\n{}",JSONUtil.toJsonStr(mapList));
        for (Map<String, Object> map : mapList) {
            JSONObject js = JSONUtil.parseObj(map);
            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.setCreateTime(new Date());
            QueryWrapper<LtkjHybgd> queryWrapper = new QueryWrapper<>(bgd);
            List<LtkjHybgd> list = ltkjHybgdService.list(queryWrapper);
            if (list.isEmpty())
                ltkjHybgdService.save(bgd);
        }
        List<Map<String, Object>> mapList1 = ltkjHysqdService.getAsyncJybgdWswByPro(hysqd.getTmh());
        log.info("usp_his_getlabgermrepinfolttj 返回->\n{}",JSONUtil.toJsonStr(mapList1));
        for (Map<String, Object> map : mapList1) {
            JSONObject js = JSONUtil.parseObj(map);
            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());
            QueryWrapper<LtkjHybgd> queryWrapper = new QueryWrapper<>(bgd);
            List<LtkjHybgd> list = ltkjHybgdService.list(queryWrapper);
            if (list.isEmpty())
                ltkjHybgdService.save(bgd);
        }
    }
    //将方法返回值解析成json格式
@@ -573,7 +1108,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());
@@ -582,7 +1117,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();
@@ -596,17 +1131,18 @@
    /**
     * 查询体检记录客户列表
     */
    @GetMapping ("/getList")
    @ApiOperation (value = "查询体检记录客户列表")//0待1已
    @GetMapping("/getList")
    @ApiOperation(value = "查询体检记录客户列表")//0待1已
//    @PreAuthorize("@ss.hasPermi('check:check:getList')")
    public AjaxResult getList(@ApiParam (value = "审核状态0待审核1已审核") @RequestParam (required = false) Integer checkStatus,
                              @ApiParam (value = "页码数(默认1)") @RequestParam (defaultValue = "1") Integer page,
                              @ApiParam (value = "显示条数(默认10)") @RequestParam (defaultValue = "10") Integer pageSize,
                              @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 beginTime,
                              @ApiParam (value = "结束时间") @RequestParam (required = false) String endTime) {
    public AjaxResult getList(@ApiParam(value = "审核状态0待审核1已审核") @RequestParam(required = false) Integer checkStatus,
                              @ApiParam(value = "页码数(默认1)") @RequestParam(defaultValue = "1") Integer page,
                              @ApiParam(value = "显示条数(默认10)") @RequestParam(defaultValue = "10") Integer pageSize,
                              @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 beginTime,
                              @ApiParam(value = "结束时间") @RequestParam(required = false) String endTime,
                              @ApiParam(value = "体检类型") @RequestParam(required = false) String tjCategory) {
        //        String config = configService.selectConfigByKey("tj_confirm");
//        DateTime beginTimes = null;
//        DateTime endTimes = null;
@@ -703,8 +1239,119 @@
        if (name == null) name = "";
        if (beginTime == null) beginTime = "";
        if (endTime == null) endTime = "";
        return AjaxResult.success(orderService.getCunChuGuoChengCustomerList(tjNumber, page, pageSize, checkStatus, value, beginTime, endTime, name));
        return AjaxResult.success(orderService.getCunChuGuoChengCustomerList(tjNumber, page, pageSize, checkStatus, value, beginTime, endTime, name,tjCategory));
    }
    @GetMapping("/getBghsList")
    @ApiOperation(value = "报告核收页面查询接口")//0待1已
//    @PreAuthorize("@ss.hasPermi('check:check:getList')")
    public AjaxResult getBghsList(@ApiParam(value = "页码数(默认1)") @RequestParam(defaultValue = "1") Integer page,
                                  @ApiParam(value = "显示条数(默认10)") @RequestParam(defaultValue = "10") Integer pageSize,
                                  @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 beginTime,
                                  @ApiParam(value = "结束时间") @RequestParam(required = false) String endTime) {
        //        String config = configService.selectConfigByKey("tj_confirm");
//        DateTime beginTimes = null;
//        DateTime endTimes = null;
//        if (null != beginTime && null != endTime) {
//            beginTimes = DateUtil.beginOfDay(DateUtil.parse(beginTime));
//            endTimes = DateUtil.endOfDay(DateUtil.parse(endTime));
//        }
//        asyncService.checkSetCustomerLisByRedis(config);
//        //初始化体检订单表
//        List<TjOrder> orderList = null;
//        List<TjCustomer> customerList = new ArrayList<>();
//        Map<String, Object> map = new HashMap<>();
//
//        //姓名查询
//        if (null != name && !"".equals(name)) {
//            List<TjCustomer> list = customerService.getTjCustomerList(name);
//            if (null != list && list.size() > 0) {
//                List<TjCustomer> lists = new ArrayList<>();
//                for (TjCustomer customer : list) {
//                    if ("Y".equals(config)) {
//                        orderList = orderService.getCsTjOrderListByCusId1(customer.getCusId());
//                    } else {
//                        orderList = orderService.getTjOrderListByCusId(customer.getCusId());
//                    }
//                    if (null != orderList && orderList.size() > 0) {
//                        for (TjOrder tjOrder : orderList) {
//                            customer.setTjNumber(tjOrder.getTjNumber());
//                            customer.setTjStatus(Long.valueOf(tjOrder.getCheckStatus()));
//                            customer.setOrderId(tjOrder.getOrderId());
//                            customer.setTjTime(tjOrder.getFinishTime());
//                            customer.setFinishTime(tjOrder.getFinishTime());
//                            customer.setCusName(MatchUtils.hideCusName(customer.getCusName()));
//                            customer.setCusPhone(MatchUtils.hidePhoneNum(customer.getCusPhone()));
//                            customer.setCusIdcard(MatchUtils.hideIdCardNum(customer.getCusIdcard()));
//                            customer.setConfirmStatus(String.valueOf(tjOrder.getStatus()));
//                            customer.setTjCategory(tjOrder.getTjCategory());
//                            if (tjOrder.getFirmId().equals("0")) {
//                                customer.setTjCompName(null);
//                            } else {
//                                customer.setTjCompName(compService.selectDictCompByDrugManufacturerId(tjOrder.getFirmId()).getCnName());
//                            }
//                            lists.add(customer);
//                        }
//                    }
//                }
//                List<TjCustomer> customers = null;
//                if (lists.size() > 0) {
//                    customers = lists.stream().skip((long) (page - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
//                }
//                map.put("customers", customers);
//                map.put("total", lists.size());
//                return AjaxResult.success(map);
//            }
//            return AjaxResult.success("暂无数据");
//        }
//
//        //条件查询
//        if (null != tjNumber || null != compId || (null != beginTime && null != endTime)) {
//            //判断是否开启初审
//            if ("Y".equals(config)) {
//                orderList = orderService.getCsTjOrderList1(tjNumber, checkStatus, compId, beginTimes, endTimes);
//            } else {
//                orderList = orderService.getTjOrderList(tjNumber, checkStatus, compId, beginTimes, endTimes);
//            }
//            return getResult(page, pageSize, orderList, customerList, map);
//        }
//
//        List<TjCustomer> customers = null;
//        if (null != checkStatus && checkStatus == 0) {
//            customers = redisCache.getCacheMapValue("check", "ws");
//        }
//        if (null != checkStatus && checkStatus == 1) {
//            customers = redisCache.getCacheMapValue("check", "ys");
//        }
//        if (customers != null && customers.size() > 0) {
////            asyncService.addRedis(customers);
//            List<TjCustomer> customerLists = customers.stream().skip((long) (page - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
//            map.put("customers", customerLists);
//            map.put("total", customers.size());
//            return AjaxResult.success(map);
//        } else {
//            //判断是否开启初审
//            if ("Y".equals(config)) {
//                orderList = orderService.getCsTjOrderList1(tjNumber, checkStatus, compId, beginTimes, endTimes);
//            } else {
//                orderList = orderService.getTjOrderList(tjNumber, checkStatus, compId, beginTimes, endTimes);
//            }
//            return getResult(page, pageSize, orderList, customerList, map);
//        }
        String value = String.valueOf(compId);
        if (tjNumber == null) tjNumber = "";
        if (compId == null) value = "";
        if (name == null) name = "";
        if (beginTime == null) beginTime = "";
        if (endTime == null) endTime = "";
        return AjaxResult.success(orderService.getgetBghsList(tjNumber, page, pageSize, value, beginTime, endTime, name));
    }
    /**
     * 根据体检订单号获取体检详情信息接口
@@ -714,15 +1361,21 @@
     * @param checkStatus
     * @return
     */
    @PutMapping ("/getTjdetailList")
    @ApiOperation (value = "根据体检订单号获取体检详情信息(并修改状态)接口")
    @PutMapping("/getTjdetailList")
    @ApiOperation(value = "根据体检订单号获取体检详情信息(并修改状态)接口")
//    @PreAuthorize("@ss.hasPermi('check:check:getTjdetailList')")
    public AjaxResult getTjdetailList(@ApiParam (value = "体检tjNumber") @RequestParam String tjNumber,
                                      @ApiParam (value = "总检建议") @RequestParam (required = false) String advice,
                                      @ApiParam (value = "审核状态0待审核1已审核") @RequestParam Integer checkStatus) {
    public AjaxResult getTjdetailList(@ApiParam(value = "体检tjNumber") @RequestParam String tjNumber,
                                      @ApiParam(value = "总检建议") @RequestParam(required = false) String advice,
                                      @ApiParam(value = "审核状态0待审核1已审核") @RequestParam Integer checkStatus,
                                      @ApiParam(value = "职业结论") @RequestParam(required = false) String zhiyeJl,
                                      @ApiParam(value = "职业结果") @RequestParam(required = false) String zhiyeJg) {
        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);
@@ -734,17 +1387,19 @@
                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 (StrUtil.isNotBlank(zhiyeJl))
                    tjOrder.setZhiyeJl(zhiyeJl);
                if (StrUtil.isNotBlank(zhiyeJg))
                    tjOrder.setZhiyeJg(zhiyeJg);
                if (orderService.updateById(tjOrder)) {
                    TjCustomer customer = customerService.getById(tjOrder.getUserId());
                    if (null != customer) {
                        customer.setCusNumber(customer.getCusNumber() + 1);
                        customer.setCardId("0");
                        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("操作成功");
                        }
@@ -765,9 +1420,9 @@
     * @param tjNumber
     * @return
     */
    @GetMapping ("/updateCheckType")
    @ApiOperation (value = "总检点击体检信息详情————非化验项目")
    public AjaxResult updateCheckType(@ApiParam (value = "客户体检号") @RequestParam String tjNumber) {
    @GetMapping("/updateCheckType")
    @ApiOperation(value = "总检点击体检信息详情————非化验项目")
    public AjaxResult updateCheckType(@ApiParam(value = "客户体检号") @RequestParam String tjNumber) {
//        if (redisCache.hasKey("updateCheckType" + tjNumber)) {
//            List<Map<String, Object>> cacheMapValue = redisCache.getCacheMapValue("updateCheckType" + tjNumber, tjNumber);
//            return AjaxResult.success(cacheMapValue);
@@ -874,9 +1529,9 @@
     * @param tjNumber
     * @return
     */
    @GetMapping ("/updateCheckTypeHuaYan")
    @ApiOperation (value = "总检点击体检信息详情————化验项目")
    public AjaxResult updateCheckTypeHuaYan(@ApiParam (value = "客户体检号") @RequestParam String tjNumber) {
    @GetMapping("/updateCheckTypeHuaYan")
    @ApiOperation(value = "总检点击体检信息详情————化验项目")
    public AjaxResult updateCheckTypeHuaYan(@ApiParam(value = "客户体检号") @RequestParam String tjNumber) {
//        asyncService.updateCheckType(tjNumber);
        List<Map<String, Object>> list = new ArrayList<>();
        TjOrder one = orderService.getOrderByTjNum(tjNumber);
@@ -892,14 +1547,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();
@@ -958,9 +1613,9 @@
    }
    @GetMapping ("/updateHYANDCGCheckType")
    @ApiOperation (value = "总检点击体检信息详情————常规和化验项目")
    public AjaxResult updateHYANDCGCheckType(@ApiParam (value = "客户体检号") @RequestParam String tjNumber) {
    @GetMapping("/updateHYANDCGCheckType")
    @ApiOperation(value = "总检点击体检信息详情————常规和化验项目")
    public AjaxResult updateHYANDCGCheckType(@ApiParam(value = "客户体检号") @RequestParam String tjNumber) {
        return getResult(tjNumber);
    }
@@ -975,12 +1630,12 @@
//        final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData");
//        if(null !=getInfoFromSqlData && getInfoFromSqlData.equals("Y"))
//        tbhyxm(one);
        TjCustomer customer = customerService.getById(one.getUserId());
//        TjCustomer customer = customerService.getById(one.getUserId());
        List<TjOrderRemark> remarkList = orderRemarkService.addHuaYanAndCgTable(tjNumber);
        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());
@@ -988,40 +1643,63 @@
                parent.put("parentId", remark.getProsId());
                parent.put("xmlb", remark.getXmlb());
                parent.put("", remark.getXmlb());
                parent.put("zhiyejl",one.getZhiyeJl());
                parent.put("zhiyejg", one.getZhiyeJg());
                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();
                            if (null !=ckfw && StrUtil.isNotBlank(tjOrderDetail.getProAdvice())) {
                            if (null != ckfw && StrUtil.isNotBlank(tjOrderDetail.getProAdvice())) {
                                ckfw = ckfw.replace(tjOrderDetail.getProAdvice().trim(), "");
                            }
                            if (StrUtil.isNotBlank(ckfw)) {
                                try {
                                    Integer.parseInt(tjOrderDetail.getYcbz());
                                    String[] split = ckfw.split("-");
                                    BigDecimal min = new BigDecimal(split[0]);
                                    BigDecimal max = new BigDecimal(split[1]);
                                    String proResult = tjOrderDetail.getProResult();
                                    BigDecimal jyjgval = new BigDecimal(proResult);
                                    if (jyjgval.compareTo(min) < 0) {
                                        tjOrderDetail.setYcbz("↓");
                                    } else if (jyjgval.compareTo(max) > 0) {
                                        tjOrderDetail.setYcbz("↑");
                                    if (ckfw != null && ckfw.contains("-")) {
                                        Integer.parseInt(tjOrderDetail.getYcbz());
                                        String[] split = ckfw.split("-");
                                        BigDecimal min = new BigDecimal(split[0]);
                                        BigDecimal max = new BigDecimal(split[1]);
                                        String proResult = tjOrderDetail.getProResult();
                                        if (null != proResult) {
                                            BigDecimal jyjgval = new BigDecimal(proResult);
                                            if (jyjgval.compareTo(min) < 0) {
                                                tjOrderDetail.setYcbz("↓");
                                            } else if (jyjgval.compareTo(max) > 0) {
                                                tjOrderDetail.setYcbz("↑");
                                            } else if (proResult.contains("阴")) {
                                                tjOrderDetail.setYcbz("");
                                            } else {
                                                tjOrderDetail.setYcbz("");
                                            }
                                            if (null != tjOrderDetail.getYcbz() && !tjOrderDetail.getYcbz().isEmpty()) {
                                                tjOrderDetail.setProResult(tjOrderDetail.getProResult() + " [" + tjOrderDetail.getYcbz() + "]");
                                            }
                                        } else {
                                            tjOrderDetail.setYcbz("");
                                        }
                                    } else {
                                        tjOrderDetail.setYcbz("");
                                        if (tjOrderDetail.getProResult() != null && tjOrderDetail.getProResult().contains("阴"))
                                            tjOrderDetail.setYcbz("");
                                        if (tjOrderDetail.getProResult() != null && tjOrderDetail.getProResult().contains("阳"))
                                            tjOrderDetail.setYcbz("↑");
                                    }
                                } catch (NumberFormatException ignored) {
                                    ignored.printStackTrace();
                                }
                                if (null != tjOrderDetail.getYcbz() && !tjOrderDetail.getYcbz().equals("")) {
                                    tjOrderDetail.setProResult(tjOrderDetail.getProResult() + " [" + tjOrderDetail.getYcbz() + "]");
                                }
                            }else {
                            } else {
//                                tjOrderDetail.setYcbz("");
                                if (tjOrderDetail.getProResult() != null && tjOrderDetail.getProResult().contains("阴"))
                                    tjOrderDetail.setYcbz("");
                                if (tjOrderDetail.getProResult() != null && tjOrderDetail.getProResult().contains("阳"))
                                    tjOrderDetail.setYcbz("↑");
                                tjOrderDetail.setProResult(tjOrderDetail.getProResult());
                            }
                            dels.add(tjOrderDetail);
                            if (remark.getOrgType().equals(tjOrderDetail.getOrgType())) {
                                dels.add(tjOrderDetail);
                            }
                        }
                    }
                    String summary = remark.getSummary();
@@ -1031,9 +1709,15 @@
                    } else {
                        parent.put("parentAdvice", null);
                    }
                    if (dels.size() == 0) {
                    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());
@@ -1052,10 +1736,10 @@
    }
    @GetMapping ("/getTm")
    @ApiOperation (value = "获取条码")
    @GetMapping("/getTm")
    @ApiOperation(value = "获取条码")
//    @PreAuthorize("@ss.hasPermi('check:check:getTm')")
    public AjaxResult getTm(@ApiParam (value = "客户体检号") @RequestParam String tjNumber) {
    public AjaxResult getTm(@ApiParam(value = "客户体检号") @RequestParam String tjNumber) {
        return AjaxResult.success(tjNumber);
    }
@@ -1064,10 +1748,10 @@
     *
     * @return
     */
    @PostMapping ("/checkUpdateOrderRemark")
    @ApiOperation (value = "总检修改备注接口")
    @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());
@@ -1117,4 +1801,435 @@
        return AjaxResult.success(map);
    }
    @GetMapping("/getzongjianyishengchakanyichangxiangmu")
    @ApiOperation(value = "总检查看异常项目接口")
    public AjaxResult getzongjianyishengchakanyichangxiangmu(@RequestParam String tjNum) {
        try {
            if (StrUtil.isNotBlank(tjNum)) {
                TjOrder one = orderService.getOrderByTjNum(tjNum);
                if (one == null) {
                    return AjaxResult.error("暂无数据!!");
                }
                yichangxiangmu(tjNum);
                LambdaQueryWrapper<TjOrderYcxm> wq = new LambdaQueryWrapper<>();
                wq.eq(TjOrderYcxm::getTjh, tjNum);
                List<TjOrderYcxm> list = ycxmService.list(wq);
                if (null != list && !list.isEmpty()) {
                    Collections.reverse(list);
                    return getOrderYcxmList(list);
                } else {
                    return zongjianyishengchakanyichangxiangmu(tjNum);
                }
            }
            return AjaxResult.error();
        } catch (Exception ex) {
            //throw new RuntimeException(ex);
            log.error(ex.getMessage());
            return AjaxResult.error();
        }
    }
    private static AjaxResult getOrderYcxmList(List<TjOrderYcxm> list) {
        try {
            List<Map<String, Object>> maps = getYcxmMapList(list);
            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());
                return AjaxResult.success(collect1);
            }
            return AjaxResult.success(maps);
        } catch (Exception ex) {
//            throw new RuntimeException(ex);
            log.error(ex.getMessage());
            return AjaxResult.error();
        }
    }
    private static List<Map<String, Object>> getYcxmMapList(List<TjOrderYcxm> list) {
        try {
            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);
            }
            return maps;
        } catch (NumberFormatException ex) {
//            throw new RuntimeException(ex);
            log.error(ex.getMessage());
            return null;
        }
    }
    private AjaxResult zongjianyishengchakanyichangxiangmu(String tjNumber) {
        List<Map<String, Object>> list = new ArrayList<>();
        try {
            List<TjOrderYcxm> tjOrderYcxms = new ArrayList<>();
            TjOrder order = orderService.getOrderByTjNum(tjNumber);
            String xb= customerService.getSexByTjh(tjNumber);
            if (null != order) {
                List<TjOrderRemark> remarkList = orderRemarkService.getzongjianyishengchakanyichangxiangmu(tjNumber);
                List<TjOrderDetail> tjOrderDetails = detailService.getzongjianyishengchakanyichangxiangmu(tjNumber);
                LambdaQueryWrapper<TjOrderYcxm> wq = new LambdaQueryWrapper<>();
                wq.eq(TjOrderYcxm::getTjh, tjNumber);
                List<TjOrderYcxm> ycxmList = ycxmService.list(wq);
                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")) {
                                            String replacedAll = tjOrderDetail.getProName().replaceAll("[((][^))]*[\u4e00-\u9fa5]+[^))]*[))]", "").replaceAll("[((][^))]*[))]", "")
                                                    .replaceAll("[ 测定检测]", "").replaceAll("\\[.*?\\]", "").replaceAll("◆", "");
                                            List<Map<String, Object>> maps = rulesService.getyichangxiangmujianyiguize(tjOrderDetail.getProId().toString()
                                                    , replacedAll,
                                                    tjOrderDetail.getYcbz().replaceAll(" ", ""), tjNumber
                                                    ,replacedAll
                                                    , tjOrderDetail.getProResult());
                                            if (null != maps && !maps.isEmpty()) {
                                                tjOrderDetail.setAdvices(maps);
                                            }
                                        } else {
                                            String[] split = tjOrderDetail.getProResult().split("[。,,::.\\s]+");
                                            List<Map<String, Object>> mapList = new ArrayList<>();
                                            for (String s : split) {
                                                s = s.replaceAll("\n", "").replaceAll("[((][^))]*[))]", "").replaceAll(" ","")
                                                        .replaceAll("症","").replaceAll("[0-9]", "");
                                                Map<String, Object> maps = tjProAdvicerulesService.getyichangxiangmujianyiguizeJianCha(remark.getKs(), s, "0",xb);
                                                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);
                                        }
                                    }
                                    if (null == ycxmList || ycxmList.isEmpty()) {
                                        TjOrderYcxm ycxm = new TjOrderYcxm();
                                        ycxm.setTjh(tjNumber);
                                        ycxm.setParentName(remark.getProName());
                                        ycxm.setJcxm(tjOrderDetail.getProName());
                                        ycxm.setJcjg(tjOrderDetail.getProResult());
                                        ycxm.setCkfw(tjOrderDetail.getStanId());
                                        ycxm.setDw(tjOrderDetail.getProAdvice());
                                        ycxm.setJynr(JSONUtil.toJsonStr(tjOrderDetail.getAdvices()));
                                        ycxm.setJyjc(remark.getJyjc());
                                        if (ycxmService.save(ycxm)) {
                                            tjOrderYcxms.add(ycxm);
                                        }
                                    }
                                    dels.add(tjOrderDetail);
                                }
                            }
                            if (!dels.isEmpty()) {
                                parent.put("proName", remark.getProName());
                                parent.put("jyjc", remark.getJyjc());
                                parent.put("sone", dels);
                                list.add(parent);
                            }
                        }
                    }
                    if (!tjOrderYcxms.isEmpty()) {
                        Collections.reverse(tjOrderYcxms);
                        return getOrderYcxmList(tjOrderYcxms);
                    }
                }
            }
            return AjaxResult.success(list);
        } catch (Exception ex) {
//            throw new RuntimeException(ex);
            log.error(ex.getMessage());
            return AjaxResult.success(list);
        }
    }
    private void yichangxiangmu(String tjNumber) {
        try {
            List<TjOrderYcxm> tjOrderYcxmList= ycxmService.selectListByTjh(tjNumber);
            String xb= customerService.getSexByTjh(tjNumber);
            if(null !=tjOrderYcxmList && !tjOrderYcxmList.isEmpty()){
                List<Map<String, Object>> list = new ArrayList<>();
                TjOrder order = orderService.getOrderByTjNum(tjNumber);
                if (null != order) {
                    List<TjOrderRemark> remarkList = orderRemarkService.getzongjianyishengchakanyichangxiangmu(tjNumber);
                    List<TjOrderDetail> tjOrderDetails = detailService.getzongjianyishengchakanyichangxiangmu(tjNumber);
                    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")) {
                                                String replacedAll = tjOrderDetail.getProName().replaceAll("[((][^))]*[\u4e00-\u9fa5]+[^))]*[))]", "").replaceAll("[((][^))]*[))]", "")
                                                        .replaceAll("[ 测定检测]", "").replaceAll("\\[.*?\\]", "").replaceAll("◆", "");
                                                List<Map<String, Object>> maps = rulesService.getyichangxiangmujianyiguize(tjOrderDetail.getProId().toString()
                                                        ,replacedAll,
                                                        tjOrderDetail.getYcbz().replaceAll(" ", ""), tjNumber
                                                        , replacedAll
                                                        , 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", "").replaceAll("[((][^))]*[))]", "");
                                                    Map<String, Object> maps = tjProAdvicerulesService.getyichangxiangmujianyiguizeJianCha(remark.getKs(), s, "0",xb);
                                                    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);
                                }
                            }
                        }
                    }
                }
                List<Map<String, Object>> maps = getYcxmMapList(tjOrderYcxmList);
                List<Map<String, Object>> collect = list.stream()
                        .filter(b -> maps.stream()
                                .noneMatch(a -> a.get("proName").equals(b.get("proName"))))  // 过滤掉在 maps 中存在的相同元素
                        .collect(Collectors.toList());
                if(!collect.isEmpty()){
                    for (Map<String, Object> map : collect) {
                        for (TjOrderDetail detail : (List<TjOrderDetail>) map.get("sone")) {
                            TjOrderYcxm ycxm = new TjOrderYcxm();
                            ycxm.setTjh(tjNumber);
                            ycxm.setParentName(map.get("proName").toString());
                            ycxm.setJcxm(detail.getProName());
                            ycxm.setJcjg(detail.getProResult());
                            ycxm.setCkfw(detail.getStanId());
                            ycxm.setDw(detail.getProAdvice());
                            ycxm.setJynr(JSONUtil.toJsonStr(detail.getAdvices()));
                            ycxm.setJyjc(map.get("jyjc").toString());
                            ycxmService.save(ycxm);
                        }
                    }
                }
            }
        } catch (Exception ex) {
            log.error(ex.getMessage());
        }
    }
    @GetMapping("/delzongjianyishengchakanyichangxiangmu")
    @ApiOperation(value = "总检删除异常项目接口")
    public AjaxResult delzongjianyishengchakanyichangxiangmu(@RequestParam String id) {
        ycxmService.removeById(id);
        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);
    }
    @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("该人员数据正在同步中,请稍等");
        }
    }
    /**
     * 查询复查项目列表
     * @param tjNum 体检号
     * @param type 复查状态 0未复查状态 1复查状态
     * @return
     */
    @GetMapping("/getFcList")
    public AjaxResult getFcList(@RequestParam("tjNum") String tjNum,@RequestParam("type") Integer type){
        TjOrder order = orderService.getOrderByTjNum(tjNum);
        if (order == null)
            return AjaxResult.error();
        List<ProFcListVo> list = detailService.getFcList(order.getOrderId(),type);
        return AjaxResult.success(list);
    }
    /**
     * 复查项目提交
     * @param json
     * @return
     */
    @PostMapping("/UpdFcPro")
    public AjaxResult updFcPro(@RequestBody String json) {
        return detailService.updFcPro(json);
    }
    @GetMapping("/zongjianyishengHuiFuyichangxiangmu")
    @ApiOperation(value = "总检恢复异常项目接口")
    public AjaxResult zongjianyishengHuiFuyichangxiangmu(@RequestParam String tjNum) {
        List<TjOrderYcxm> list = ycxmService.zongjianyishengHuiFuyichangxiangmu(tjNum);
        return AjaxResult.success(list);
    }
    @GetMapping("/zongjianyishengHuiFuyichangxiangmuanniu")
    @ApiOperation(value = "总检恢复异常项目按钮接口")
    public AjaxResult zongjianyishengHuiFuyichangxiangmuanniu(@RequestParam String id) {
        int a = ycxmService.zongjianyishengHuiFuyichangxiangmuanniu(id);
        return AjaxResult.success(a);
    }
    @GetMapping("/zongjianyishengCheDiShanChuyichangxiangmuanniu")
    @ApiOperation(value = "总检彻底删除异常项目按钮接口")
    public AjaxResult zongjianyishengCheDiShanChuyichangxiangmuanniu(@RequestParam String id) {
        int a = ycxmService.zongjianyishengCheDiShanChuyichangxiangmuanniu(id);
        return AjaxResult.success(a);
    }
    @GetMapping("/csymxmxzqtyybcjk")
    @ApiOperation(value = "初审页面项目选择其他原因保存接口")
    @Transactional
    public AjaxResult csymxmxzqtyybcjk(@RequestParam @ApiParam("体检号") String tjNum,@RequestParam @ApiParam("项目ID") String proId,
                                       @RequestParam @ApiParam("原因") String yy) {
        try {
            String czydm = SecurityUtils.getUsername();
            String czy = SecurityUtils.getLoginUser().getUser().getNickName();
            TjProject tjProject = projectService.getById(proId);
            if(null !=  tjProject){
                SysDept dept = deptService.getById(tjProject.getDeptId());
                LambdaQueryWrapper<TjOrderRemark> wq = new LambdaQueryWrapper<>();
                wq.eq(TjOrderRemark::getTjNumber, tjNum);
                wq.eq(TjOrderRemark::getProId, proId);
                TjOrderRemark remark = orderRemarkService.getOne(wq);
                remark.setType(1);
                if (orderRemarkService.updateById(remark)) {
                    orderRemarkService.csymxmxzqtyybcjk(tjNum,proId,yy,dept.getOrgType(),czy,czydm);
                    return AjaxResult.success();
                }
            }
        } catch (Exception ex) {
            log.error(ex.getMessage());
            throw new RuntimeException(ex);
        }
        return AjaxResult.error();
    }
}