diff --git a/src/main/java/com/easysoftware/application/rpmpackage/RPMPackageServiceImpl.java b/src/main/java/com/easysoftware/application/rpmpackage/RPMPackageServiceImpl.java index e7ba7925d2faae1894dfb50493eeb97b83f89139..c7b044970bcb23cb5aab6d39a4562c106e856dc6 100644 --- a/src/main/java/com/easysoftware/application/rpmpackage/RPMPackageServiceImpl.java +++ b/src/main/java/com/easysoftware/application/rpmpackage/RPMPackageServiceImpl.java @@ -16,6 +16,7 @@ import com.easysoftware.application.rpmpackage.dto.RPMPackageNameSearchCondition import com.easysoftware.application.rpmpackage.dto.RPMPackageSearchCondition; import com.easysoftware.application.rpmpackage.vo.RPMPackageDetailVo; import com.easysoftware.application.rpmpackage.vo.RPMPackageDomainVo; +import com.easysoftware.application.rpmpackage.vo.RPMPackageNewestVersionVo; import com.easysoftware.common.exception.NoneResException; import com.easysoftware.common.exception.ParamErrorException; import com.easysoftware.common.utils.ResultUtil; @@ -106,14 +107,19 @@ public class RPMPackageServiceImpl extends ServiceImpl queryNewstRpmVersion(RPMPackageNameSearchCondition condition) { - Map res = rPMPkgGateway.queryNewstRpmVersion(condition); - - if (res.get("total") != null && !res.get("total").equals(Integer.valueOf(0))) { - return ResultUtil.success(HttpStatus.OK, res); - } - - res = oepkgGateway.queryNewstRpmVersion(condition); - return ResultUtil.success(HttpStatus.OK, res); + List rpmRes = rPMPkgGateway.queryNewstRpmVersion(condition); + List oepkgRes = oepkgGateway.queryNewstRpmVersion(condition); + + List list = new ArrayList<>(); + list.addAll(rpmRes); + list.addAll(oepkgRes); + RPMPackageNewestVersionVo res = RPMPackageNewestVersionVo.pickNewestOne(list); + + long total = res == null ? 0 : 1; + return ResultUtil.success(HttpStatus.OK, Map.of( + "total", total, + "list", List.of(res) + )); } /** diff --git a/src/main/java/com/easysoftware/application/rpmpackage/vo/RPMPackageNewestVersionVo.java b/src/main/java/com/easysoftware/application/rpmpackage/vo/RPMPackageNewestVersionVo.java index a750c8e80e1da9bcff4bef4269c4a6b8267ce889..f98144529f8ab46a65221350701084dac31711e7 100644 --- a/src/main/java/com/easysoftware/application/rpmpackage/vo/RPMPackageNewestVersionVo.java +++ b/src/main/java/com/easysoftware/application/rpmpackage/vo/RPMPackageNewestVersionVo.java @@ -10,6 +10,10 @@ */ package com.easysoftware.application.rpmpackage.vo; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -27,4 +31,23 @@ public class RPMPackageNewestVersionVo { * The coresspond euler versions of the rpm package. */ private String os; + + /** + * pick one from list. + * @param list list. + * @return RPMPackageNewestVersionVo containg latest newestVersion. + */ + public static RPMPackageNewestVersionVo pickNewestOne(List list) { + if (list == null || list.isEmpty()) { + return null; + } + List sortedList = list.stream() + .sorted( + Comparator.comparing(RPMPackageNewestVersionVo::getOs) + .thenComparing(RPMPackageNewestVersionVo::getNewestVersion) + ) + .collect(Collectors.toList()); + + return sortedList.get(sortedList.size() - 1); + } } diff --git a/src/main/java/com/easysoftware/domain/oepackage/gateway/OEPackageGateway.java b/src/main/java/com/easysoftware/domain/oepackage/gateway/OEPackageGateway.java index b9565693a04835f02aa2f761ae7378196a357aaa..e5c937c5e1236a6153c203233a234b0ba645b366 100644 --- a/src/main/java/com/easysoftware/domain/oepackage/gateway/OEPackageGateway.java +++ b/src/main/java/com/easysoftware/domain/oepackage/gateway/OEPackageGateway.java @@ -18,6 +18,7 @@ import com.easysoftware.application.oepackage.dto.OEPackageSearchCondition; import com.easysoftware.application.oepackage.dto.OepkgNameSearchCondition; import com.easysoftware.application.oepackage.vo.OEPackageDetailVo; import com.easysoftware.application.rpmpackage.dto.RPMPackageNameSearchCondition; +import com.easysoftware.application.rpmpackage.vo.RPMPackageNewestVersionVo; public interface OEPackageGateway { /** @@ -79,7 +80,7 @@ public interface OEPackageGateway { * Query the RPM newest version based on the provided search condition. * * @param condition The search condition for querying RPM newest version - * @return A map containing RPM newest version + * @return List of RPM newest version */ - Map queryNewstRpmVersion(RPMPackageNameSearchCondition condition); + List queryNewstRpmVersion(RPMPackageNameSearchCondition condition); } diff --git a/src/main/java/com/easysoftware/domain/rpmpackage/gateway/RPMPackageGateway.java b/src/main/java/com/easysoftware/domain/rpmpackage/gateway/RPMPackageGateway.java index 1ac7ad58fb98f9c46299cbf689cd9d9b58442aef..b9c3ebb8df65495c07f28e6d783f64fc4f1551bc 100644 --- a/src/main/java/com/easysoftware/domain/rpmpackage/gateway/RPMPackageGateway.java +++ b/src/main/java/com/easysoftware/domain/rpmpackage/gateway/RPMPackageGateway.java @@ -15,6 +15,8 @@ import com.easysoftware.application.rpmpackage.dto.RPMPackageNameSearchCondition import com.easysoftware.application.rpmpackage.dto.RPMPackageSearchCondition; import com.easysoftware.application.rpmpackage.vo.RPMPackageDetailVo; import com.easysoftware.application.rpmpackage.vo.RPMPackageMenuVo; +import com.easysoftware.application.rpmpackage.vo.RPMPackageNewestVersionVo; + import java.util.List; import java.util.Map; @@ -89,9 +91,9 @@ public interface RPMPackageGateway { * Query the RPM newest version based on the provided search condition. * * @param condition The search condition for querying RPM newest version - * @return A map containing RPM newest version + * @return List of RPM newest version */ - Map queryNewstRpmVersion(RPMPackageNameSearchCondition condition); + List queryNewstRpmVersion(RPMPackageNameSearchCondition condition); /** * query pkg num of arch by os. diff --git a/src/main/java/com/easysoftware/infrastructure/oepkg/gatewalmpl/OEPackageGatewayImpl.java b/src/main/java/com/easysoftware/infrastructure/oepkg/gatewalmpl/OEPackageGatewayImpl.java index b4d16c1dbe3bf9e878f761eeeda83733d405c840..ef3729c5b84967364fafeb6628a68c4fc055e0ce 100644 --- a/src/main/java/com/easysoftware/infrastructure/oepkg/gatewalmpl/OEPackageGatewayImpl.java +++ b/src/main/java/com/easysoftware/infrastructure/oepkg/gatewalmpl/OEPackageGatewayImpl.java @@ -33,6 +33,8 @@ import com.easysoftware.infrastructure.oepkg.gatewalmpl.coverter.OEPackageConver import com.easysoftware.infrastructure.oepkg.gatewalmpl.dataobject.OepkgDO; import com.easysoftware.infrastructure.rpmpackage.gatewayimpl.converter.RPMPackageConverter; import com.power.common.util.StringUtil; + +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.BadSqlGrammarException; import org.springframework.stereotype.Component; @@ -244,20 +246,15 @@ public class OEPackageGatewayImpl implements OEPackageGateway { * @return A map containing relevant information */ @Override - public Map queryNewstRpmVersion(RPMPackageNameSearchCondition condition) { - QueryWrapper wrapper = QueryWrapperUtil.createQueryWrapper(new OepkgDO(), - condition, ""); - RPMPackgeVersionVo pkgVo = new RPMPackgeVersionVo(); - List columns = ClassField.getFieldNames(pkgVo); - if (condition.getName() != null) { - wrapper.eq("name", condition.getName().toLowerCase()); + public List queryNewstRpmVersion(RPMPackageNameSearchCondition condition) { + QueryWrapper wrapper = new QueryWrapper<>(); + String name = condition.getName(); + List columns = ClassField.getFieldNames(new RPMPackgeVersionVo()); + if (!StringUtils.isBlank(name)) { + wrapper.eq("lower(name)", name.toLowerCase()); } wrapper.select(columns); List rpmList = oEPkgMapper.selectList(wrapper); - List versions = RPMPackageConverter.toRPMVersionFromOepkg(rpmList); - Map res = Map.ofEntries( - Map.entry("total", versions.size()), - Map.entry("list", versions)); - return res; + return RPMPackageConverter.toRPMVersionFromOepkg(rpmList); } } diff --git a/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/RPMPackageGatewayImpl.java b/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/RPMPackageGatewayImpl.java index 43613f2910cca236b03c855843c341923422c563..bad8166fabd41195a2732c446b2258eebf878c79 100644 --- a/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/RPMPackageGatewayImpl.java +++ b/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/RPMPackageGatewayImpl.java @@ -233,7 +233,7 @@ public class RPMPackageGatewayImpl implements RPMPackageGateway { * @return A map containing relevant information */ @Override - public Map queryNewstRpmVersion(final RPMPackageNameSearchCondition condition) { + public List queryNewstRpmVersion(final RPMPackageNameSearchCondition condition) { QueryWrapper wrapper = QueryWrapperUtil.createQueryWrapper(new RPMPackageDO(), condition, ""); RPMPackgeVersionVo pkgVo = new RPMPackgeVersionVo(); @@ -243,11 +243,7 @@ public class RPMPackageGatewayImpl implements RPMPackageGateway { } wrapper.select(columns); List rpmList = rPMPkgMapper.selectList(wrapper); - List versions = RPMPackageConverter.toRPMVersion(rpmList); - Map res = Map.ofEntries( - Map.entry("total", versions.size()), - Map.entry("list", versions)); - return res; + return RPMPackageConverter.toRPMVersion(rpmList); } /**