From c9264800d4e4b938fe922a689f484f208406c6a5 Mon Sep 17 00:00:00 2001 From: "YAS\\29473" <2947326429@qq.com> Date: Sat, 13 Sep 2025 14:23:00 +0800 Subject: [PATCH] update --- .../impl/ThirdpartySecretInfoServiceImpl.java | 48 ++++++++++++------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/jsowell-pile/src/main/java/com/jsowell/thirdparty/service/impl/ThirdpartySecretInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/thirdparty/service/impl/ThirdpartySecretInfoServiceImpl.java index 1f8d4d7fd..0571adbdf 100644 --- a/jsowell-pile/src/main/java/com/jsowell/thirdparty/service/impl/ThirdpartySecretInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/thirdparty/service/impl/ThirdpartySecretInfoServiceImpl.java @@ -3,22 +3,22 @@ package com.jsowell.thirdparty.service.impl; import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.constant.Constants; import com.jsowell.common.core.domain.entity.SysDictData; -import com.jsowell.common.core.domain.entity.SysDictType; import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum; -import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.DateUtils; +import com.jsowell.common.util.DictUtils; import com.jsowell.pile.mapper.ThirdPartyStationRelationMapper; import com.jsowell.pile.vo.ThirdPartySecretInfoVO; import com.jsowell.pile.vo.base.StationInfoVO; import com.jsowell.system.mapper.SysDictDataMapper; -import com.jsowell.system.mapper.SysDictTypeMapper; import com.jsowell.thirdparty.domain.ThirdpartySecretInfo; import com.jsowell.thirdparty.mapper.ThirdpartySecretInfoMapper; import com.jsowell.thirdparty.service.ThirdpartySecretInfoService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; - +import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; @@ -32,6 +32,7 @@ import java.util.stream.Collectors; * @date 2024-04-18 */ @Service +@Slf4j public class ThirdpartySecretInfoServiceImpl implements ThirdpartySecretInfoService { @Autowired private ThirdpartySecretInfoMapper thirdpartySecretInfoMapper; @@ -158,22 +159,37 @@ public class ThirdpartySecretInfoServiceImpl implements ThirdpartySecretInfoServ } @Override + @Transactional(rollbackFor = Exception.class) public String syncThirdpartyPlatformNameToDict() { - List existingDictData = sysDictDataMapper.selectDictDataByType(Constants.THIRD_PARTY_TYPE); + try { + // 获取现有字典数据 + List existingDictData = sysDictDataMapper.selectDictDataByType(Constants.THIRD_PARTY_TYPE); + Map dictDataMap = existingDictData.stream() + .collect(Collectors.toMap(SysDictData::getDictValue, Function.identity())); - Map dictDataMap = existingDictData.stream() - .collect(Collectors.toMap(SysDictData::getDictValue, Function.identity())); - - for (ThirdPlatformTypeEnum platformType : ThirdPlatformTypeEnum.values()) { - String typeCode = platformType.getTypeCode(); - if (!dictDataMap.containsKey(typeCode)) { - // 创建并保存新的字典数据 - SysDictData dictData = createDictData(platformType); - sysDictDataMapper.insertDictData(dictData); + for (ThirdPlatformTypeEnum platformType : ThirdPlatformTypeEnum.values()) { + if (!dictDataMap.containsKey(platformType.getTypeCode())) { + SysDictData dictData = createDictData(platformType); + sysDictDataMapper.insertDictData(dictData); + } } - } + // 删除并重新加载缓存 + DictUtils.removeDictCache(Constants.THIRD_PARTY_TYPE); + List updatedDictData = sysDictDataMapper.selectDictDataByType(Constants.THIRD_PARTY_TYPE); - return "同步完成"; + // 验证数据一致性 + if (updatedDictData.size() == ThirdPlatformTypeEnum.values().length) { + DictUtils.setDictCache(Constants.THIRD_PARTY_TYPE, updatedDictData); + return "同步完成"; + } else { + log.error("同步第三方平台名称到字典失败,数据不一致。期望数量: {}, 实际数量: {}", + ThirdPlatformTypeEnum.values().length, updatedDictData.size()); + throw new RuntimeException("同步失败:数据不一致"); + } + } catch (Exception e) { + log.error("同步第三方平台名称到字典时发生异常", e); + throw new RuntimeException("同步失败:系统异常", e); + } } private SysDictData createDictData(ThirdPlatformTypeEnum platformType) {