Forráskód Böngészése

BuildDeployController 添加对 appName 的模糊搜索

reghao 3 hónapja
szülő
commit
9c90e71116

+ 19 - 4
web/src/main/java/cn/reghao/bnt/web/devops/app/controller/BuildDeployController.java

@@ -25,7 +25,9 @@ import org.springframework.data.domain.Sort;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author reghao
@@ -61,10 +63,23 @@ public class BuildDeployController {
     @GetMapping(value = "/build")
     public String index(@RequestParam(value = "pn") int pageNumber,
                         @RequestParam(value = "env") String env,
-                        @RequestParam(value = "appType") String appType) {
-        Sort sort = Sort.by(Sort.Direction.DESC, "buildTime");
-        PageRequest pageRequest = PageRequest.of(pageNumber-1, pageSize, sort);
-        Page<AppBuildingVO> page = appBuildQuery.getByPage(env, appType, pageRequest);
+                        @RequestParam(value = "appType") String appType,
+                        @RequestParam(value = "appName") String appName) {
+        PageRequest pageRequest;
+        Page<AppBuildingVO> page;
+        if (!appName.isBlank()) {
+            Map<String, String> map = new HashMap<>();
+            map.put("env", env);
+            map.put("appType", appType);
+            map.put("appName", appName);
+            pageRequest = PageRequest.of(pageNumber-1, pageSize);
+            page = appBuildQuery.queryByAppName(map, pageRequest);
+        } else {
+            Sort sort = Sort.by(Sort.Direction.DESC, "buildTime");
+            pageRequest = PageRequest.of(pageNumber-1, pageSize, sort);
+            page = appBuildQuery.getByPage(env, appType, pageRequest);
+        }
+
         PageList<AppBuildingVO> pageList = getPageList(page);
         return WebResult.success(pageList);
     }

+ 1 - 0
web/src/main/java/cn/reghao/bnt/web/devops/app/db/query/AppBuildQuery.java

@@ -29,6 +29,7 @@ public interface AppBuildQuery {
     List<AppConfig> findAllByPackerConfig(PackerConfig packerConfig);
 
     Page<AppBuildingVO> getByPage(String appEnv, String appType, Pageable pageable);
+    Page<AppBuildingVO> queryByAppName(Map<String, String> kv, Pageable pageable);
     Page<BuildLogVO> buildLogVOs(String appId, Pageable pageable);
     boolean isBuilding(String appId);
     BuildLog getBuildLog(String buildLogId);

+ 44 - 13
web/src/main/java/cn/reghao/bnt/web/devops/app/db/query/impl/AppBuildQueryImpl.java

@@ -49,10 +49,20 @@ public class AppBuildQueryImpl implements AppBuildQuery {
     public Page<AppConfig> queryByFields(Map<String, String> kv, Pageable pageable) {
         Specification<AppConfig> specification = (root, query, cb) -> {
             List<Predicate> predicates = new ArrayList<>();
-            kv.forEach((name, value) -> {
-                predicates.add(cb.like(root.get(name), "%" + value + "%"));
-            });
+            String appName = kv.get("appName");
+            if (appName != null && !appName.isBlank()) {
+                predicates.add(cb.like(root.get("appName"), "%" + appName + "%"));
+            }
+
+            String appType = kv.get("appType");
+            if (appType != null && !appType.isBlank()) {
+                predicates.add(cb.equal(root.get("appType"), appType));
+            }
 
+            /*String env = kv.get("env");
+            if (env != null && !env.isBlank()) {
+                predicates.add(cb.equal(root.get("env"), env));
+            }*/
             // select * from app_building where app_id like '%test%' and app_name like '%测试%'
             return cb.and(predicates.toArray(new Predicate[0]));
         };
@@ -107,18 +117,39 @@ public class AppBuildQueryImpl implements AppBuildQuery {
     @Override
     public Page<AppBuildingVO> getByPage(String appEnv, String appType, Pageable pageable) {
         Page<AppBuilding> page = buildingRepository.findAllByAppConfig_EnvAndAppConfig_AppType(appEnv, appType, pageable);
-        Page<AppBuildingVO> page1 = page.map(appBuilding -> {
-            int totalNode = appDeployQuery.countByApp(appBuilding.getAppConfig());
-            int totalRunning = 0;
-            BuildLog buildLog = appBuilding.getBuildLog();
-            if (buildLog != null) {
-                String buildLogId = buildLog.getBuildLogId();
-                totalRunning = appDeployQuery.getAppRunningCountByBuildLogId(buildLogId);
-            }
+        return page.map(this::getAppBuildingVO);
+    }
+
+    private AppBuildingVO getAppBuildingVO(AppBuilding appBuilding) {
+        int totalNode = appDeployQuery.countByApp(appBuilding.getAppConfig());
+        int totalRunning = 0;
+        BuildLog buildLog = appBuilding.getBuildLog();
+        if (buildLog != null) {
+            String buildLogId = buildLog.getBuildLogId();
+            totalRunning = appDeployQuery.getAppRunningCountByBuildLogId(buildLogId);
+        }
 
-            return new AppBuildingVO(appBuilding, totalNode, totalRunning);
+        return new AppBuildingVO(appBuilding, totalNode, totalRunning);
+    }
+
+    public Page<AppBuildingVO> queryByAppName(Map<String, String> kv, Pageable pageable) {
+        Page<AppConfig> page = queryByFields(kv, pageable);
+        return page.map(appConfig -> {
+            AppBuilding appBuilding = buildingRepository.findAllByAppConfig_AppId(appConfig.getAppId());
+            return getAppBuildingVO(appBuilding);
         });
-        return page1;
+        /*Specification<AppBuilding> specification = (root, query, cb) -> {
+            List<Predicate> predicates = new ArrayList<>();
+            kv.forEach((name, value) -> {
+                predicates.add(cb.like(root.get(name), "%" + value + "%"));
+            });
+
+            // select * from app_building where app_id like '%test%' and app_name like '%测试%'
+            return cb.and(predicates.toArray(new Predicate[0]));
+        };
+
+        Page<AppBuilding> page = buildingRepository.findAll(specification, pageable);
+        return page.map(this::getAppBuildingVO);*/
     }
 
     @Override

+ 2 - 2
web/src/main/java/cn/reghao/bnt/web/devops/app/db/repository/AppBuildingRepository.java

@@ -4,16 +4,16 @@ import cn.reghao.bnt.web.devops.app.model.po.AppBuilding;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 
 /**
  * @author reghao
  * @date 2023-11-15 21:24:50
  */
-public interface AppBuildingRepository extends JpaRepository<AppBuilding, Integer> {
+public interface AppBuildingRepository extends JpaRepository<AppBuilding, Integer> , JpaSpecificationExecutor<AppBuilding> {
     void deleteByAppConfig_AppId(String appId);
 
     Page<AppBuilding> findAllByAppConfig_EnvAndAppConfig_AppType(String env, String type, Pageable pageable);
-    Page<AppBuilding> findAllByAppConfig_AppName(String appName, Pageable pageable);
     AppBuilding findAllByAppConfig_AppId(String appId);
     Page<AppBuilding> findAllByOnBuildingIsTrue(Pageable pageable);
 }