perf: 异步同时采集数据

dev
huangfeng 8 months ago
parent b7b76af5b6
commit 3aeef8dbac

@ -12,7 +12,7 @@ import org.springframework.util.CollectionUtils;
import java.util.List; import java.util.List;
@Slf4j @Slf4j
public class IEDService { public class IEDCollectService {
IcdConfigTypeRepository _configRepository; IcdConfigTypeRepository _configRepository;
IcdConfigTypeAttRepository _attRepository; IcdConfigTypeAttRepository _attRepository;
IcdConfigTypeInstRepository _instRepository; IcdConfigTypeInstRepository _instRepository;
@ -22,9 +22,9 @@ public class IEDService {
IcdIed ied; IcdIed ied;
String xml; String xml;
public IEDService(IcdConfigTypeRepository configRepository, IcdConfigTypeAttRepository attRepository, public IEDCollectService(IcdConfigTypeRepository configRepository, IcdConfigTypeAttRepository attRepository,
IcdConfigTypeInstRepository instRepository, RptparamindexRepository rptparamindexRepository, IcdConfigTypeInstRepository instRepository, RptparamindexRepository rptparamindexRepository,
DataService dataService, String xml, IcdIed ied) { DataService dataService, String xml, IcdIed ied) {
_configRepository = configRepository; _configRepository = configRepository;
_attRepository = attRepository; _attRepository = attRepository;
_instRepository = instRepository; _instRepository = instRepository;

@ -0,0 +1,33 @@
package com.xydl.cac.task;
import com.xydl.cac.entity.IcdIed;
import com.xydl.cac.entity.Rptparamindex;
import com.xydl.cac.iec.IEDCollectService;
import com.xydl.cac.repository.*;
import com.xydl.cac.service.DataService;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class AsyncTask {
@Resource
IcdConfigTypeRepository configRepository;
@Resource
IcdConfigTypeAttRepository attRepository;
@Resource
IcdConfigTypeInstRepository instRepository;
@Resource
RptparamindexRepository rptparamindexRepository;
@Resource
DataService dataService;
@Async
public void collectIed(String xml, IcdIed ied, List<Rptparamindex> rptList) {
IEDCollectService iedService = new IEDCollectService(configRepository, attRepository, instRepository,
rptparamindexRepository, dataService, xml, ied);
iedService.collectAndSave(rptList);
}
}

@ -1,9 +1,7 @@
package com.xydl.cac.task; package com.xydl.cac.task;
import com.xydl.cac.entity.*; import com.xydl.cac.entity.*;
import com.xydl.cac.iec.IEDService;
import com.xydl.cac.repository.*; import com.xydl.cac.repository.*;
import com.xydl.cac.service.DataService;
import com.xydl.cac.service.ModevTypeService; import com.xydl.cac.service.ModevTypeService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
@ -19,21 +17,15 @@ import java.util.List;
@Slf4j @Slf4j
public class Client61850Task { public class Client61850Task {
@Resource
AsyncTask asyncTask;
@Resource @Resource
IcdFileRepository fileRepository; IcdFileRepository fileRepository;
@Resource @Resource
IcdIedRepository iedRepository; IcdIedRepository iedRepository;
@Resource @Resource
IcdConfigTypeRepository configRepository;
@Resource
IcdConfigTypeAttRepository attRepository;
@Resource
IcdConfigTypeInstRepository instRepository;
@Resource
RptparamindexRepository rptparamindexRepository; RptparamindexRepository rptparamindexRepository;
@Resource @Resource
DataService dataService;
@Resource
ModevTypeService modevTypeService; ModevTypeService modevTypeService;
@Resource @Resource
NSensorRepository sensorRepository; NSensorRepository sensorRepository;
@ -89,16 +81,9 @@ public class Client61850Task {
List<IcdIed> iedList = iedRepository.findByIcdFileId(icdFile.getId()); List<IcdIed> iedList = iedRepository.findByIcdFileId(icdFile.getId());
if (!CollectionUtils.isEmpty(iedList)) { if (!CollectionUtils.isEmpty(iedList)) {
for (IcdIed ied : iedList) { for (IcdIed ied : iedList) {
this.collectIed(icdFile.getXml(), ied, rptList); asyncTask.collectIed(icdFile.getXml(), ied, rptList);
} }
} }
} }
private void collectIed(String xml, IcdIed ied, List<Rptparamindex> rptList) {
IEDService iedService = new IEDService(configRepository, attRepository, instRepository,
rptparamindexRepository, dataService, xml, ied);
iedService.collectAndSave(rptList);
}
} }

Loading…
Cancel
Save