Commit 4bff9754 authored by 刘林's avatar 刘林

fix(jg):设备导入报错问题处理

parent 1d06bb4d
...@@ -11,6 +11,7 @@ import com.yeejoin.amos.api.common.restful.utils.ResponseHelper; ...@@ -11,6 +11,7 @@ import com.yeejoin.amos.api.common.restful.utils.ResponseHelper;
import com.yeejoin.amos.api.openapi.dto.XiAnElevatorExcelDto; import com.yeejoin.amos.api.openapi.dto.XiAnElevatorExcelDto;
import com.yeejoin.amos.api.openapi.dto.XiAnEquipInfoExcelDto; import com.yeejoin.amos.api.openapi.dto.XiAnEquipInfoExcelDto;
import com.yeejoin.amos.api.openapi.feign.TzsJgServiceFeignClient; import com.yeejoin.amos.api.openapi.feign.TzsJgServiceFeignClient;
import com.yeejoin.amos.boot.biz.common.utils.RequestContextWrapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
...@@ -84,18 +85,13 @@ public class XiAnDataDockServiceImpl { ...@@ -84,18 +85,13 @@ public class XiAnDataDockServiceImpl {
int batchSize = 1000; int batchSize = 1000;
int totalSize = equipInfoExcelDtos.size(); int totalSize = equipInfoExcelDtos.size();
// 主线程中获取登录信息传递到异步线程中 // 主线程中获取登录信息传递到异步线程中
String appKey = RequestContext.getAppKey(); RequestContextWrapper contextWrapper = RequestContextWrapper.capture();
String product = RequestContext.getProduct();
String token = RequestContext.getToken();
List<CompletableFuture<Void>> futures = new ArrayList<>(); List<CompletableFuture<Void>> futures = new ArrayList<>();
for (int i = 0; i < totalSize; i += batchSize) { for (int i = 0; i < totalSize; i += batchSize) {
List<XiAnEquipInfoExcelDto> batch = equipInfoExcelDtos.subList(i, Math.min(totalSize, i + batchSize)); List<XiAnEquipInfoExcelDto> batch = equipInfoExcelDtos.subList(i, Math.min(totalSize, i + batchSize));
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> { CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
try { try {
RequestContext.setAppKey(appKey); contextWrapper.apply();
RequestContext.setProduct(product);
RequestContext.setToken(token);
jgServiceFeignClient.saveEquipmentData(batch); jgServiceFeignClient.saveEquipmentData(batch);
} catch (Exception e) { } catch (Exception e) {
log.error("西安数据上传,保存设备数据失败: ", e); log.error("西安数据上传,保存设备数据失败: ", e);
......
...@@ -18,10 +18,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; ...@@ -18,10 +18,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo; import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils; import com.yeejoin.amos.boot.biz.common.utils.*;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.biz.common.utils.SnowflakeIdUtil;
import com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory; import com.yeejoin.amos.boot.module.common.api.dao.ESEquipmentCategory;
import com.yeejoin.amos.boot.module.common.api.dao.ExcelImportErrorLogDao; import com.yeejoin.amos.boot.module.common.api.dao.ExcelImportErrorLogDao;
import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto; import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto;
...@@ -172,15 +169,11 @@ public class DataDockServiceImpl { ...@@ -172,15 +169,11 @@ public class DataDockServiceImpl {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class)
public boolean xiAnSaveEquipmentData(List<Map<String, Object>> equLists) { public boolean xiAnSaveEquipmentData(List<Map<String, Object>> equLists) {
String appKey = RequestContext.getAppKey(); RequestContextWrapper contextWrapper = RequestContextWrapper.capture();
String product = RequestContext.getProduct();
String token = RequestContext.getToken();
Set<String> recordSet = new HashSet<>(); Set<String> recordSet = new HashSet<>();
CompletableFuture.allOf( CompletableFuture.allOf(
equLists.parallelStream().map(equ -> CompletableFuture.runAsync(() -> { equLists.parallelStream().map(equ -> CompletableFuture.runAsync(() -> {
RequestContext.setAppKey(appKey); contextWrapper.apply();
RequestContext.setProduct(product);
RequestContext.setToken(token);
String record = saveEquipmentDataInTransaction(equ, "jg_his_xa", null); String record = saveEquipmentDataInTransaction(equ, "jg_his_xa", null);
recordSet.add(record); recordSet.add(record);
})).toArray(CompletableFuture[]::new) })).toArray(CompletableFuture[]::new)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment