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 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 showPlacePage(PlaceRequest placeRequest) { LambdaQueryWrapper 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 page = new Page<>(placeRequest.getPageNum(), placeRequest.getPageSize()); Page dataPlacePage = placeMapper.selectPage(page, lambdaQueryWrapper); List records = dataPlacePage.getRecords(); if(CollectionUtils.isEmpty(records)){ return Collections.emptyMap(); } List typeIds = records.stream().map(DataPlace::getTypeId).filter(Objects::nonNull).collect(Collectors.toList()); List dateTypes = typeService.listByIds(typeIds); Map typeMap = dateTypes.stream().collect(Collectors.toMap(DateType::getId, Function.identity())); List 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 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().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); } }