Просмотр исходного кода

fix: 修复项目管理牵头部门/协作部门数据及展示问题

- PdProject 新增 deptName、coopDeptName 瞬态字段用于列表展示
- PdProjectMapper.xml 查询 JOIN sys_dept 返回部门名称,子查询聚合协作部门名称
- PdProjectController 注入 ISysDeptService,deptTree 接口返回真实部门树数据

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
shenzx 1 месяц назад
Родитель
Сommit
d8d3b64660

+ 7 - 1
ruoyi-service/src/main/java/com/ruoyi/service/project/controller/PdProjectController.java

@@ -27,6 +27,9 @@ import com.ruoyi.service.project.domain.PdProject;
 import com.ruoyi.service.project.domain.PdProjectCollaboration;
 import com.ruoyi.service.project.mapper.PdProjectCollaborationMapper;
 
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.system.service.ISysDeptService;
+
 /**
  * 项目管理
  *
@@ -42,6 +45,9 @@ public class PdProjectController extends BaseController
     @Autowired
     private PdProjectCollaborationMapper collaborationMapper;
 
+    @Autowired
+    private ISysDeptService deptService;
+
     /**
      * 获取项目列表
      */
@@ -103,7 +109,7 @@ public class PdProjectController extends BaseController
     @GetMapping("/deptTree")
     public AjaxResult deptTree()
     {
-        return success();
+        return success(deptService.selectDeptTreeList(new SysDept()));
     }
 
     /**

+ 14 - 0
ruoyi-service/src/main/java/com/ruoyi/service/project/domain/PdProject.java

@@ -71,6 +71,14 @@ public class PdProject extends BaseEntity
 
     private String delFlag;
 
+    /** 牵头部门名称 */
+    @TableField(exist = false)
+    private String deptName;
+
+    /** 协作部门名称(逗号分隔) */
+    @TableField(exist = false)
+    private String coopDeptName;
+
     /** 协作部门ID列表 */
     @TableField(exist = false)
     private Long[] collabDeptIds;
@@ -130,6 +138,12 @@ public class PdProject extends BaseEntity
     public String getDelFlag() { return delFlag; }
     public void setDelFlag(String delFlag) { this.delFlag = delFlag; }
 
+    public String getDeptName() { return deptName; }
+    public void setDeptName(String deptName) { this.deptName = deptName; }
+
+    public String getCoopDeptName() { return coopDeptName; }
+    public void setCoopDeptName(String coopDeptName) { this.coopDeptName = coopDeptName; }
+
     public Long[] getCollabDeptIds() { return collabDeptIds; }
     public void setCollabDeptIds(Long[] collabDeptIds) { this.collabDeptIds = collabDeptIds; }
 

+ 15 - 1
ruoyi-service/src/main/resources/mapper/project/PdProjectMapper.xml

@@ -27,6 +27,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="createTime"      column="create_time"      />
         <result property="updateBy"        column="update_by"        />
         <result property="updateTime"      column="update_time"      />
+        <result property="deptName"        column="dept_name"        />
+        <result property="coopDeptName"    column="coop_dept_name"   />
     </resultMap>
 
     <sql id="selectProjectVo">
@@ -34,8 +36,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                p.estimated_output, p.external_cost, p.actual_output, p.total_output,
                p.project_status, p.risk_level, p.success_rate, p.lead_dept_id,
                p.start_date, p.end_date, p.is_reviewed, p.review_status,
-               p.del_flag, p.remark, p.create_by, p.create_time, p.update_by, p.update_time
+               p.del_flag, p.remark, p.create_by, p.create_time, p.update_by, p.update_time,
+               d.dept_name,
+               (select string_agg(cd.dept_name, ',')
+                from pd.pd_project_collaboration pc
+                left join ry.sys_dept cd on pc.dept_id = cd.dept_id
+                where pc.project_id = p.project_id) as coop_dept_name
         from pd.pd_project p
+        left join ry.sys_dept d on p.lead_dept_id = d.dept_id
     </sql>
 
     <select id="selectProjectList" parameterType="PdProject" resultMap="PdProjectResult">
@@ -71,6 +79,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <include refid="selectProjectVo"/>
         left join pd.pd_project_collaboration c on p.project_id = c.project_id
         where p.del_flag = '0' and (p.lead_dept_id = #{deptId} or c.dept_id = #{deptId})
+        group by p.project_id, p.project_name, p.project_type, p.contract_amount,
+                 p.estimated_output, p.external_cost, p.actual_output, p.total_output,
+                 p.project_status, p.risk_level, p.success_rate, p.lead_dept_id,
+                 p.start_date, p.end_date, p.is_reviewed, p.review_status,
+                 p.del_flag, p.remark, p.create_by, p.create_time, p.update_by, p.update_time,
+                 d.dept_name
         order by p.create_time desc
     </select>