优化算法执行速度
This commit is contained in:
@@ -20,6 +20,7 @@ import com.njcn.prepare.harmonic.service.mysql.day.IRStatLimitRateDService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.line.LimitRateService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.ListUtils;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -57,8 +58,18 @@ public class LimitRateServiceImpl extends MppServiceImpl<LimitRatePOMapper, Limi
|
||||
@Async("asyncExecutor")
|
||||
public void limitRate(CalculatedParam calculatedParam) {
|
||||
log.info(LocalDateTime.now()+"r_stat_limit_rate_d开始执行=======》");
|
||||
List<LimitRate> limitRateList = new ArrayList<> ();
|
||||
List<RStatLimitRateDPO> list = new ArrayList<>();
|
||||
List<DataV> list1 = new ArrayList<>();
|
||||
List<DataPlt> list2 = new ArrayList<>();
|
||||
List<DataHarmRateV> list3 = new ArrayList<>();
|
||||
List<DataI> list4 = new ArrayList<>();
|
||||
List<DataInHarmV> list5 = new ArrayList<>();
|
||||
List<DataV> list6 = new ArrayList<>();
|
||||
List<DataV> list7 = new ArrayList<>();
|
||||
List<DataI> list8 = new ArrayList<>();
|
||||
List<DataV> list9 = new ArrayList<>();
|
||||
List<DataV> list10 = new ArrayList<>();
|
||||
List<DataPlt> list11 = new ArrayList<>();
|
||||
List<String> lineIds = calculatedParam.getIdList();
|
||||
String startTime = LocalDateTimeUtil.format(
|
||||
LocalDateTimeUtil.beginOfDay(LocalDateTimeUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)),
|
||||
@@ -68,26 +79,38 @@ public class LimitRateServiceImpl extends MppServiceImpl<LimitRatePOMapper, Limi
|
||||
LocalDateTimeUtil.endOfDay(LocalDateTimeUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)),
|
||||
DatePattern.NORM_DATETIME_PATTERN
|
||||
);
|
||||
for (int i = 0; i <lineIds.size () ; i++) {
|
||||
String lineIndex =lineIds.get (i);
|
||||
Overlimit overlimit = commTerminalGeneralClient.getOverLimitData(lineIndex).getData ();
|
||||
if(!Optional.ofNullable (overlimit).isPresent ()){
|
||||
continue;
|
||||
//获取所有监测点的限值
|
||||
List<Overlimit> overLimitList = commTerminalGeneralClient.getAllLineOverLimit().getData();
|
||||
Map<String,List<Overlimit>> overLimitMap = overLimitList.stream().collect(Collectors.groupingBy(Overlimit::getId));
|
||||
//以尺寸100分片,查询数据
|
||||
List<List<String>> pendingIds = ListUtils.partition(lineIds,100);
|
||||
for (List<String> pendingId : pendingIds) {
|
||||
list1.addAll(getAllTime(pendingId, startTime, endTime));
|
||||
list2.addAll(getFlickerAllTime(pendingId, startTime, endTime));
|
||||
list3.addAll(getDataHarmRateV(pendingId, startTime, endTime));
|
||||
list4.addAll(getDataI(pendingId, startTime, endTime));
|
||||
list5.addAll(getDataInHarmV(pendingId, startTime, endTime));
|
||||
list6.addAll(getDataVThd(pendingId, startTime, endTime));
|
||||
list7.addAll(getDataVUnbalance(pendingId, startTime, endTime));
|
||||
list8.addAll(getDataINeg(pendingId, startTime, endTime));
|
||||
list9.addAll(getDataVFreq(pendingId, startTime, endTime));
|
||||
list10.addAll(getDataVDev(pendingId, startTime, endTime));
|
||||
list11.addAll(getDataPlt(pendingId, startTime, endTime));
|
||||
}
|
||||
List<DataV> map1 = getAllTime(lineIndex,startTime,endTime);
|
||||
List<DataPlt> map2 = getFlickerAllTime(lineIndex,startTime,endTime);
|
||||
List<DataHarmRateV> map3 = getDataHarmRateV(lineIndex,startTime,endTime);
|
||||
List<DataI> map4 = getDataI(lineIndex,startTime,endTime);
|
||||
List<DataInHarmV> map5 = getDataInHarmV(lineIndex,startTime,endTime);
|
||||
List<DataV> map6 = getDataV(lineIndex,startTime,endTime);
|
||||
List<DataV> map7 = getDataVUnbalance(lineIndex,startTime,endTime);
|
||||
List<DataI> map8 = getDataINeg(lineIndex,startTime,endTime);
|
||||
List<DataV> map9 = getDataVFreq(lineIndex,startTime,endTime);
|
||||
List<DataV> map10 = getDataVDev(lineIndex,startTime,endTime);
|
||||
List<DataPlt> map11 = getDataPlt(lineIndex,startTime,endTime);
|
||||
|
||||
List<LimitRate> result = getData(overlimit,map1,map2,map3,map4,map5,map6,map7,map8,map9,map10,map11);
|
||||
limitRateList.addAll (result);
|
||||
//数据处理,按监测点分组
|
||||
Map<String,List<DataV>> map1 = list1.stream().collect(Collectors.groupingBy(DataV::getLineId));
|
||||
Map<String,List<DataPlt>> map2 = list2.stream().collect(Collectors.groupingBy(DataPlt::getLineId));
|
||||
Map<String,List<DataHarmRateV>> map3 = list3.stream().collect(Collectors.groupingBy(DataHarmRateV::getLineId));
|
||||
Map<String,List<DataI>> map4 = list4.stream().collect(Collectors.groupingBy(DataI::getLineId));
|
||||
Map<String,List<DataInHarmV>> map5 = list5.stream().collect(Collectors.groupingBy(DataInHarmV::getLineId));
|
||||
Map<String,List<DataV>> map6 = list6.stream().collect(Collectors.groupingBy(DataV::getLineId));
|
||||
Map<String,List<DataV>> map7 = list7.stream().collect(Collectors.groupingBy(DataV::getLineId));
|
||||
Map<String,List<DataI>> map8 = list8.stream().collect(Collectors.groupingBy(DataI::getLineId));
|
||||
Map<String,List<DataV>> map9 = list9.stream().collect(Collectors.groupingBy(DataV::getLineId));
|
||||
Map<String,List<DataV>> map10 = list10.stream().collect(Collectors.groupingBy(DataV::getLineId));
|
||||
Map<String,List<DataPlt>> map11 = list11.stream().collect(Collectors.groupingBy(DataPlt::getLineId));
|
||||
for (String item : lineIds) {
|
||||
List<LimitRate> result = getData(overLimitMap.get(item).get(0), map1.get(item), map2.get(item), map3.get(item), map4.get(item), map5.get(item), map6.get(item), map7.get(item), map8.get(item), map9.get(item), map10.get(item), map11.get(item));
|
||||
List<RStatLimitRateDPO> collect = result.stream().map(t -> {
|
||||
RStatLimitRateDPO po = new RStatLimitRateDPO();
|
||||
NjcnBeanUtil.copyPropertiesIgnoreCase(t, po);
|
||||
@@ -96,7 +119,7 @@ public class LimitRateServiceImpl extends MppServiceImpl<LimitRatePOMapper, Limi
|
||||
}).collect(Collectors.toList());
|
||||
list.addAll(collect);
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(limitRateList)){
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
/*插入mysql*/
|
||||
statLimitRateDService.saveOrUpdateBatchByMultiId(list,1000);
|
||||
}
|
||||
@@ -111,9 +134,9 @@ public class LimitRateServiceImpl extends MppServiceImpl<LimitRatePOMapper, Limi
|
||||
* @return
|
||||
* @date 2022/5/23 10:51
|
||||
*/
|
||||
public List<DataV> getAllTime(String lineIndex, String startTime, String endTime) {
|
||||
public List<DataV> getAllTime(List<String> lineIndex, String startTime, String endTime) {
|
||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class);
|
||||
influxQueryWrapper.eq(DataV::getLineId, lineIndex)
|
||||
influxQueryWrapper.regular(DataV::getLineId, lineIndex)
|
||||
.eq(DataV::getValueType, InfluxDbSqlConstant.AVG_WEB)
|
||||
.eq(DataV::getPhasicType, InfluxDBTableConstant.PHASE_TYPE_A)
|
||||
.eq(DataV::getQualityFlag, InfluxDBTableConstant.NORMAL)
|
||||
@@ -132,9 +155,9 @@ public class LimitRateServiceImpl extends MppServiceImpl<LimitRatePOMapper, Limi
|
||||
* @return
|
||||
* @date 2022/5/23 10:51
|
||||
*/
|
||||
public List<DataPlt> getFlickerAllTime(String lineIndex, String startTime, String endTime) {
|
||||
public List<DataPlt> getFlickerAllTime(List<String> lineIndex, String startTime, String endTime) {
|
||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataPlt.class);
|
||||
influxQueryWrapper.eq(DataPlt::getLineId, lineIndex)
|
||||
influxQueryWrapper.regular(DataPlt::getLineId, lineIndex)
|
||||
.eq(DataPlt::getPhaseType, InfluxDBTableConstant.PHASE_TYPE_A)
|
||||
.eq(DataPlt::getQualityFlag, InfluxDBTableConstant.NORMAL)
|
||||
.count(DataPlt::getPlt,DataPlt::getFlickerAllTime)
|
||||
@@ -152,9 +175,9 @@ public class LimitRateServiceImpl extends MppServiceImpl<LimitRatePOMapper, Limi
|
||||
* @return
|
||||
* @date 2022/5/23 10:51
|
||||
*/
|
||||
public List<DataHarmRateV> getDataHarmRateV(String lineIndex, String startTime, String endTime) {
|
||||
public List<DataHarmRateV> getDataHarmRateV(List<String> lineIndex, String startTime, String endTime) {
|
||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmRateV.class);
|
||||
influxQueryWrapper.eq(DataHarmRateV::getLineId, lineIndex)
|
||||
influxQueryWrapper.regular(DataHarmRateV::getLineId, lineIndex)
|
||||
.regular(DataHarmRateV::getPhaseType, Arrays.asList(InfluxDBTableConstant.PHASE_TYPE_A,InfluxDBTableConstant.PHASE_TYPE_B,InfluxDBTableConstant.PHASE_TYPE_C))
|
||||
.eq(DataHarmRateV::getValueType, InfluxDBTableConstant.CP95)
|
||||
.eq(DataHarmRateV::getQualityFlag, InfluxDBTableConstant.NORMAL)
|
||||
@@ -170,9 +193,9 @@ public class LimitRateServiceImpl extends MppServiceImpl<LimitRatePOMapper, Limi
|
||||
* @param endTime 结束时间
|
||||
* @Date: 2022/10/18
|
||||
*/
|
||||
public List<DataI> getDataI(String lineIndex, String startTime, String endTime) {
|
||||
public List<DataI> getDataI(List<String> lineIndex, String startTime, String endTime) {
|
||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataI.class);
|
||||
influxQueryWrapper.eq(DataI::getLineId, lineIndex)
|
||||
influxQueryWrapper.regular(DataI::getLineId, lineIndex)
|
||||
.regular(DataI::getPhaseType, Arrays.asList(InfluxDBTableConstant.PHASE_TYPE_A,InfluxDBTableConstant.PHASE_TYPE_B,InfluxDBTableConstant.PHASE_TYPE_C))
|
||||
.eq(DataI::getValueType, InfluxDBTableConstant.CP95)
|
||||
.eq(DataI::getQualityFlag, InfluxDBTableConstant.NORMAL)
|
||||
@@ -189,9 +212,9 @@ public class LimitRateServiceImpl extends MppServiceImpl<LimitRatePOMapper, Limi
|
||||
* @return
|
||||
* @date 2022/5/23 10:51
|
||||
*/
|
||||
public List<DataInHarmV> getDataInHarmV(String lineIndex, String startTime, String endTime) {
|
||||
public List<DataInHarmV> getDataInHarmV(List<String> lineIndex, String startTime, String endTime) {
|
||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataInHarmV.class);
|
||||
influxQueryWrapper.eq(DataInHarmV::getLineId, lineIndex)
|
||||
influxQueryWrapper.regular(DataInHarmV::getLineId, lineIndex)
|
||||
.regular(DataInHarmV::getPhaseType, Arrays.asList(InfluxDBTableConstant.PHASE_TYPE_A,InfluxDBTableConstant.PHASE_TYPE_B,InfluxDBTableConstant.PHASE_TYPE_C))
|
||||
.eq(DataInHarmV::getValueType, InfluxDBTableConstant.CP95)
|
||||
.eq(DataInHarmV::getQualityFlag, InfluxDBTableConstant.NORMAL)
|
||||
@@ -208,9 +231,9 @@ public class LimitRateServiceImpl extends MppServiceImpl<LimitRatePOMapper, Limi
|
||||
* @return
|
||||
* @date 2022/5/23 10:51
|
||||
*/
|
||||
public List<DataV> getDataV(String lineIndex, String startTime, String endTime) {
|
||||
public List<DataV> getDataVThd(List<String> lineIndex, String startTime, String endTime) {
|
||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class);
|
||||
influxQueryWrapper.eq(DataV::getLineId, lineIndex)
|
||||
influxQueryWrapper.regular(DataV::getLineId, lineIndex)
|
||||
.eq(DataV::getValueType, InfluxDbSqlConstant.CP95)
|
||||
.regular(DataV::getPhasicType, Arrays.asList(InfluxDBTableConstant.PHASE_TYPE_A,InfluxDBTableConstant.PHASE_TYPE_B,InfluxDBTableConstant.PHASE_TYPE_C))
|
||||
.eq(DataV::getQualityFlag, InfluxDBTableConstant.NORMAL)
|
||||
@@ -227,9 +250,9 @@ public class LimitRateServiceImpl extends MppServiceImpl<LimitRatePOMapper, Limi
|
||||
* @return
|
||||
* @date 2022/5/23 10:51
|
||||
*/
|
||||
public List<DataV> getDataVUnbalance(String lineIndex, String startTime, String endTime) {
|
||||
public List<DataV> getDataVUnbalance(List<String> lineIndex, String startTime, String endTime) {
|
||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class);
|
||||
influxQueryWrapper.eq(DataV::getLineId, lineIndex)
|
||||
influxQueryWrapper.regular(DataV::getLineId, lineIndex)
|
||||
.regular(DataV::getValueType, Arrays.asList(InfluxDbSqlConstant.CP95,InfluxDbSqlConstant.MAX))
|
||||
.eq(DataV::getPhasicType, InfluxDBTableConstant.PHASE_TYPE_T)
|
||||
.eq(DataV::getQualityFlag, InfluxDBTableConstant.NORMAL)
|
||||
@@ -246,9 +269,9 @@ public class LimitRateServiceImpl extends MppServiceImpl<LimitRatePOMapper, Limi
|
||||
* @return
|
||||
* @date 2022/5/23 10:51
|
||||
*/
|
||||
public List<DataI> getDataINeg(String lineIndex, String startTime, String endTime) {
|
||||
public List<DataI> getDataINeg(List<String> lineIndex, String startTime, String endTime) {
|
||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataI.class);
|
||||
influxQueryWrapper.eq(DataI::getLineId, lineIndex)
|
||||
influxQueryWrapper.regular(DataI::getLineId, lineIndex)
|
||||
.eq(DataI::getPhaseType, InfluxDBTableConstant.PHASE_TYPE_T)
|
||||
.regular(DataI::getValueType, Arrays.asList(InfluxDbSqlConstant.CP95,InfluxDbSqlConstant.MAX))
|
||||
.eq(DataI::getQualityFlag, InfluxDBTableConstant.NORMAL)
|
||||
@@ -265,9 +288,9 @@ public class LimitRateServiceImpl extends MppServiceImpl<LimitRatePOMapper, Limi
|
||||
* @return
|
||||
* @date 2022/5/23 10:51
|
||||
*/
|
||||
public List<DataV> getDataVFreq(String lineIndex, String startTime, String endTime) {
|
||||
public List<DataV> getDataVFreq(List<String> lineIndex, String startTime, String endTime) {
|
||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class);
|
||||
influxQueryWrapper.eq(DataV::getLineId, lineIndex)
|
||||
influxQueryWrapper.regular(DataV::getLineId, lineIndex)
|
||||
.regular(DataV::getValueType, Arrays.asList(InfluxDbSqlConstant.MIN,InfluxDbSqlConstant.MAX))
|
||||
.eq(DataV::getPhasicType, InfluxDBTableConstant.PHASE_TYPE_T)
|
||||
.eq(DataV::getQualityFlag, InfluxDBTableConstant.NORMAL)
|
||||
@@ -284,9 +307,9 @@ public class LimitRateServiceImpl extends MppServiceImpl<LimitRatePOMapper, Limi
|
||||
* @return
|
||||
* @date 2022/5/23 10:51
|
||||
*/
|
||||
public List<DataV> getDataVDev(String lineIndex, String startTime, String endTime) {
|
||||
public List<DataV> getDataVDev(List<String> lineIndex, String startTime, String endTime) {
|
||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class);
|
||||
influxQueryWrapper.eq(DataV::getLineId, lineIndex)
|
||||
influxQueryWrapper.regular(DataV::getLineId, lineIndex)
|
||||
.eq(DataV::getValueType, InfluxDbSqlConstant.MAX)
|
||||
.regular(DataV::getPhasicType, Arrays.asList(InfluxDBTableConstant.PHASE_TYPE_A,InfluxDBTableConstant.PHASE_TYPE_B,InfluxDBTableConstant.PHASE_TYPE_C))
|
||||
.eq(DataV::getQualityFlag, InfluxDBTableConstant.NORMAL)
|
||||
@@ -303,9 +326,9 @@ public class LimitRateServiceImpl extends MppServiceImpl<LimitRatePOMapper, Limi
|
||||
* @return
|
||||
* @date 2022/5/23 10:51
|
||||
*/
|
||||
public List<DataPlt> getDataPlt(String lineIndex, String startTime, String endTime) {
|
||||
public List<DataPlt> getDataPlt(List<String> lineIndex, String startTime, String endTime) {
|
||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataPlt.class);
|
||||
influxQueryWrapper.eq(DataPlt::getLineId, lineIndex)
|
||||
influxQueryWrapper.regular(DataPlt::getLineId, lineIndex)
|
||||
.regular(DataPlt::getPhaseType, Arrays.asList(InfluxDBTableConstant.PHASE_TYPE_A,InfluxDBTableConstant.PHASE_TYPE_B,InfluxDBTableConstant.PHASE_TYPE_C))
|
||||
.eq(DataPlt::getQualityFlag, InfluxDBTableConstant.NORMAL)
|
||||
.between(DataPlt::getTime, startTime, endTime);
|
||||
|
||||
Reference in New Issue
Block a user