feat(oa): 添加项目置顶功能和任务关联项目进度字段

- 在项目实体类 SysOaProject 及其相关 BO、VO 类中增加 isTop 字段,用于标识项目是否置顶- 更新 SysOaProjectMapper.xml 查询语句,将 is_top 字段纳入查询结果
- 修改 SysOaProjectServiceImpl 中的查询逻辑,优先展示置顶项目,并按创建时间排序
- 在任务实体类 SysOaTask 及其相关 BO、VO 类中新增 trackId 字段,用于关联项目进度- 更新 SysOaTaskMapper.xml 查询语句,联查 oa_project_schedule_step 表获取节点信息
- 优化 SQL 查询中的字段对齐格式,提升可读性
This commit is contained in:
2025-10-22 14:19:55 +08:00
parent b132d297c0
commit fe7ac6a523
9 changed files with 38 additions and 8 deletions

View File

@@ -165,4 +165,6 @@ public class SysOaProject extends BaseEntity {
@TableField(updateStrategy = FieldStrategy.IGNORED) @TableField(updateStrategy = FieldStrategy.IGNORED)
private Long customerId; private Long customerId;
//是否置顶
private Integer isTop;
} }

View File

@@ -145,4 +145,7 @@ public class SysOaTask extends BaseEntity {
*/ */
private String files; private String files;
//关联项目进度id
private Long trackId;
} }

View File

@@ -201,5 +201,7 @@ public class SysOaProjectBo extends BaseEntity {
private Long customerId; private Long customerId;
//客户名称 //客户名称
private String customerName; private String customerName;
//是否置顶
private Integer isTop;
} }

View File

@@ -188,4 +188,7 @@ public class SysOaTaskBo extends BaseEntity {
private String projectCode; private String projectCode;
//部门id //部门id
private Long deptId; private Long deptId;
//关联项目进度id
private Long trackId;
} }

View File

@@ -267,4 +267,7 @@ public class SysOaProjectVo {
private Long customerId; private Long customerId;
//客户名称 //客户名称
private String customerName; private String customerName;
//是否置顶
private Integer isTop;
} }

View File

@@ -1,6 +1,7 @@
package com.ruoyi.oa.domain.vo; package com.ruoyi.oa.domain.vo;
import java.util.Date; import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
@@ -108,7 +109,7 @@ public class SysOaTaskVo {
/** /**
* 涉及工人列表 * 涉及工人列表
* */ */
private List<SysUser> workerList; private List<SysUser> workerList;
/** /**
@@ -216,4 +217,12 @@ public class SysOaTaskVo {
private String projectCode; private String projectCode;
//部门名称 //部门名称
private String deptName; private String deptName;
//关联项目进度id
private Long trackId;
//联查的节点信息
private String tabNode;
private String firstLevelNode;
private String secondLevelNode;
} }

View File

@@ -189,9 +189,10 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
lqw.eq(bo.getSigningCompany()!= null, SysOaProject::getSigningCompany, bo.getSigningCompany()); lqw.eq(bo.getSigningCompany()!= null, SysOaProject::getSigningCompany, bo.getSigningCompany());
lqw.between(params.get("beginCreateTime") != null && params.get("endCreateTime") != null, lqw.between(params.get("beginCreateTime") != null && params.get("endCreateTime") != null,
SysOaProject::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime")); SysOaProject::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime"));
lqw.orderByDesc(SysOaProject::getCreateTime);
//客户id作为筛选条件 //客户id作为筛选条件
lqw.eq(bo.getCustomerId() != null, SysOaProject::getCustomerId, bo.getCustomerId()); lqw.eq(bo.getCustomerId() != null, SysOaProject::getCustomerId, bo.getCustomerId());
lqw.orderByDesc(SysOaProject::getIsTop) // 置顶项目优先
.orderByDesc(SysOaProject::getCreateTime); // 同状态下按创建时间倒序(多个置顶项目按创建时间排序)
return lqw; return lqw;
} }

View File

@@ -308,7 +308,8 @@
p.original_finish_time, p.original_finish_time,
TIMESTAMPDIFF(DAY, NOW(), p.postpone_time) AS remainTime, TIMESTAMPDIFF(DAY, NOW(), p.postpone_time) AS remainTime,
p.customer_id AS customerId, p.customer_id AS customerId,
c.name AS customerName c.name AS customerName,
p.is_top AS isTop
FROM sys_oa_project p FROM sys_oa_project p
LEFT JOIN oa_customer c ON p.customer_id = c.customer_id LEFT JOIN oa_customer c ON p.customer_id = c.customer_id
${ew.getCustomSqlSegment} ${ew.getCustomSqlSegment}
@@ -551,7 +552,8 @@
color, color,
trade_type, trade_type,
sop.project_code, sop.project_code,
pre_pay pre_pay,
is_top
FROM sys_oa_project sop FROM sys_oa_project sop
INNER JOIN sys_oa_warehouse_master sown INNER JOIN sys_oa_warehouse_master sown
ON sown.project_id = sop.project_id ON sown.project_id = sop.project_id

View File

@@ -77,12 +77,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
sot.update_time, sot.update_time,
sot.del_flag, sot.del_flag,
sot.own_rank, sot.own_rank,
sot.track_id,
stepAgg.tab_node AS tabNode,
stepAgg.first_level_node AS firstLevelNode,
stepAgg.second_level_node AS secondLevelNode,
sop.project_name, sop.project_name,
sop.project_num, sop.project_num,
sop.project_code, sop.project_code,
su1.nick_name AS createUserNickName, su1.nick_name AS createUserNickName,
su2.nick_name AS workerNickName, su2.nick_name AS workerNickName,
sd.dept_name AS deptName, sd.dept_name AS deptName,
IF( IF(
sot.completed_time IS NULL, sot.completed_time IS NULL,
IF( IF(
@@ -93,7 +97,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
WHERE a.task_id = sot.task_id WHERE a.task_id = sot.task_id
AND a.completed_time IS NULL AND a.completed_time IS NULL
LIMIT 1 LIMIT 1
) IS NOT NULL, ) IS NOT NULL,
-- 如果子查询有值,就用它来算超期天数 -- 如果子查询有值,就用它来算超期天数
DATEDIFF( DATEDIFF(
NOW(), NOW(),
@@ -115,6 +119,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
LEFT JOIN sys_user su2 ON su2.user_id = sot.worker_id LEFT JOIN sys_user su2 ON su2.user_id = sot.worker_id
LEFT JOIN sys_oa_project sop ON sop.project_id = sot.project_id LEFT JOIN sys_oa_project sop ON sop.project_id = sot.project_id
LEFT JOIN sys_dept sd ON sd.dept_id = su2.dept_id LEFT JOIN sys_dept sd ON sd.dept_id = su2.dept_id
LEFT JOIN oa_project_schedule_step stepAgg ON stepAgg.track_id = sot.track_id
${ew.getCustomSqlSegment} ${ew.getCustomSqlSegment}
</select> </select>