ETL/etl-cleaning/src/main/java/com/etl/cleaning/serviceimpl/PlaceServiceImpl.java

145 lines
6.2 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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);
}
}