|
@@ -7,13 +7,15 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.dskj.znzn.transData.common.base.PageR;
|
|
|
import com.dskj.znzn.transData.common.base.R;
|
|
|
import com.dskj.znzn.transData.common.exception.BusinessException;
|
|
|
+import com.dskj.znzn.transData.web.common.entity.SysConf;
|
|
|
+import com.dskj.znzn.transData.web.common.service.ISysConfService;
|
|
|
import com.dskj.znzn.transData.web.dataTransfer.entity.DataTransfer;
|
|
|
import com.dskj.znzn.transData.web.dataTransfer.inData.AddDataTransferTaskInData;
|
|
|
import com.dskj.znzn.transData.web.dataTransfer.inData.EditDataTransferTaskInData;
|
|
|
import com.dskj.znzn.transData.web.dataTransfer.inData.GetDataTransferInData;
|
|
|
import com.dskj.znzn.transData.web.dataTransfer.inData.GetTimeRangeInData;
|
|
|
import com.dskj.znzn.transData.web.dataTransfer.mapper.DataTransferMapper;
|
|
|
-import com.dskj.znzn.transData.web.dataTransfer.outData.GetTimeRangeOutData;
|
|
|
+import com.dskj.znzn.transData.web.dataTransfer.outData.*;
|
|
|
import com.dskj.znzn.transData.web.dataTransfer.service.IDataTransferService;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
@@ -38,6 +40,10 @@ import java.util.*;
|
|
|
@RequiredArgsConstructor(onConstructor = @__({@Autowired}))
|
|
|
public class DataTransferServiceImpl extends ServiceImpl<DataTransferMapper, DataTransfer> implements IDataTransferService {
|
|
|
|
|
|
+ private final DataTransferMapper dataTransferMapper;
|
|
|
+
|
|
|
+ private final ISysConfService sysConfService;
|
|
|
+
|
|
|
@Override
|
|
|
public PageR<DataTransfer> getDataTransfer(GetDataTransferInData data) {
|
|
|
IPage<DataTransfer> queryPage = Page.of(data.getPageNo(), data.getPageSize());
|
|
@@ -57,6 +63,7 @@ public class DataTransferServiceImpl extends ServiceImpl<DataTransferMapper, Dat
|
|
|
BeanUtils.copyProperties(data, dataTransfer);
|
|
|
dataTransfer.setTransferStatus(-1);
|
|
|
dataTransfer.setCreateTime(new Date());
|
|
|
+ dataTransfer.setTransferStatus(0);
|
|
|
save(dataTransfer);
|
|
|
}
|
|
|
|
|
@@ -68,7 +75,7 @@ public class DataTransferServiceImpl extends ServiceImpl<DataTransferMapper, Dat
|
|
|
throw new RuntimeException("数据不存在");
|
|
|
}
|
|
|
if (query.getTransferStatus() == 0 || query.getTransferStatus() == 1) {
|
|
|
- throw new RuntimeException("转换中或转换成功不能编辑");
|
|
|
+ throw new RuntimeException("导入中或导入成功不能编辑");
|
|
|
}
|
|
|
|
|
|
DataTransfer dataTransfer = new DataTransfer();
|
|
@@ -84,7 +91,7 @@ public class DataTransferServiceImpl extends ServiceImpl<DataTransferMapper, Dat
|
|
|
}
|
|
|
|
|
|
if (dataTransfer.getTransferStatus() != 2) {
|
|
|
- throw new RuntimeException("转换失败后才能重新转换");
|
|
|
+ throw new RuntimeException("导入失败后才能重新导入");
|
|
|
}
|
|
|
dataTransfer = new DataTransfer();
|
|
|
dataTransfer.setId(id);
|
|
@@ -99,7 +106,7 @@ public class DataTransferServiceImpl extends ServiceImpl<DataTransferMapper, Dat
|
|
|
throw new RuntimeException("数据不存在");
|
|
|
}
|
|
|
if (query.getTransferStatus() == 0 || query.getTransferStatus() == 1) {
|
|
|
- throw new RuntimeException("转换中或转换成功不能删除");
|
|
|
+ throw new RuntimeException("导入中或导入成功不能删除");
|
|
|
}
|
|
|
DataTransfer dataTransfer = new DataTransfer();
|
|
|
dataTransfer.setId(id);
|
|
@@ -113,11 +120,13 @@ public class DataTransferServiceImpl extends ServiceImpl<DataTransferMapper, Dat
|
|
|
wrapper.eq(DataTransfer::getWindFarmCode, data.getWindFarmCode())
|
|
|
.eq(DataTransfer::getTransferType, data.getTransferType())
|
|
|
.eq(DataTransfer::getTransferStatus, 1)
|
|
|
- .eq(DataTransfer::getStatus, 1);
|
|
|
+ .eq(DataTransfer::getStatus, 1)
|
|
|
+ .isNotNull(DataTransfer::getDataMinTime)
|
|
|
+ .isNotNull(DataTransfer::getDataMaxTime);
|
|
|
|
|
|
List<DataTransfer> datas = list(wrapper);
|
|
|
- if (null == datas) {
|
|
|
- throw new BusinessException("未查询到已转化完成数据");
|
|
|
+ if (datas.isEmpty()) {
|
|
|
+ throw new BusinessException("未查询到已导入完成的数据");
|
|
|
}
|
|
|
|
|
|
List<GetTimeRangeOutData> results = new ArrayList<>(datas.size());
|
|
@@ -141,8 +150,8 @@ public class DataTransferServiceImpl extends ServiceImpl<DataTransferMapper, Dat
|
|
|
|
|
|
for (int i = 1; i < periods.size(); i++) {
|
|
|
GetTimeRangeOutData next = periods.get(i);
|
|
|
-
|
|
|
- if (current.getEndTime().after(next.getStartTime()) || current.getEndTime().equals(next.getStartTime())) {
|
|
|
+ // 连续数据可能时间差小一天则合并
|
|
|
+ if (current.getEndTime().after(new Date(next.getStartTime().getTime() - 86400000))) {
|
|
|
current.setEndTime(current.getEndTime().after(next.getEndTime()) ? current.getEndTime() : next.getEndTime());
|
|
|
} else {
|
|
|
// 无重叠,添加当前时间段到结果列表,并移动到下一个时间段
|
|
@@ -156,18 +165,97 @@ public class DataTransferServiceImpl extends ServiceImpl<DataTransferMapper, Dat
|
|
|
return merged;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public GetStatisticalOutData getStatisticalData() {
|
|
|
+ GetStatisticalOutData data = new GetStatisticalOutData();
|
|
|
+
|
|
|
+ LambdaQueryWrapper<DataTransfer> wrapper = Wrappers.lambdaQuery();
|
|
|
+ wrapper.eq(DataTransfer::getStatus, 1).select(DataTransfer::getWindFarmCode, DataTransfer::getId, DataTransfer::getTransferStatus);
|
|
|
+ List<DataTransfer> datas = list(wrapper);
|
|
|
+ data.setWindFarmCount((int) datas.stream().map(DataTransfer::getWindFarmCode).distinct().count());
|
|
|
+
|
|
|
+ int total = datas.size();
|
|
|
+ int success = (int) datas.stream().filter(dataTransfer -> dataTransfer.getTransferStatus() == 1).count();
|
|
|
+ int fail = (int) datas.stream().filter(dataTransfer -> dataTransfer.getTransferStatus() == 2).count();
|
|
|
+
|
|
|
+ data.setTransSuccessCount(String.format("%s/%s", success, total));
|
|
|
+ data.setTransFailCount(fail);
|
|
|
+ return data;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public DataTransfer recentlyImportedSuccessfulData() {
|
|
|
+ LambdaQueryWrapper<DataTransfer> wrapper = Wrappers.lambdaQuery();
|
|
|
+ wrapper.eq(DataTransfer::getTransferStatus, 1).eq(DataTransfer::getStatus, 1);
|
|
|
+ wrapper.orderByDesc(DataTransfer::getUpdateTime);
|
|
|
+ wrapper.last("limit 1");
|
|
|
+ return getOne(wrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<ClassificationImportDataDetailsOutData> classificationImportDataDetails() {
|
|
|
+ List<ClassificationImportDataDetailsQuery> datas = dataTransferMapper.classificationImportDataDetails();
|
|
|
+ List<SysConf> confList = sysConfService.getByType("trans_type");
|
|
|
+ Map<String, List<ClassificationImportDataDetailsQuery>> windFarmMap = new HashMap<>();
|
|
|
+
|
|
|
+ for (ClassificationImportDataDetailsQuery query : datas) {
|
|
|
+ if (windFarmMap.containsKey(query.getWindFarmCode())) {
|
|
|
+ windFarmMap.get(query.getWindFarmCode()).add(query);
|
|
|
+ } else {
|
|
|
+ List<ClassificationImportDataDetailsQuery> list = new ArrayList<>();
|
|
|
+ list.add(query);
|
|
|
+ windFarmMap.put(query.getWindFarmCode(), list);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<ClassificationImportDataDetailsOutData> results = new ArrayList<>();
|
|
|
+ windFarmMap.forEach((key, value) -> {
|
|
|
+ Map<String, ClassificationImportDataDetailsQuery> typeMap = new HashMap<>();
|
|
|
+ for (ClassificationImportDataDetailsQuery query : value) {
|
|
|
+ typeMap.put(query.getTransferType(), query);
|
|
|
+ }
|
|
|
+
|
|
|
+ ClassificationImportDataDetailsOutData outData = new ClassificationImportDataDetailsOutData();
|
|
|
+ outData.setWindFarmCode(key);
|
|
|
+ outData.setWindFarmName(value.get(0).getWindFarmName());
|
|
|
+
|
|
|
+ List<TypeCountData> typeCountDataList = new ArrayList<>();
|
|
|
+ for (SysConf sysConf : confList) {
|
|
|
+ TypeCountData data = new TypeCountData();
|
|
|
+ if (typeMap.containsKey(sysConf.getParamKey())) {
|
|
|
+ data.setTransferType(sysConf.getParamKey());
|
|
|
+ data.setTransferName(sysConf.getParamValue());
|
|
|
+ data.setCount(typeMap.get(sysConf.getParamKey()).getCount());
|
|
|
+ data.setLatestStorageTime(typeMap.get(sysConf.getParamKey()).getLatestStorageTime());
|
|
|
+ } else {
|
|
|
+ data.setTransferType(sysConf.getParamKey());
|
|
|
+ data.setTransferName(sysConf.getParamValue());
|
|
|
+ data.setCount(0);
|
|
|
+ data.setLatestStorageTime(null);
|
|
|
+ }
|
|
|
+ typeCountDataList.add(data);
|
|
|
+ }
|
|
|
+ outData.setTypeCountDataList(typeCountDataList);
|
|
|
+ results.add(outData);
|
|
|
+ });
|
|
|
+
|
|
|
+ return results;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
public static void main(String[] args) throws ParseException {
|
|
|
List<GetTimeRangeOutData> results = new ArrayList<>();
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
List<GetTimeRangeOutData> periods = new ArrayList<>();
|
|
|
periods.add(new GetTimeRangeOutData(sdf.parse("2024-01-01 00:00:00"), sdf.parse("2024-03-31 23:59:59")));
|
|
|
+ periods.add(new GetTimeRangeOutData(sdf.parse("2024-04-01 00:00:00"), sdf.parse("2024-05-31 23:59:59")));
|
|
|
periods.add(new GetTimeRangeOutData(sdf.parse("2024-08-01 00:00:00"), sdf.parse("2024-12-31 23:59:59")));
|
|
|
- periods.add(new GetTimeRangeOutData(sdf.parse("2024-02-01 00:00:00"), sdf.parse("2024-05-31 23:59:59")));
|
|
|
|
|
|
List<GetTimeRangeOutData> mergedPeriods = mergePeriods(periods);
|
|
|
for (GetTimeRangeOutData period : mergedPeriods) {
|
|
|
System.out.println(sdf.format(period.getStartTime()) + " " + sdf.format(period.getEndTime()));
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
}
|