|
@@ -19,6 +19,8 @@ import com.simuwang.shiro.utils.UserUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
@@ -63,6 +65,10 @@ public class FundAliasServiceImpl implements FundAliasService {
|
|
|
@Autowired
|
|
|
private AssetMapper assetMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ @Qualifier("asyncUpdateExecutor")
|
|
|
+ private ThreadPoolTaskExecutor asyncUpdateExecutor;
|
|
|
+
|
|
|
@Override
|
|
|
public MybatisPage<FundAliasVO> searchFundAlias(FundAliasPageQuery fundAliasPageQuery) {
|
|
|
List<FundAliasDO> fundAliasDOList = fundAliasMapper.searchFundAlias(fundAliasPageQuery);
|
|
@@ -133,19 +139,21 @@ public class FundAliasServiceImpl implements FundAliasService {
|
|
|
}
|
|
|
// 查询基金名称和备案编码对应的邮件净值表email_fund_nav(异常情况为未匹配基金ID && is_stored=0未入库)
|
|
|
for (FundAliasDO fundAliasDO : fundAliasDOList) {
|
|
|
- String fundId = fundAliasDO.getTargetFundId();
|
|
|
- String fundName = fundAliasDO.getSourceFundName();
|
|
|
- String registerNumber = fundAliasDO.getSourceRegisterNumber();
|
|
|
- try {
|
|
|
- long startTime = System.currentTimeMillis();
|
|
|
- // 1.更新净值nav
|
|
|
- updateFundNav(fundId, fundName, registerNumber);
|
|
|
- // 2.更新资产净值asset
|
|
|
- updateFundAsset(fundId, fundName, registerNumber);
|
|
|
- log.info("更新基金nav和asset完成 -> fundId:{}, cost:{}ms", fundId, (System.currentTimeMillis()-startTime));
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("更新基金nav和asset异常 fundId:{}, fundName:{}, registerNumber:{} -> 堆栈信息:{}", fundId, fundName, registerNumber, ExceptionUtil.stacktraceToString(e));
|
|
|
- }
|
|
|
+ asyncUpdateExecutor.execute(() -> {
|
|
|
+ String fundId = fundAliasDO.getTargetFundId();
|
|
|
+ String fundName = fundAliasDO.getSourceFundName();
|
|
|
+ String registerNumber = fundAliasDO.getSourceRegisterNumber();
|
|
|
+ try {
|
|
|
+ long startTime = System.currentTimeMillis();
|
|
|
+ // 1.更新净值nav
|
|
|
+ updateFundNav(fundId, fundName, registerNumber);
|
|
|
+ // 2.更新资产净值asset
|
|
|
+ updateFundAsset(fundId, fundName, registerNumber);
|
|
|
+ log.info("更新基金nav和asset完成 -> fundId:{}, cost:{}ms", fundId, (System.currentTimeMillis() - startTime));
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("更新基金nav和asset异常 fundId:{}, fundName:{}, registerNumber:{} -> 堆栈信息:{}", fundId, fundName, registerNumber, ExceptionUtil.stacktraceToString(e));
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -173,11 +181,15 @@ public class FundAliasServiceImpl implements FundAliasService {
|
|
|
}).toList();
|
|
|
|
|
|
if (CollUtil.isNotEmpty(assetDOList)) {
|
|
|
+ log.info("基金Id:{}, 更新的规模数据:{}", fundId, assetDOList);
|
|
|
assetMapper.batchInsert(assetDOList);
|
|
|
}
|
|
|
|
|
|
List<Integer> emailFundAssetIdList = emailFundAssetDOList.stream().map(EmailFundAssetDO::getId).toList();
|
|
|
- emailFundAssetMapper.updateFundIdByIds(fundId, emailFundAssetIdList);
|
|
|
+ if (CollUtil.isNotEmpty(emailFundAssetIdList)) {
|
|
|
+ log.info("基金Id:{}, 更新email_fund_asset的字段id:{}", fundId, emailFundAssetIdList);
|
|
|
+ emailFundAssetMapper.updateFundIdByIds(fundId, emailFundAssetIdList);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
private void updateFundNav(String fundId, String fundName, String registerNumber) {
|
|
@@ -207,7 +219,7 @@ public class FundAliasServiceImpl implements FundAliasService {
|
|
|
navMapper.batchInsert(navDOList);
|
|
|
}
|
|
|
List<Integer> emailFundNavIdList = emailFundNavDOList.stream().map(EmailFundNavDO::getId).toList();
|
|
|
- log.info("基金Id:{}, 更新email_fund_nav的fund_id字段id:{}", fundId, emailFundNavIdList);
|
|
|
+ log.info("基金Id:{}, 更新email_fund_nav的字段id:{}", fundId, emailFundNavIdList);
|
|
|
|
|
|
if (CollUtil.isNotEmpty(emailFundNavIdList)) {
|
|
|
emailFundNavMapper.updateFundIdByIds(fundId, emailFundNavIdList);
|