|
|
@@ -12,24 +12,24 @@
|
|
|
<select id="getMyWorkPage"
|
|
|
resultType="cn.iocoder.yudao.module.iscs.controller.admin.workdesign.workflowwork.vo.MyWorkRespVO">
|
|
|
SELECT
|
|
|
- work_node.work_id,
|
|
|
- ww.name,
|
|
|
- ww.order_no,
|
|
|
- ww.urgency_level,
|
|
|
- ww.completion_time,
|
|
|
- ww.cancellation_time,
|
|
|
- ww.cancellation_reason,
|
|
|
- ww.initiator_name,
|
|
|
- su.nickname as worker_user_name,
|
|
|
- work_node.id as node_id,
|
|
|
- work_node.start_time as work_time,
|
|
|
- work_node.id as current_node_id,
|
|
|
- work_node.node_name as current_node_name,
|
|
|
- work_node.approval_status
|
|
|
+ work_node.work_id,
|
|
|
+ ww.name,
|
|
|
+ ww.order_no,
|
|
|
+ ww.urgency_level,
|
|
|
+ ww.completion_time,
|
|
|
+ ww.cancellation_time,
|
|
|
+ ww.cancellation_reason,
|
|
|
+ ww.initiator_name,
|
|
|
+ su.nickname as worker_user_name,
|
|
|
+ work_node.id as node_id,
|
|
|
+ work_node.start_time as work_time,
|
|
|
+ work_node.id as current_node_id,
|
|
|
+ work_node.node_name as current_node_name,
|
|
|
+ work_node.approval_status
|
|
|
FROM
|
|
|
- isc_workflow_work_node work_node
|
|
|
- left join isc_workflow_work ww on ww.id = work_node.work_id
|
|
|
- left join system_users su on su.id = work_node.worker_user_id
|
|
|
+ isc_workflow_work_node work_node
|
|
|
+ left join isc_workflow_work ww on ww.id = work_node.work_id
|
|
|
+ left join system_users su on su.id = work_node.worker_user_id
|
|
|
<where>
|
|
|
work_node.deleted = b'0'
|
|
|
AND work_node.approval_status != 'pending'
|
|
|
@@ -38,14 +38,29 @@
|
|
|
AND (
|
|
|
-- 条件1:节点自身负责人ID匹配
|
|
|
work_node.worker_user_id = #{vo.loginUserId}
|
|
|
- -- 条件2:关联表中上锁人ID匹配
|
|
|
- OR work_node.lock_person = #{vo.loginUserId}
|
|
|
- -- 条件3:关联表中公锁人ID匹配
|
|
|
- OR JSON_CONTAINS(CAST(work_node.colock_persons AS JSON), CAST(#{vo.loginUserId} AS JSON), '$') )
|
|
|
+
|
|
|
+ -- 条件2:上锁人ID匹配(根据type添加不同进度限制)
|
|
|
+ OR (
|
|
|
+ work_node.lock_person = #{vo.loginUserId}
|
|
|
+ AND (
|
|
|
+ -- isolation类型:进度大于等于3
|
|
|
+ (work_node.type = 'isolation' AND work_node.node_progress <= 2)
|
|
|
+ -- releaseIsolation类型:进度小于等于2
|
|
|
+ OR (work_node.type = 'releaseIsolation' AND work_node.node_progress >= 2) ) )
|
|
|
+
|
|
|
+ -- 条件3:公锁人ID匹配(仅isolation类型有此条件)
|
|
|
+ OR (
|
|
|
+ JSON_CONTAINS(CAST(work_node.colock_persons AS JSON), CAST(#{vo.loginUserId} AS JSON), '$')
|
|
|
+ AND (
|
|
|
+ -- isolation类型:进度大于等于3
|
|
|
+ (work_node.type = 'isolation' AND work_node.node_progress >= 3)
|
|
|
+ -- releaseIsolation类型:进度小于等于1
|
|
|
+ OR (work_node.type = 'releaseIsolation' AND work_node.node_progress <= 1) ) )
|
|
|
+ )
|
|
|
<if test="vo.key != null and vo.key.trim != ''">
|
|
|
AND (ww.name like concat('%',#{vo.key},'%')
|
|
|
- OR ww.order_no like concat('%',#{vo.key},'%')
|
|
|
- OR ww.initiator_name like concat('%',#{vo.key},'%'))
|
|
|
+ OR ww.order_no like concat('%',#{vo.key},'%')
|
|
|
+ OR ww.initiator_name like concat('%',#{vo.key},'%'))
|
|
|
</if>
|
|
|
<if test="vo.approvalStatus != null and vo.approvalStatus.trim != ''">
|
|
|
AND work_node.approval_status = #{vo.approvalStatus}
|