package com.smartor.service.impl;
|
|
import com.smartor.domain.PatSpecificArchiveGenerateLog;
|
import com.smartor.mapper.PatSpecificArchiveGenerateLogMapper;
|
import com.smartor.service.IPatSpecificArchiveGenerateLogService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.dao.DuplicateKeyException;
|
import org.springframework.stereotype.Service;
|
|
import java.util.Date;
|
|
/**
|
* 专科档案生成日志Service业务层处理。
|
*
|
* @author ruoyi
|
* @date 2026-11-11
|
*/
|
@Service
|
public class PatSpecificArchiveGenerateLogServiceImpl implements IPatSpecificArchiveGenerateLogService {
|
|
@Autowired
|
private PatSpecificArchiveGenerateLogMapper logMapper;
|
|
@Override
|
public PatSpecificArchiveGenerateLog selectBySourceSubAndConfig(String sourceType, Long sourceSubId, Integer configId) {
|
return logMapper.selectBySourceSubAndConfig(sourceType, sourceSubId,
|
configId == null ? 0 : configId);
|
}
|
|
@Override
|
public boolean existsProcessedBySourceSub(String sourceType, Long sourceSubId) {
|
return logMapper.countProcessedBySourceSub(sourceType, sourceSubId) > 0;
|
}
|
|
@Override
|
public int saveOrUpdate(PatSpecificArchiveGenerateLog log) {
|
if (log == null) {
|
return 0;
|
}
|
if (log.getSourceType() == null) {
|
log.setSourceType("2");
|
}
|
if (log.getConfigId() == null) {
|
log.setConfigId(0);
|
}
|
if (log.getRetryCount() == null) {
|
log.setRetryCount(0);
|
}
|
Date now = new Date();
|
log.setUpdateTime(now);
|
PatSpecificArchiveGenerateLog old = logMapper.selectBySourceSubAndConfig(
|
log.getSourceType(), log.getSourceSubId(), log.getConfigId());
|
if (old == null) {
|
log.setCreateTime(now);
|
try {
|
return logMapper.insertPatSpecificArchiveGenerateLog(log);
|
} catch (DuplicateKeyException e) {
|
// 并发下另一个线程已写入,转为更新,保证幂等
|
old = logMapper.selectBySourceSubAndConfig(
|
log.getSourceType(), log.getSourceSubId(), log.getConfigId());
|
if (old == null) {
|
throw e;
|
}
|
log.setId(old.getId());
|
return logMapper.updatePatSpecificArchiveGenerateLog(log);
|
}
|
}
|
log.setId(old.getId());
|
if (log.getCreateTime() == null) {
|
log.setCreateTime(old.getCreateTime());
|
}
|
return logMapper.updatePatSpecificArchiveGenerateLog(log);
|
}
|
}
|