Commit db4d7cd1 by 王志超

feat: 变更行动项工单列表

parent fd8f66cf
......@@ -388,6 +388,7 @@ public class ChangeFlowBiz {
.approver(approverJson)
.changeExecUserEmail(execUserEmail)
.changeExecDepartment(execDepartment)
.changeCommander(changeRecord.getChangeCommander())
.createTime(DateUtils.getCurrentTime())
.updateTime(DateUtils.getCurrentTime())
.build();
......
......@@ -355,9 +355,17 @@ public class ChangeSubFlowBiz {
public ChangeSubFlowListVO querySubFlowList(Integer page, Integer pageSize, ChangeSubFlowListQueryReq queryReq) {
log.info("[querySubFlowList] page:{}, pageSize:{}, queryReq:{}", page, pageSize, JSON.toJSONString(queryReq));
// 根据主单条件(flowId, itemId, supplier, onlyMyFollowed)查询主单,获取 changeRecordIds
String currentUser = RequestLocalBean.getUid();
// 如果 onlyMyFollowed=true,设置 currentUser,用于在子单查询时过滤
// 子单查询条件:change_exec_user_email = 当前用户 OR approver 包含当前用户 OR change_commander = 当前用户
if (queryReq.getOnlyMyFollowed() && StringUtils.isNotBlank(currentUser)) {
queryReq.setCurrentUser(currentUser);
}
// 根据主单条件(flowId, itemId, supplier)查询主单,获取 changeRecordIds
if (queryReq.getFlowId() != null || StringUtils.isNotBlank(queryReq.getItemId())
|| StringUtils.isNotBlank(queryReq.getSupplier()) || queryReq.getOnlyMyFollowed()) {
|| StringUtils.isNotBlank(queryReq.getSupplier())) {
List<Long> changeRecordIds = filterFlowRecordIds(queryReq);
if (CollectionUtils.isEmpty(changeRecordIds)) {
// 如果主单查询结果为空,直接返回
......@@ -370,11 +378,6 @@ public class ChangeSubFlowBiz {
queryReq.setChangeRecordIds(changeRecordIds);
}
// 清空主单相关的查询条件,因为已经通过 changeRecordIds 过滤了
// changeExecUser 和 changeExecDepartment 直接在子单表中查询,不需要额外处理
queryReq.setOnlyMyFollowed(null);
queryReq.setCurrentUser(null);
// 进行分页查询子单
PageHelper.startPage(page, pageSize);
List<ChangeSubFlowRecord> subFlowRecords = changeSubFlowRecordMapper.selectByCondition(queryReq);
......@@ -493,20 +496,10 @@ public class ChangeSubFlowBiz {
* @return 主单记录ID列表
*/
private List<Long> filterFlowRecordIds(ChangeSubFlowListQueryReq queryReq) {
// 构建主单查询条件
ChangeFlowListQueryReq mainQueryReq = new ChangeFlowListQueryReq();
mainQueryReq.setFlowId(queryReq.getFlowId());
mainQueryReq.setItemId(queryReq.getItemId());
mainQueryReq.setSupplier(queryReq.getSupplier());
mainQueryReq.setOnlyMyFollowed(queryReq.getOnlyMyFollowed());
String currentUser = RequestLocalBean.getUid();
// 数据可见范围:变更负责人=当前用户的变更工单所关联的全部变更行动工单
if (queryReq.getOnlyMyFollowed()) {
if (StringUtils.isNotBlank(currentUser)) {
mainQueryReq.setChangeCommander(currentUser);
}
}
// 查询主单(不分页,只获取ID)
List<ChangeRecord> changeRecords = changeRecordMapper.selectByCondition(mainQueryReq);
......
......@@ -74,6 +74,11 @@ public class ChangeSubFlowRecord {
private String changeExecDepartment;
/**
* 变更负责人(用于查询和展示,新建时从主单获取)
*/
private String changeCommander;
/**
* 创建时间
*/
private Long createTime;
......
......@@ -10,12 +10,13 @@
<result column="approver" jdbcType="VARCHAR" property="approver" />
<result column="change_exec_user_email" jdbcType="VARCHAR" property="changeExecUserEmail" />
<result column="change_exec_department" jdbcType="VARCHAR" property="changeExecDepartment" />
<result column="change_commander" jdbcType="VARCHAR" property="changeCommander" />
<result column="create_time" jdbcType="BIGINT" property="createTime" />
<result column="update_time" jdbcType="BIGINT" property="updateTime" />
</resultMap>
<sql id="Base_Column_List">
id, change_record_id, sub_flow_id, sub_flow_node, status, approver, change_exec_user_email, change_exec_department, create_time, update_time
id, change_record_id, sub_flow_id, sub_flow_node, status, approver, change_exec_user_email, change_exec_department, change_commander, create_time, update_time
</sql>
<select id="selectByCondition" resultMap="BaseResultMap" parameterType="com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeSubFlowListQueryReq">
......@@ -46,15 +47,15 @@
#{item}
</foreach>
</if>
<if test="currentUser != null and currentUser != ''">
and (change_exec_user_email LIKE CONCAT('%"', #{currentUser}, '"%') or approver LIKE CONCAT('%"', #{currentUser}, '"%')
</if>
<if test="changeExecUser != null and changeExecUser != ''">
and change_exec_user_email LIKE CONCAT('%', #{changeExecUser}, '%')
</if>
<if test="changeExecDepartment != null and changeExecDepartment != ''">
and change_exec_department LIKE CONCAT('%', #{changeExecDepartment}, '%')
</if>
<if test="currentUser != null and currentUser != ''">
and (change_exec_user_email = #{currentUser} or approver LIKE CONCAT('%"', #{currentUser}, '"%') or change_commander = #{currentUser})
</if>
</where>
order by create_time desc
</select>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment