diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/api/IProjectPlan.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/api/IProjectPlan.java
index 5d1a1ebdcc21384b7e6c92b5e30caca0651699b7..6415e7f04cfd3e9fcf565591cb6c20307e5617f3 100644
--- a/ServiceSite/facade/src/main/java/com/seasky/projectplan/api/IProjectPlan.java
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/api/IProjectPlan.java
@@ -5,6 +5,8 @@ import com.seasky.core.common.Result;
 import com.seasky.projectplan.dto.projectlibrary.ProjectLibraryOut;
 import com.seasky.projectplan.dto.projectlibrary.ProjectLibraryQry;
 import com.seasky.projectplan.dto.projectplan.*;
+import com.seasky.projectplan.dto.projectplan.projecttype.ProjectTypeOut;
+import com.seasky.projectplan.dto.projectplan.projecttype.ProjectTypeQry;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -28,13 +30,12 @@ import java.util.List;
 public interface IProjectPlan {
 
     /**
-     * 鏌ヨ褰掑彛閮ㄩ棬锛堝姩鎬侊級
-     *
+     * 鏍规嵁鐢虫姤闃舵鏌ヨ椤圭洰绫诲瀷
      * @param projectInfoPlanQry 椤圭洰淇℃伅璁″垝qry
      * @return {@link Result}<{@link ProjectPlanBookOut}>
      */
-    @PostMapping(path = "/queryGuiKouDepartment")
-    Result<ProjectPlanBookGuiKouOut> queryGuiKouDepartment(ProjectInfoPlanQry projectInfoPlanQry);
+    @PostMapping(path = "/queryProjectTypeByPlanType")
+    Result<ProjectTypeOut> queryProjectTypeByPlanType(ProjectTypeQry projectInfoPlanQry);
 
 
     /**
diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/projecttype/ProjectTypeOut.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/projecttype/ProjectTypeOut.java
new file mode 100644
index 0000000000000000000000000000000000000000..1b68e14ad92f06fffc0bfa6d82ca2c5ac9ed0913
--- /dev/null
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/projecttype/ProjectTypeOut.java
@@ -0,0 +1,29 @@
+package com.seasky.projectplan.dto.projectplan.projecttype;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @author 灏忓懆(喔� 鈥� 虁 _ 鈥� 虂)喔�
+ * @Data 2022/8/5 14:49
+ */
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@JsonInclude(JsonInclude.Include.ALWAYS)
+public class ProjectTypeOut implements Serializable {
+
+    private static final long serialVersionUID = 6603755863812327493L;
+    @ApiModelProperty(value = "椤圭洰绫诲瀷id",example = "")
+    private Long projectTypeId;
+
+    @ApiModelProperty(value = "椤圭洰绫诲瀷")
+    private String projectType;
+
+}
diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/projecttype/ProjectTypeQry.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/projecttype/ProjectTypeQry.java
new file mode 100644
index 0000000000000000000000000000000000000000..bb161971c90f9a74f548cccd0c0f4b75c52ec687
--- /dev/null
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/projecttype/ProjectTypeQry.java
@@ -0,0 +1,25 @@
+package com.seasky.projectplan.dto.projectplan.projecttype;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel("鏍规嵁鐢虫姤闃舵鏌ヨ椤圭洰绫诲瀷")
+public class ProjectTypeQry  implements Serializable {
+
+    private static final long serialVersionUID = 7741721008321362827L;
+    @ApiModelProperty(value = "骞翠唤",example = "")
+    private Integer year;
+
+    @ApiModelProperty(value = "鐢虫姤闃舵",example = "")
+    private String planType;
+}
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/application/query/projectplan/ProjectPlanQueryService.java b/ServiceSite/src/main/java/com/seasky/projectplan/application/query/projectplan/ProjectPlanQueryService.java
index 6aacd1652e02d8457cc2e89d6c052e689b613c25..5e997d3d362588c94c86388f7156548b1c144c8a 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/application/query/projectplan/ProjectPlanQueryService.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/application/query/projectplan/ProjectPlanQueryService.java
@@ -4,6 +4,8 @@ import com.seasky.core.base.BaseService;
 import com.seasky.core.common.Pagination;
 import com.seasky.core.common.Result;
 import com.seasky.projectplan.dto.projectplan.*;
+import com.seasky.projectplan.dto.projectplan.projecttype.ProjectTypeOut;
+import com.seasky.projectplan.dto.projectplan.projecttype.ProjectTypeQry;
 import com.seasky.projectplan.dto.target.QueryTargetPlan;
 import com.seasky.projectplan.dto.target.TargetListOut;
 import com.seasky.projectplan.dto.target.TargetQry;
@@ -379,10 +381,9 @@ public interface ProjectPlanQueryService extends BaseService<ProjectPlanBookPo>
     PersonInfoOut getPersonInfo();
 
     /**
-     * 鏌ヨ褰掑彛閮ㄩ棬锛堝姩鎬侊級
-     *
-     * @param projectInfoPlanQry 椤圭洰淇℃伅璁″垝qry
+     * 鏍规嵁鐢虫姤闃舵鏌ヨ椤圭洰绫诲瀷
+     * @param projectTypeQry 椤圭洰绫诲瀷qry
      * @return {@link Result}<{@link ProjectPlanBookOut}>
      */
-    List<ProjectPlanBookGuiKouOut> queryGuiKouDepartment(ProjectInfoPlanQry projectInfoPlanQry);
+    List<ProjectTypeOut> queryProjectTypeByPlanType(ProjectTypeQry projectTypeQry);
 }
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/reader/projectplan/ProjectPlanQueryServiceImpl.java b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/reader/projectplan/ProjectPlanQueryServiceImpl.java
index 661ab1afc976425dc6201fafc2c2089172ae25fc..9bffac17a38f20826f8965908be8427856ccc31a 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/reader/projectplan/ProjectPlanQueryServiceImpl.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/reader/projectplan/ProjectPlanQueryServiceImpl.java
@@ -43,6 +43,8 @@ import com.seasky.projectplan.dto.budgetinfo.BudgetInfoQry;
 import com.seasky.projectplan.dto.budgetinfo.ExportBudgetInfoOut;
 import com.seasky.projectplan.dto.collegeclasses.CollegeClassesOut;
 import com.seasky.projectplan.dto.projectplan.*;
+import com.seasky.projectplan.dto.projectplan.projecttype.ProjectTypeOut;
+import com.seasky.projectplan.dto.projectplan.projecttype.ProjectTypeQry;
 import com.seasky.projectplan.dto.schoolStudentInformation.SchoolStudentInformationOut;
 import com.seasky.projectplan.dto.target.QueryTargetPlan;
 import com.seasky.projectplan.dto.target.TargetListExport;
@@ -2247,21 +2249,47 @@ public class ProjectPlanQueryServiceImpl extends AbstractService<ProjectPlanBook
         }
     }
 
+    /**
+     * 鏍规嵁鐢虫姤闃舵鏌ヨ椤圭洰绫诲瀷
+     * @param projectTypeQry 椤圭洰绫诲瀷
+     * @return {@link List}<{@link ProjectTypeOut}>
+     */
     @Override
-    public List<ProjectPlanBookGuiKouOut> queryGuiKouDepartment(ProjectInfoPlanQry projectInfoPlanQry) {
+    public List<ProjectTypeOut> queryProjectTypeByPlanType(ProjectTypeQry projectTypeQry) {
         //鑾峰彇褰撳墠鐧诲綍浜虹殑閮ㄩ棬淇℃伅
         List<String> codeList = BaseDataUtil.makeCurrentUserDeptCodeList();
         QueryWrapper<ProjectPlanBookPo> bookPoQueryWrapper = new QueryWrapper<>();
-        bookPoQueryWrapper.in("department_code", codeList)
-                .eq("year", projectInfoPlanQry.getYear())
-                .eq("plan_type", projectInfoPlanQry.getPlanType())
-                .eq("available", "YES");
+        bookPoQueryWrapper.in("department_code",codeList)
+                .eq("year",projectTypeQry.getYear())
+                .eq("plan_type",projectTypeQry.getPlanType())
+                .eq("available","YES");
         List<ProjectPlanBookPo> projectPlanBookPos = projectPlanBookMapper.selectList(bookPoQueryWrapper);
+        log.info("褰撳墠鐧诲綍浜烘病鏈夊搴旂殑鐢虫姤涔�");
         if (ObjectUtils.isEmpty(projectPlanBookPos)) {
-            throw ExceptionUtil.getException(null, "褰撳墠鐧诲綍浜烘病鏈夊搴旂殑褰掑彛閮ㄩ棬");
+            return new ArrayList<>();
+        }
+        List<ProjectTypeOut> projectPlanBookGuiKouOuts = MapperUtils.INSTANCE.mapAsList(ProjectTypeOut.class, projectPlanBookPos);
+        List<BudgetInfoPo> budgetInfoPos = budgetInfoMapper.qryBudgetInfoList(BudgetInfoQry.builder().year(projectTypeQry.getYear()).build());
+        //寰幆 budgetInfoPos 鍒ゆ柇鎵€鍦ㄩ儴闂╢unction_dept_json瀛楁 鏄惁鍦� codeList,鑻ュ湪鍒欎负 褰撳墠鐧诲綍浜哄彲鏌ョ湅鐨勯」鐩被鍨�
+        //褰撳墠鐧诲綍浜哄彲鏌ョ湅椤圭洰绫诲瀷闆嗗悎
+        ArrayList<Long> projectTypeList = new ArrayList<>();
+        for (String deptCode : codeList) {
+            if (budgetInfoPos != null && budgetInfoPos.size() > 0) {
+                for (BudgetInfoPo budgetPo : budgetInfoPos) {
+                    if (budgetPo.getFunctionDeptJson() != null && StringUtil.isNotEmpty(budgetPo.getFunctionDeptJson())) {
+                        JSONArray jsonArray = JSON.parseArray(budgetPo.getFunctionDeptJson());
+                        for (Object o : jsonArray) {
+                            JSONObject jsonObject = JSON.parseObject(o.toString());
+                            if (jsonObject.get("code").equals(deptCode)) {
+                                projectTypeList.add(budgetPo.getId());
+                            }
+                        }
+                    }
+                }
+            }
         }
-        List<ProjectPlanBookGuiKouOut> projectPlanBookGuiKouOuts = MapperUtils.INSTANCE.mapAsList(ProjectPlanBookGuiKouOut.class, projectPlanBookPos);
-        return projectPlanBookGuiKouOuts.stream().distinct().collect(Collectors.toList());
+        log.debug("鐢虫姤涔︾殑椤圭洰绫诲瀷闆嗗悎涓�:{},鐧诲綍浜洪儴闂ㄧ殑鍙敤椤圭洰绫诲瀷涓�:{}",projectPlanBookGuiKouOuts,projectTypeList);
+        return projectPlanBookGuiKouOuts.stream().distinct().filter(item -> projectTypeList.contains(item.getProjectTypeId())).collect(Collectors.toList());
     }
 
     /**
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/interfaces/controller/ProjectPlanController.java b/ServiceSite/src/main/java/com/seasky/projectplan/interfaces/controller/ProjectPlanController.java
index a9ac406d3e110fc05e4bb92d8e12932f9682f1bf..55c2b96b7c7cda49a231105b85b877777b44c1de 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/interfaces/controller/ProjectPlanController.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/interfaces/controller/ProjectPlanController.java
@@ -10,6 +10,8 @@ import com.seasky.projectplan.application.query.projectplan.ProjectPlanQueryServ
 import com.seasky.projectplan.dto.projectlibrary.ProjectLibraryOut;
 import com.seasky.projectplan.dto.projectlibrary.ProjectLibraryQry;
 import com.seasky.projectplan.dto.projectplan.*;
+import com.seasky.projectplan.dto.projectplan.projecttype.ProjectTypeOut;
+import com.seasky.projectplan.dto.projectplan.projecttype.ProjectTypeQry;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
@@ -45,10 +47,10 @@ public class ProjectPlanController extends BaseController implements IProjectPla
     @Value("${import.enable}")
     private Boolean enableImport;
 
-    @ApiOperation("鏌ヨ褰掑彛閮ㄩ棬锛堝姩鎬侊級")
+    @ApiOperation("鏍规嵁鐢虫姤闃舵鏌ヨ椤圭洰绫诲瀷")
     @Override
-    public Result<ProjectPlanBookGuiKouOut> queryGuiKouDepartment(@RequestBody ProjectInfoPlanQry projectInfoPlanQry) {
-        return ok(ResponseCode.SUCCESS,queryService.queryGuiKouDepartment(projectInfoPlanQry));
+    public Result<ProjectTypeOut> queryProjectTypeByPlanType(@RequestBody ProjectTypeQry projectInfoPlanQry) {
+        return ok(ResponseCode.SUCCESS,queryService.queryProjectTypeByPlanType(projectInfoPlanQry));
     }
 
     @ApiOperation("璇ュ鏍$敵鎶ヤ功鏄惁鏈夊鍏ュ姛鑳�")