145 lines
6.2 KiB
Java
145 lines
6.2 KiB
Java
package com.etl.cleaning.serviceimpl;
|
||
|
||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||
import com.etl.cleaning.config.DatabaseConfig;
|
||
import com.etl.cleaning.domian.pojo.DataPlace;
|
||
import com.etl.cleaning.domian.pojo.DateType;
|
||
import com.etl.cleaning.domian.request.InsertPlaceRequest;
|
||
import com.etl.cleaning.domian.request.MysqlRequest;
|
||
import com.etl.cleaning.domian.request.PlaceRequest;
|
||
import com.etl.cleaning.domian.request.RedisRequest;
|
||
import com.etl.cleaning.domian.response.PlaceResponse;
|
||
import com.etl.cleaning.enums.EnumMsg;
|
||
import com.etl.cleaning.mapper.PlaceMapper;
|
||
import com.etl.cleaning.server.MysqlServerTest;
|
||
import com.etl.cleaning.server.RedisServerTest;
|
||
import com.etl.cleaning.service.PlaceService;
|
||
import com.etl.cleaning.service.TypeService;
|
||
import org.apache.commons.lang3.StringUtils;
|
||
import org.springframework.stereotype.Service;
|
||
import org.springframework.util.CollectionUtils;
|
||
|
||
import java.util.*;
|
||
import java.util.function.Function;
|
||
import java.util.stream.Collectors;
|
||
|
||
/**
|
||
* 数据源管理
|
||
*/
|
||
@Service
|
||
public class PlaceServiceImpl extends ServiceImpl<PlaceMapper, DataPlace> implements PlaceService {
|
||
private final TypeService typeService;
|
||
private final PlaceMapper placeMapper;
|
||
public PlaceServiceImpl(TypeService typeService, PlaceMapper placeMapper) {
|
||
this.typeService = typeService;
|
||
this.placeMapper = placeMapper;
|
||
}
|
||
|
||
@Override
|
||
public Map<String,Object> showPlacePage(PlaceRequest placeRequest) {
|
||
LambdaQueryWrapper<DataPlace> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||
if(StringUtils.isNotBlank(placeRequest.getBank())){
|
||
lambdaQueryWrapper.like(DataPlace::getName, placeRequest.getBank());
|
||
}
|
||
if(placeRequest.getTypeId()!=null){
|
||
lambdaQueryWrapper.eq(DataPlace::getTypeId,placeRequest.getTypeId());
|
||
}
|
||
Page<DataPlace> page = new Page<>(placeRequest.getPageNum(), placeRequest.getPageSize());
|
||
|
||
Page<DataPlace> dataPlacePage = placeMapper.selectPage(page, lambdaQueryWrapper);
|
||
|
||
List<DataPlace> records = dataPlacePage.getRecords();
|
||
if(CollectionUtils.isEmpty(records)){
|
||
return Collections.emptyMap();
|
||
}
|
||
List<Long> typeIds = records.stream().map(DataPlace::getTypeId).filter(Objects::nonNull).collect(Collectors.toList());
|
||
List<DateType> dateTypes = typeService.listByIds(typeIds);
|
||
Map<Long, DateType> typeMap = dateTypes.stream().collect(Collectors.toMap(DateType::getId, Function.identity()));
|
||
List<PlaceResponse> dataPlaceList = records.stream().map(item -> {
|
||
Long typeId = item.getTypeId();
|
||
DateType dateType = typeMap.get(typeId);
|
||
String typeName = dateType == null ? EnumMsg.NO_TYPE.getMessage() : dateType.getName();
|
||
return PlaceResponse.builder()
|
||
.typeName(typeName)
|
||
.name(item.getName())
|
||
.bank(item.getBank())
|
||
.statue(item.getStatue()) // 注意:这里可能是status的拼写错误,请检查
|
||
.updateTime(item.getUpdateTime())
|
||
.build();
|
||
}).collect(Collectors.toList());
|
||
//查询总条数
|
||
long total = dataPlacePage.getTotal();
|
||
//查询当前页的总条数
|
||
long size = dataPlacePage.getSize();
|
||
//计算得出的总页数
|
||
long pages = dataPlacePage.getPages();
|
||
//当前页码
|
||
long current = dataPlacePage.getCurrent();
|
||
System.out.println(total);
|
||
System.out.println(size);
|
||
System.out.println(pages);
|
||
System.out.println(current);
|
||
HashMap<String,Object> map = new HashMap<>();
|
||
map.put("total", total);
|
||
map.put("data", dataPlaceList);
|
||
return map;
|
||
}
|
||
|
||
@Override
|
||
public String dataTest(Long id) {
|
||
DataPlace dataPlace = this.getOne(new LambdaQueryWrapper<DataPlace>().eq(DataPlace::getId, id));
|
||
if(dataPlace.getTypeId() == 1){
|
||
MysqlRequest mysqlRequest = MysqlRequest.builder()
|
||
.place(dataPlace.getDataUrl())
|
||
.itemPass(dataPlace.getPassword())
|
||
.itemUsername(dataPlace.getUsername())
|
||
.itemPort(dataPlace.getPort())
|
||
.itemName(dataPlace.getDataName())
|
||
.build();
|
||
return this.insertItem(mysqlRequest);
|
||
}
|
||
if(dataPlace.getTypeId() == 2){
|
||
RedisRequest redisRequest = RedisRequest.builder()
|
||
.itemPass(dataPlace.getPassword())
|
||
.host(dataPlace.getDataUrl())
|
||
.port(Integer.valueOf(dataPlace.getPort()))
|
||
.build();
|
||
return RedisServerTest.testRedisData(redisRequest);
|
||
}
|
||
return "redis连接数据源失败";
|
||
}
|
||
|
||
@Override
|
||
public Boolean insertDataPlace(InsertPlaceRequest insertItemRequest) {
|
||
DataPlace dataPlace = DataPlace.builder()
|
||
.dataName(insertItemRequest.getDataName())
|
||
.password(insertItemRequest.getPassword())
|
||
.bank(insertItemRequest.getBank())
|
||
.dataUrl(insertItemRequest.getDataUrl())
|
||
.port(insertItemRequest.getPort())
|
||
.username(insertItemRequest.getUsername())
|
||
.yaml(insertItemRequest.getYaml())
|
||
.typeId(insertItemRequest.getTypeId())
|
||
.name(insertItemRequest.getName())
|
||
.statue(insertItemRequest.getStatue())
|
||
.updateTime(new Date())
|
||
.build();
|
||
return this.save(dataPlace);
|
||
}
|
||
|
||
|
||
private String insertItem(MysqlRequest mysqlRequest) {
|
||
//拼接路径 测试mysql数据库连接
|
||
String url =EnumMsg.URL_PRE.getMessage() + "://" + mysqlRequest.getPlace() + "/" +mysqlRequest.getItemName();
|
||
DatabaseConfig databaseConfig = DatabaseConfig.builder()
|
||
.url(url)
|
||
.port(mysqlRequest.getItemPort())
|
||
.username(mysqlRequest.getItemUsername())
|
||
.password(mysqlRequest.getItemPass())
|
||
.build();
|
||
return MysqlServerTest.testDatabaseConnection(databaseConfig);
|
||
}
|
||
}
|