优化欧利德同步数据代码:解决执行超时问题
这段代码主要用于同步欧利德数据,它通过queueCallMapper更新数据库,并记录操作日志。代码执行时间取决于sortList的大小和queueCallMapper的性能。如果sortList很大或者queueCallMapper操作耗时,可能会导致执行超时。
为了解决执行超时的问题,可以尝试以下方法:
- 优化代码: 检查
queueCallMapper操作是否可以优化,例如通过索引或者调整查询语句来提高性能。 - 检查
sortList大小: 如果sortList大小超过预期,可以考虑对数据进行分批处理,而不是一次性处理整个sortList。 - 异步处理: 如果对实时性要求不高,可以将代码放在异步任务中执行,避免影响主线程的执行时间。
- 调整超时时间: 如果你有权限修改执行超时时间,可以调整为更合适的值。
根据具体情况选择适合的方法来解决执行超时问题。
代码示例:
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 著作权归作者所有。请勿转载和采集!