This commit is contained in:
YAS\29473
2025-09-13 14:23:00 +08:00
parent 02fba0db77
commit c9264800d4

View File

@@ -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<SysDictData> existingDictData = sysDictDataMapper.selectDictDataByType(Constants.THIRD_PARTY_TYPE);
try {
// 获取现有字典数据
List<SysDictData> existingDictData = sysDictDataMapper.selectDictDataByType(Constants.THIRD_PARTY_TYPE);
Map<String, SysDictData> dictDataMap = existingDictData.stream()
.collect(Collectors.toMap(SysDictData::getDictValue, Function.identity()));
Map<String, SysDictData> 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<SysDictData> 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) {