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); } }