diff --git a/collector-scheduling-management/src/main/java/com/docus/server/controller/SchCollectorController.java b/collector-scheduling-management/src/main/java/com/docus/server/controller/SchCollectorController.java index 907642c..7ec4947 100644 --- a/collector-scheduling-management/src/main/java/com/docus/server/controller/SchCollectorController.java +++ b/collector-scheduling-management/src/main/java/com/docus/server/controller/SchCollectorController.java @@ -10,6 +10,7 @@ import com.docus.server.dto.scheduling.management.schcollector.DeleteSchCollecto import com.docus.server.dto.scheduling.management.schcollector.EditSchCollectorDTO; import com.docus.server.dto.scheduling.management.schcollector.UpdateSchCollectorDTO; import com.docus.server.service.ISchCollectorService; +import com.docus.server.vo.scheduling.management.schcollector.LoadSchCollectorVO; import com.docus.server.vo.scheduling.management.schcollector.SchCollectorVO; import org.springframework.web.bind.annotation.RestController; @@ -28,7 +29,7 @@ public class SchCollectorController implements SchCollectorApi { private ISchCollectorService iSchCollectorService; @Override - public List findAll() { + public List findAll() { return iSchCollectorService.findAll(); } diff --git a/collector-scheduling-management/src/main/java/com/docus/server/service/ISchCollectorService.java b/collector-scheduling-management/src/main/java/com/docus/server/service/ISchCollectorService.java index 5f43a3d..2ce1755 100644 --- a/collector-scheduling-management/src/main/java/com/docus/server/service/ISchCollectorService.java +++ b/collector-scheduling-management/src/main/java/com/docus/server/service/ISchCollectorService.java @@ -7,6 +7,7 @@ import com.docus.server.dto.scheduling.management.schcollector.DeleteSchCollecto import com.docus.server.dto.scheduling.management.schcollector.EditSchCollectorDTO; import com.docus.server.dto.scheduling.management.schcollector.UpdateSchCollectorDTO; import com.docus.server.entity.scheduling.management.SchCollector; +import com.docus.server.vo.scheduling.management.schcollector.LoadSchCollectorVO; import com.docus.server.vo.scheduling.management.schcollector.SchCollectorVO; import java.util.List; @@ -67,6 +68,6 @@ public interface ISchCollectorService { SchCollector findByCollectorId(String collectorId); - List findAll(); + List findAll(); } diff --git a/collector-scheduling-management/src/main/java/com/docus/server/service/impl/SchCollectorServiceImpl.java b/collector-scheduling-management/src/main/java/com/docus/server/service/impl/SchCollectorServiceImpl.java index c64c026..d2609ee 100644 --- a/collector-scheduling-management/src/main/java/com/docus/server/service/impl/SchCollectorServiceImpl.java +++ b/collector-scheduling-management/src/main/java/com/docus/server/service/impl/SchCollectorServiceImpl.java @@ -16,19 +16,28 @@ import com.docus.server.dto.scheduling.management.schcollector.DeleteSchCollecto import com.docus.server.dto.scheduling.management.schcollector.EditSchCollectorDTO; import com.docus.server.dto.scheduling.management.schcollector.UpdateSchCollectorDTO; import com.docus.server.entity.scheduling.management.SchCollector; +import com.docus.server.entity.scheduling.management.SchCollectorVersion; +import com.docus.server.entity.scheduling.management.SchCollectorVersionFile; import com.docus.server.entity.scheduling.management.SchSystemParams; import com.docus.server.infrastructure.dao.ISchCollectorDao; +import com.docus.server.infrastructure.dao.ISchCollectorVersionDao; +import com.docus.server.infrastructure.dao.ISchCollectorVersionFileDao; import com.docus.server.service.ISchCollectorService; import com.docus.server.service.ISchSystemParamsService; +import com.docus.server.vo.scheduling.management.schcollector.LoadSchCollectorVO; import com.docus.server.vo.scheduling.management.schcollector.SchCollectorVO; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Comparator; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; /** * 采集器管理 服务实现类 @@ -41,6 +50,10 @@ public class SchCollectorServiceImpl implements ISchCollectorService { @Resource private ISchCollectorDao iSchCollectorDao; @Resource + private ISchCollectorVersionDao iSchCollectorVersionDao; + @Resource + private ISchCollectorVersionFileDao iSchCollectorVersionFileDao; + @Resource private ISchSystemParamsService iSchSystemParamsService; @Resource private IdService idService; @@ -102,9 +115,66 @@ public class SchCollectorServiceImpl implements ISchCollectorService { } @Override - public List findAll() { + public List findAll() { List schCollectors = iSchCollectorDao.findAll(); - return SchCollectorConvert.INSTANCE.convertVO(schCollectors); + + List schCollectorVersionList = iSchCollectorVersionDao.findAll(); + + List schCollectorVersionFileList = iSchCollectorVersionFileDao.findAll(); + + List notEmptyVersionCollectors = schCollectors.stream().filter(p -> Func.isNotEmpty(p.getCollectorVersionId())).collect(Collectors.toList()); + + List emptyVersionCollectors = schCollectors.stream().filter(p -> Func.isEmpty(p.getCollectorVersionId())).collect(Collectors.toList()); + + Map stringSchCollectorVersionFileMap = ListUtils.toMap(schCollectorVersionFileList, schCollectorVersionFile -> String.format("%s%s", schCollectorVersionFile.getCollectorId(), schCollectorVersionFile.getCollectorVersionId())); + + List loadSchCollectorVOList = new ArrayList<>(); + + for (SchCollector schCollector : notEmptyVersionCollectors) { + String key = String.format("%s%s", schCollector.getCollectorId(), schCollector.getCollectorVersionId()); + if (stringSchCollectorVersionFileMap.containsKey(key)) { + LoadSchCollectorVO loadSchCollectorVO = new LoadSchCollectorVO(); + + SchCollectorVersionFile schCollectorVersionFile = stringSchCollectorVersionFileMap.get(key); + loadSchCollectorVO.setCollectorId(schCollector.getCollectorId()); + loadSchCollectorVO.setCollectorVersionId(schCollectorVersionFile.getCollectorVersionId()); + loadSchCollectorVO.setFilePath(schCollectorVersionFile.getFilePath()); + loadSchCollectorVO.setDeployPath(schCollectorVersionFile.getDeployPath()); + loadSchCollectorVO.setProcessName(schCollectorVersionFile.getProcessName()); + + loadSchCollectorVOList.add(loadSchCollectorVO); + } + } + + Map> collectorVersionMap = schCollectorVersionList.stream().collect(Collectors.groupingBy(SchCollectorVersion::getCollectorId, Collectors.maxBy(Comparator.comparing(SchCollectorVersion::getCollectVersion)))); + + for (SchCollector schCollector : emptyVersionCollectors) { + Long key = schCollector.getCollectorId(); + + if (collectorVersionMap.containsKey(key)) { + + SchCollectorVersion schCollectorVersion = collectorVersionMap.get(key).get(); + + String versionKey = String.format("%s%s", schCollectorVersion.getCollectorId(), schCollectorVersion.getId()); + + if (stringSchCollectorVersionFileMap.containsKey(versionKey)) { + + LoadSchCollectorVO loadSchCollectorVO = new LoadSchCollectorVO(); + + SchCollectorVersionFile schCollectorVersionFile = stringSchCollectorVersionFileMap.get(versionKey); + + loadSchCollectorVO.setCollectorId(schCollector.getCollectorId()); + loadSchCollectorVO.setCollectorVersionId(schCollectorVersionFile.getCollectorVersionId()); + loadSchCollectorVO.setFilePath(schCollectorVersionFile.getFilePath()); + loadSchCollectorVO.setDeployPath(schCollectorVersionFile.getDeployPath()); + loadSchCollectorVO.setProcessName(schCollectorVersionFile.getProcessName()); + + loadSchCollectorVOList.add(loadSchCollectorVO); + } + + } + } + return loadSchCollectorVOList; } /** diff --git a/collector-terminal-management/src/main/java/com/docus/server/common/LoadPackageCommandLineRunner.java b/collector-terminal-management/src/main/java/com/docus/server/common/LoadPackageCommandLineRunner.java index d9c0870..e42e43b 100644 --- a/collector-terminal-management/src/main/java/com/docus/server/common/LoadPackageCommandLineRunner.java +++ b/collector-terminal-management/src/main/java/com/docus/server/common/LoadPackageCommandLineRunner.java @@ -1,8 +1,9 @@ package com.docus.server.common; import com.docus.server.api.scheduling.management.SchCollectorApi; -import com.docus.server.vo.scheduling.management.schcollector.SchCollectorVO; +import com.docus.server.vo.scheduling.management.schcollector.LoadSchCollectorVO; import org.springframework.boot.CommandLineRunner; +import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.List; @@ -10,16 +11,16 @@ import java.util.List; /** * load collector package and config */ +@Component public class LoadPackageCommandLineRunner implements CommandLineRunner { @Resource private SchCollectorApi schCollectorApi; @Override public void run(String... args) throws Exception { - List schCollectorVOList = schCollectorApi.findAll(); - - + List loadSchCollectorVOList = schCollectorApi.findAll(); + System.out.println(loadSchCollectorVOList); } } diff --git a/docus-api-common/src/main/java/com/docus/server/common/config/FeignResponseDecoder.java b/docus-api-common/src/main/java/com/docus/server/common/config/FeignResponseDecoder.java new file mode 100644 index 0000000..e5d6f40 --- /dev/null +++ b/docus-api-common/src/main/java/com/docus/server/common/config/FeignResponseDecoder.java @@ -0,0 +1,51 @@ +package com.docus.server.common.config; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.docus.infrastructure.web.exception.ApiException; +import feign.FeignException; +import feign.Response; +import feign.Util; +import feign.codec.Decoder; +import org.springframework.cloud.openfeign.support.ResponseEntityDecoder; +import org.springframework.util.StringUtils; + +import java.io.IOException; +import java.lang.reflect.Type; +import java.nio.charset.Charset; +import java.util.Objects; + +//feign处理统一输出和异常 +public class FeignResponseDecoder extends ResponseEntityDecoder { + public FeignResponseDecoder(Decoder decoder) { + super(decoder); + } + + @Override + public Object decode(Response response, Type type) throws IOException, FeignException { + String body; + //response. body默认是InputStreamBody , 加了Feign 1og之后转为ByteArrayBody + if (response.body().length() == null && response.body().asInputStream().available() == 0) { + byte[] bodyData = Util.toByteArray(response.body().asInputStream()); + body = new String(bodyData); + } else { + body = response.body().toString(); + } + if (!StringUtils.isEmpty(body)) { + JSONObject responseobject = JSON.parseObject(body); + if (responseobject.containsKey("code")) { + Integer code = responseobject.getInteger("code"); + if (!Objects.equals(0, code)) { + String message = responseobject.getString("msg"); + throw new ApiException(code, message); + } + String result = responseobject.getString("data"); + if (result == null || "null".equalsIgnoreCase(result)) { + return null; + } + response = response.toBuilder().body(result, Charset.forName("UTF-8")).build(); + } + } + return super.decode(response, type); + } +} diff --git a/docus-api-common/src/main/java/com/docus/server/common/config/SpringCloudConfig.java b/docus-api-common/src/main/java/com/docus/server/common/config/SpringCloudConfig.java new file mode 100644 index 0000000..6b97dbe --- /dev/null +++ b/docus-api-common/src/main/java/com/docus/server/common/config/SpringCloudConfig.java @@ -0,0 +1,26 @@ +package com.docus.server.common.config; + +import feign.codec.Decoder; +import feign.optionals.OptionalDecoder; +import org.springframework.beans.factory.ObjectFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.http.HttpMessageConverters; +import org.springframework.cloud.openfeign.support.SpringDecoder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class SpringCloudConfig { + + @Autowired(required = false) + private ObjectFactory messageConverters; + + //feign统一输出体响应拦截 + @ConditionalOnMissingBean(value = Decoder.class) + @Bean + public Decoder feignResponseDecoder() { + return new OptionalDecoder( + new FeignResponseDecoder(new SpringDecoder(this.messageConverters))); + } +} diff --git a/docus-client-interface/src/main/java/com/docus/server/api/scheduling.management/SchCollectorApi.java b/docus-client-interface/src/main/java/com/docus/server/api/scheduling.management/SchCollectorApi.java index e3b3f7e..13945e9 100644 --- a/docus-client-interface/src/main/java/com/docus/server/api/scheduling.management/SchCollectorApi.java +++ b/docus-client-interface/src/main/java/com/docus/server/api/scheduling.management/SchCollectorApi.java @@ -6,6 +6,7 @@ import com.docus.server.dto.scheduling.management.schcollector.AddSchCollectorDT import com.docus.server.dto.scheduling.management.schcollector.DeleteSchCollectorDTO; import com.docus.server.dto.scheduling.management.schcollector.EditSchCollectorDTO; import com.docus.server.dto.scheduling.management.schcollector.UpdateSchCollectorDTO; +import com.docus.server.vo.scheduling.management.schcollector.LoadSchCollectorVO; import com.docus.server.vo.scheduling.management.schcollector.SchCollectorVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -38,7 +39,7 @@ public interface SchCollectorApi { */ @ApiOperation("查询全部") @GetMapping("/find/all") - List findAll(); + List findAll(); /** * 按主键查询 diff --git a/docus-client-interface/src/main/java/com/docus/server/entity/scheduling.management/SchCollectorVersionFile.java b/docus-client-interface/src/main/java/com/docus/server/entity/scheduling.management/SchCollectorVersionFile.java index d72d990..e7f8b56 100644 --- a/docus-client-interface/src/main/java/com/docus/server/entity/scheduling.management/SchCollectorVersionFile.java +++ b/docus-client-interface/src/main/java/com/docus/server/entity/scheduling.management/SchCollectorVersionFile.java @@ -58,6 +58,14 @@ public class SchCollectorVersionFile implements Serializable { @TableField("file_type") private String fileType; + @ApiModelProperty(value = "采集器部署路径") + @TableField("deploy_path") + private String deployPath; + + @ApiModelProperty(value = "采集器进程名称") + @TableField("process_name") + private String processName; + @ApiModelProperty(value = "是否作废 1:是;0:否") @TableField("state") private CancelEnum state; diff --git a/docus-client-interface/src/main/java/com/docus/server/vo/scheduling.management/schcollector/LoadSchCollectorVO.java b/docus-client-interface/src/main/java/com/docus/server/vo/scheduling.management/schcollector/LoadSchCollectorVO.java new file mode 100644 index 0000000..6da94de --- /dev/null +++ b/docus-client-interface/src/main/java/com/docus/server/vo/scheduling.management/schcollector/LoadSchCollectorVO.java @@ -0,0 +1,38 @@ +package com.docus.server.vo.scheduling.management.schcollector; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * LoadSchCollectorVO VO + * + * @author AutoGenerator + * @since 2023-07-15 + */ +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Data +@ApiModel(value = "LoadSchCollectorVO", description = "LoadSchCollectorVO") +public class LoadSchCollectorVO { + + @ApiModelProperty(value = "采集器id") + private Long collectorId; + + @ApiModelProperty(value = "采集器版本id") + private Long collectorVersionId; + + @ApiModelProperty(value = "文件目录 单纯文件夹路径,不带文件名,如:F:\\嘉时\\新建文件夹\\") + private String filePath; + + @ApiModelProperty(value = "采集器部署路径") + private String deployPath; + + @ApiModelProperty(value = "采集器进程名称") + private String processName; + +} diff --git a/docus-client-interface/src/main/java/com/docus/server/vo/scheduling.management/schcollectorversionfile/SchCollectorVersionFileVO.java b/docus-client-interface/src/main/java/com/docus/server/vo/scheduling.management/schcollectorversionfile/SchCollectorVersionFileVO.java index 9ac4071..1dcbfe9 100644 --- a/docus-client-interface/src/main/java/com/docus/server/vo/scheduling.management/schcollectorversionfile/SchCollectorVersionFileVO.java +++ b/docus-client-interface/src/main/java/com/docus/server/vo/scheduling.management/schcollectorversionfile/SchCollectorVersionFileVO.java @@ -43,6 +43,12 @@ public class SchCollectorVersionFileVO implements Serializable { @ApiModelProperty(value = "文件类型") private String fileType; + @ApiModelProperty(value = "采集器部署路径") + private String deployPath; + + @ApiModelProperty(value = "采集器进程名称") + private String processName; + @ApiModelProperty(value = "是否作废 1:是;0:否") private CancelEnum state;