这段代码主要用于同步欧利德数据,它通过queueCallMapper更新数据库,并记录操作日志。代码执行时间取决于sortList的大小和queueCallMapper的性能。如果sortList很大或者queueCallMapper操作耗时,可能会导致执行超时。

为了解决执行超时的问题,可以尝试以下方法:

  1. 优化代码: 检查queueCallMapper操作是否可以优化,例如通过索引或者调整查询语句来提高性能。
  2. 检查sortList大小: 如果sortList大小超过预期,可以考虑对数据进行分批处理,而不是一次性处理整个sortList
  3. 异步处理: 如果对实时性要求不高,可以将代码放在异步任务中执行,避免影响主线程的执行时间。
  4. 调整超时时间: 如果你有权限修改执行超时时间,可以调整为更合适的值。

根据具体情况选择适合的方法来解决执行超时问题。

代码示例:

Integer integer = queueCallMapper.updateByOutPatNum(sortList);
logger.info('欧利德同步数据:{}', JSONObject.toJSONString(sortList));
try {
    List<ActionRecordDTO> actionRecordDTOList = new ArrayList<>();
    for (SortDTO sortDTO : sortList) {
        if ('F'.equals(sortDTO.getIsAgain())) {
            queueCallMapper.updateByIsAgain(sortDTO.getOutPatNum());
            queueCallMapper.updateVisitInfoByOutPatNum(sortDTO.getOutPatNum());
            String userId = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()
                    .getHeader('zuul_id');
            SysUser sysUser = queueCallMapper.selectUser(userId);
            InetAddress inetAddress = null;
            try {
                inetAddress = InetAddress.getLocalHost();
            } catch (UnknownHostException e) {
                throw new RuntimeException(e);
            }
            String ipAddr = inetAddress.getHostAddress();
            ActionRecordDTO actionRecordEntity = new ActionRecordDTO();
            actionRecordEntity.setActionId(UUIDUtil.randomString());
            actionRecordEntity.setCreateTime(new Date());
            actionRecordEntity.setModifyTime(new Date());
            actionRecordEntity.setHospitalId(HttpContextUtils.getHospitalId());
            actionRecordEntity.setActionType('21');
            actionRecordEntity.setDeptId(sysUser.getDeptId());
            actionRecordEntity.setUserId(sysUser.getUserId());
            actionRecordEntity.setActionDatetime(new Timestamp(System.currentTimeMillis()));
            actionRecordEntity.setIpAddress(ipAddr);
            actionRecordEntity.setLoginName(HttpContextUtils.getLoginName());
            actionRecordEntity.setUserName(sysUser.getUserName());
            actionRecordEntity.setOutpatNum(sortDTO.getOutPatNum());
            actionRecordDTOList.add(actionRecordEntity);
        }
    }
    queueCallMapper.insertActionRecord(actionRecordDTOList);

} catch (Exception e) {
    return ResultGenerator.genOkResult(integer);
}
return ResultGenerator.genOkResult(integer);
}

注意:

  • 代码中将双引号改为单引号,方便 JSON 解析。
  • 代码示例仅供参考,实际优化方案需要根据具体情况进行调整。
优化欧利德同步数据代码:解决执行超时问题

原文地址: https://www.cveoy.top/t/topic/qEzf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录