<?xml version="1.0" encoding="UTF-8"?>
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
<mapper namespace="com.zt.modules.workflow.dao.WfRunTaskDao">
|
<select id="getTaskUser" resultType="com.zt.core.sys.model.SysUser">
|
SELECT
|
b. id
|
,b.dept_id
|
,b.username
|
,b.real_name
|
,b.mobile
|
FROM
|
sys_user b
|
WHERE
|
is_delete = 0
|
<if test="roleId!=null and roleId!=''">
|
AND id IN(
|
SELECT
|
user_id
|
FROM
|
sys_role_user
|
WHERE is_delete = 0 and
|
role_id IN(
|
SELECT
|
id
|
FROM
|
sys_role
|
WHERE
|
CONCAT( ',', #{roleId}, ',' ) LIKE CONCAT( '%,', id, ',%' )
|
)
|
)
|
</if>
|
|
<if test="deptIds!=null and deptIds!=''">
|
AND dept_ID IN(
|
SELECT
|
id
|
FROM
|
sys_dept
|
WHERE
|
CONCAT( ',', #{deptIds}, ',' ) LIKE CONCAT( '%,', id, ',%' )
|
)
|
</if>
|
</select>
|
|
<select id="getAssignUser" resultType="com.zt.core.sys.model.SysUser">
|
SELECT b.id
|
, b.dept_id
|
, b.username
|
, b.real_name
|
, b.mobile
|
FROM sys_user b
|
WHERE is_delete = 0
|
and id in (
|
SELECT user_id
|
FROM sy_project_expert
|
WHERE biz_id = #{bizId}
|
and flow_Code = #{code}
|
and step_marker = #{stepMarker}
|
and is_delete = 0
|
)
|
</select>
|
|
<select id="getUserById" resultType="com.zt.core.sys.model.SysUser">
|
SELECT b.id
|
, b.dept_id
|
, b.username
|
, b.real_name
|
, b.mobile
|
FROM sys_user b
|
WHERE is_delete = 0
|
and id = #{userId}
|
limit 1
|
</select>
|
|
<select id="getSqlResult" parameterType="java.lang.String" resultType="com.zt.modules.workflow.dto.BizInfoDto">
|
${script}
|
</select>
|
<update id="exeSql" parameterType="java.lang.String">
|
${script}
|
</update>
|
|
<select id="getFlowFinish" resultType="com.zt.modules.workflow.model.WfRunTask">
|
SELECT id
|
FROM wf_run_task
|
WHERE is_delete = 0
|
AND (CONCAT('', flow_id) = #{wfDefIdCode} or flow_id in (select id from wf_def where code = #{wfDefIdCode}))
|
and biz_id = #{bizId}
|
AND status IN (100)
|
</select>
|
|
<select id="queryCurrentTaskStep" resultType="com.zt.modules.workflowconfig.model.WfDefStep">
|
SELECT *
|
FROM wf_def_step wds
|
WHERE is_delete = 0
|
and step_type = 0
|
AND id IN (
|
SELECT step_id
|
FROM wf_run_task
|
WHERE is_delete = 0
|
AND (CONCAT('', flow_id) = #{wfDefIdCode} or flow_id in (select id from wf_def where is_delete = 0 AND code = #{wfDefIdCode}))
|
and biz_id = #{bizId}
|
AND status IN (0, 1)
|
)
|
</select>
|
|
<select id="queryCurrentTaskStep100" resultType="com.zt.modules.workflowconfig.model.WfDefStep">
|
SELECT *
|
FROM wf_def_step wds
|
WHERE is_delete = 0
|
and step_type = 0
|
AND id IN (
|
SELECT step_id
|
FROM wf_run_task
|
WHERE is_delete = 0
|
AND (CONCAT('', flow_id) = #{wfDefIdCode} or flow_id in (select id from wf_def where is_delete = 0 AND code = #{wfDefIdCode}))
|
and biz_id = #{bizId}
|
AND status IN (0, 1,100)
|
)
|
</select>
|
|
<update id="deleteFlowTask">
|
update wf_run_task
|
set is_delete = 1
|
,update_date = CURRENT_TIMESTAMP
|
where is_delete = 0
|
<if test="wfIdCodes!=null and wfIdCodes!=''">
|
and flow_code = #{wfIdCodes}
|
</if>
|
<if test="bizId!=null and bizId!=''">
|
and biz_Id = #{bizId}
|
</if>;
|
update wf_run_instance
|
set is_delete = 1
|
,update_date = CURRENT_TIMESTAMP
|
where is_delete = 0
|
<if test="wfIdCodes!=null and wfIdCodes!=''">
|
and flow_code = #{wfIdCodes}
|
</if>
|
<if test="bizId!=null and bizId!=''">
|
and biz_Id = #{bizId}
|
</if>
|
</update>
|
|
<update id="setTaskStatus">
|
update wf_run_task
|
set status=CASE WHEN receive_id = #{userId} THEN #{status}
|
ELSE #{status}+1 end
|
,status2 = 0
|
,finish_time = NOW()
|
,finish_time2 = NOW()
|
,finish_id = #{userId}
|
,finish_name = #{realName}
|
,opinion = #{option}
|
,update_date = CURRENT_TIMESTAMP
|
where is_delete = 0
|
AND biz_id=#{bizId}
|
and step_id=#{stepId}
|
and status in (0,1)
|
<if test="taskGroup=='cj'">
|
and receive_id in (select user_id from sys_user where dept_ID in (select dept_ID from sys_user where user_id=#{userId}))
|
</if>
|
<if test="taskGroup=='zy'">
|
and receive_id in (select teamgroup from sys_user where user_id =#{userId})
|
</if>
|
<if test="taskGroup=='br'">
|
and receive_id = #{userId}
|
</if>
|
<if test="taskGroup=='js'">
|
and group_id2 in (select role_id from sys_role_user where user_id =#{userId} and is_delete=0)
|
</if>
|
</update>
|
|
<update id="setTaskPartFinish">
|
UPDATE
|
wf_run_task
|
SET status2 = ${status}
|
, update_date = CURRENT_TIMESTAMP
|
WHERE is_delete = 0
|
AND biz_id = #{bizId}
|
AND step_id = #{currentStepId}
|
AND status in (0,1)
|
AND status2 not in (1)
|
</update>
|
|
<update id="setTaskPartFinish2">
|
UPDATE
|
wf_run_task
|
SET status = ${status}
|
, update_date = CURRENT_TIMESTAMP
|
WHERE is_delete = 0
|
AND biz_id = #{bizId}
|
AND receive_id = #{receiveId}
|
AND status in (0,1)
|
</update>
|
|
<update id="setTaskPartFinish3">
|
UPDATE
|
wf_run_task a,
|
sys_user b
|
SET a.status = ${status}
|
, a.update_date = CURRENT_TIMESTAMP
|
WHERE a.is_delete = 0
|
AND a.biz_id = #{bizId}
|
AND a.receive_id = b.id and b.dept_id = #{receiveDeptId}
|
AND a.status in (0,1)
|
</update>
|
|
<update id="setTaskRefuse">
|
UPDATE
|
wf_run_task
|
SET status2 = ${status}
|
, update_date = CURRENT_TIMESTAMP
|
WHERE is_delete = 0
|
AND biz_id = #{bizId}
|
AND step_id IN (
|
SELECT id
|
FROM (
|
SELECT id
|
FROM wf_def_step
|
WHERE is_delete = 0
|
AND wf_def_id IN (
|
SELECT wf_def_id
|
FROM wf_def_step
|
WHERE id = #{currentStepId}
|
)
|
AND step_no > (
|
SELECT step_no
|
FROM wf_def_step
|
WHERE id = #{currentStepId}
|
)
|
) cc
|
)
|
</update>
|
|
<select id="getSingleFlowStatus" resultType="com.zt.modules.workflow.model.WfRunTask">
|
|
SELECT s.step_no,b.*,
|
(select group_concat(receive_name) from wf_run_task c WHERE c.group_id=b.group_id AND (b.status=1 OR c.status in(20)) limit 0,3) AS RECEIVE_NAME
|
FROM (
|
SELECT id,biz_id,biz_group_id,flow_code,step_id,step_marker,group_id,
|
CASE WHEN status IN (20,21,100) THEN 20
|
WHEN status IN (10,11) THEN 10
|
WHEN status IN (0,1) THEN 1
|
ELSE 0 end AS status
|
FROM (SELECT
|
*
|
FROM wf_run_task
|
WHERE is_delete =0
|
<if test="wfIdCodes!=null and wfIdCodes!=''">
|
and ( CONCAT(',',#{wfIdCodes},',') like Concat('%,',CONCAT('',flow_id ),',%')
|
or CONCAT(',',#{wfIdCodes},',') like Concat('%,',flow_code,',%') )
|
</if>
|
and biz_id = #{bizId}
|
AND status IN (0,1,20,21,100) /* 不显示状态10,11 */
|
AND (status2 IS NULL OR status2 != 1)
|
ORDER BY receive_time desc
|
) cc
|
group BY biz_id,
|
flow_code,
|
step_marker
|
) b ,WF_DEF_STEP s where b.step_id = s.id
|
order by STEP_NO
|
</select>
|
|
<select id="getFlowStatus" resultType="com.zt.modules.workflow.model.WfRunTask">
|
SELECT s.step_no,b.*,
|
(select group_concat(receive_name) from wf_run_task c WHERE c.group_id=b.group_id AND (b.status=1 OR c.status in(20)) limit 0,3) AS RECEIVE_NAME
|
FROM (
|
SELECT id,biz_id,biz_group_id,flow_code,step_id,step_marker,group_id,
|
CASE WHEN status IN (20,21,100) THEN 20
|
WHEN status IN (10,11) THEN 10
|
WHEN status IN (0,1) THEN 1
|
ELSE 0 end AS status
|
FROM (SELECT
|
a.*
|
FROM
|
wf_run_task a
|
WHERE IS_delete =0
|
and flow_code in (select code from wf_def where type = '1')
|
<if test="wfIdCodes!=null and wfIdCodes!=''">
|
and ( CONCAT(',',#{wfIdCodes},',') like Concat('%,',CONCAT('',flow_id ),',%')
|
or CONCAT(',',#{wfIdCodes},',') like Concat('%,',flow_code,',%') )
|
</if>
|
and biz_id = #{bizId}
|
AND status IN (0,1,20,21,100) /* 不显示状态10,11 */
|
ORDER BY receive_time desc
|
) cc
|
group BY biz_id,
|
flow_code,
|
step_marker
|
)b ,wf_def_step s where b.step_id = s.id
|
order by flow_code,STEP_NO
|
</select>
|
|
<select id="getFlowStatus2" resultType="com.zt.modules.workflow.model.WfRunTask">
|
SELECT s.step_no,
|
b.*,
|
(select group_concat(distinct receive_name)
|
from wf_run_task c
|
WHERE (b.status = 1 OR c.status in (20))
|
and group_id in (select group_id
|
from (
|
select group_id, biz_id, flow_code, step_marker
|
from (
|
SELECT group_id, biz_id, flow_code, step_marker
|
FROM wf_run_task
|
WHERE biz_group_id = #{bizGroupId}
|
ORDER BY receive_time desc
|
) cc
|
group BY biz_id,
|
flow_code,
|
step_marker
|
) dd)
|
and b.biz_group_id = c.biz_group_id
|
and b.flow_code = c.flow_code
|
and b.step_marker = c.step_marker
|
limit 0,1) AS RECEIVE_NAME
|
FROM (
|
SELECT a.*,
|
b.totalNum,
|
CASE
|
WHEN totalNum = 0 THEN 0
|
WHEN totalNum = finishNum THEN 20
|
ELSE 1 END status
|
FROM (
|
SELECT biz_group_id,
|
flow_code,
|
step_marker,
|
sum(CASE WHEN status IN (20, 21, 100) THEN 1 ELSE 0 end) AS finishNum
|
FROM (select *
|
from (SELECT *
|
FROM wf_run_task
|
WHERE is_delete = 0
|
and flow_code in (select code from wf_def where type = '2')
|
and status IN (0, 1, 20, 21, 100)
|
and biz_group_id = #{bizGroupId}
|
ORDER BY receive_time desc
|
) cc
|
group BY biz_group_id,
|
flow_code,
|
step_marker,
|
biz_id
|
) dd
|
GROUP BY biz_group_id, flow_code, step_marker
|
) a,
|
(
|
SELECT biz_group_id,
|
flow_code,
|
count(DISTINCT biz_group_id, flow_code, biz_id) AS totalNum
|
FROM wf_run_task a
|
WHERE is_delete = 0
|
and flow_code in (select code from wf_def where type = '2')
|
and biz_group_id = #{bizGroupId}
|
GROUP BY biz_group_id, flow_code
|
) b
|
WHERE a.biz_group_id = b.biz_group_id
|
AND a.flow_code = b.flow_code
|
) b,
|
wf_def_step s
|
where b.step_marker = s.step_marker
|
order by flow_code, STEP_NO
|
</select>
|
|
<select id="getFlowStatus3" resultType="com.zt.modules.workflow.model.WfRunTask">
|
SELECT c.flow_code,
|
CASE WHEN totalNum = 0 THEN 0
|
WHEN totalNum=finishNum THEN 2
|
ELSE 1 END status
|
FROM (
|
SELECT
|
biz_group_id,flow_code,count(DISTINCT biz_id) AS totalNum,
|
(SELECT count(1) FROM wf_run_task b WHERE b.biz_group_id=a.biz_group_id AND b.status=100) AS finishNum
|
FROM wf_run_task a
|
WHERE IS_delete =0
|
and flow_code in (select code from WF_DEF where type = '2')
|
<if test="wfIdCodes!=null and wfIdCodes!=''">
|
and ( CONCAT(',',#{wfIdCodes},',') like Concat('%,',CONCAT('',flow_id ),',%')
|
or CONCAT(',',#{wfIdCodes},',') like Concat('%,',flow_code,',%') )
|
</if>
|
and biz_group_id = #{biz_group_id}
|
GROUP BY biz_group_id,flow_code
|
) c
|
</select>
|
|
<select id="getPhaseFlowStatus" resultType="com.zt.modules.workflow.model.WfRunTask">
|
select code as FLOW_CODE,
|
case
|
when exists(select 1
|
from wf_run_instance b
|
where b.flow_id = a.id
|
and b.biz_group_id = #{bizId}
|
and b.status in (0, 1)) then 1
|
when exists(select 1
|
from wf_run_instance b
|
where b.flow_id = a.id
|
and b.biz_group_id = #{bizId}
|
and b.status in (20, 100)) then 20
|
else 0
|
end as status
|
from wf_def a
|
where a.phase_node = #{flowCode}
|
</select>
|
|
<select id="getFlowStepStatus" resultType="com.zt.modules.workflow.model.WfRunTask">
|
SELECT a.* FROM wf_run_task a,
|
(
|
SELECT a.id,
|
CASE WHEN finish_time IS NULL THEN cast('2500-1-1' AS DATE)
|
ELSE finish_time end finish_TIME
|
FROM wf_run_task a
|
WHERE is_delete =0
|
AND status IN (0,1,20,100)
|
<if test="wfIdCodes!=null and wfIdCodes!=''">
|
and ( CONCAT(',',#{wfIdCodes},',') like Concat('%,',CONCAT('',flow_id ),',%')
|
or CONCAT(',',#{wfIdCodes},',') like Concat('%,',flow_code,',%') )
|
</if>
|
and biz_id = #{bizId}
|
order by finish_TIME DESC
|
LIMIT 0,1
|
) b
|
WHERE a.id =b.id
|
</select>
|
|
<select id="isMyStep" resultType="java.lang.Integer">
|
SELECT count(1)
|
FROM wf_run_task
|
WHERE is_delete = 0
|
and biz_id = #{bizId}
|
and step_Marker = #{stepMarker}
|
and receive_id = #{userId}
|
AND status IN (0, 1)
|
</select>
|
|
<select id="isMyStepFinish" resultType="java.lang.Integer">
|
SELECT count(1)
|
FROM wf_run_task
|
WHERE is_delete = 0
|
and biz_id = #{bizId}
|
and step_marker = #{stepMarker}
|
and receive_id = #{userId}
|
AND status in (20, 21)
|
</select>
|
|
<select id="getFlowStepFinish" resultType="java.lang.Integer">
|
SELECT count(1)
|
FROM wf_run_task
|
WHERE is_delete = 0
|
and biz_id = #{bizId}
|
and step_marker = #{stepIdMark}
|
and (CONCAT('', flow_id) = #{wfIdCode} or flow_code = #{wfIdCode})
|
AND status IN (0, 1)
|
</select>
|
|
<select id="getFlowStepFinish2" resultType="java.lang.Integer">
|
SELECT count(1)
|
FROM wf_run_task
|
WHERE is_delete = 0
|
and biz_id = #{bizId}
|
and step_marker = #{stepIdMark}
|
and (CONCAT('', flow_id) = #{wfIdCode} or flow_code = #{wfIdCode})
|
AND status IN (20, 21, 100)
|
</select>
|
|
<select id="getStepCount" resultType="com.zt.modules.workflow.model.WfRunTask">
|
SELECT *
|
FROM (
|
SELECT a.step_marker, (CASE WHEN b.num IS NULL THEN 0 ELSE b.num end) status, a.step_no
|
FROM wf_def_step a /*liquan*/
|
LEFT JOIN (
|
SELECT step_marker, count(1) AS Num
|
FROM (select *
|
from (SELECT *
|
FROM wf_run_task
|
WHERE is_delete = 0
|
and status IN (0, 1, 100)
|
and biz_group_id = #{bizId}
|
and flow_code = #{wfIdCode}
|
ORDER BY receive_time desc
|
) d /*liquan*/
|
group BY biz_group_id,
|
flow_id,
|
flow_code,
|
step_marker,
|
biz_id
|
) cc
|
GROUP BY biz_group_id, flow_id, flow_code, step_marker
|
) b ON a.step_marker = b.step_marker
|
WHERE a.wf_def_id IN (SELECT id FROM wf_def WHERE code = #{wfIdCode})
|
UNION
|
SELECT 'total',
|
count(DISTINCT biz_group_id, flow_code, biz_id) AS status,
|
900
|
FROM wf_run_task a
|
WHERE is_delete = 0
|
and biz_group_id = #{bizId}
|
and flow_code = #{wfIdCode}
|
GROUP BY biz_group_id, flow_code
|
) c
|
ORDER BY STEP_NO
|
</select>
|
|
<select id="getBizTaskCount" resultType="java.lang.Integer">
|
SELECT count(1)
|
FROM wf_run_task
|
WHERE is_delete = 0
|
and biz_id = #{bizId}
|
and flow_code = #{wfIdCode}
|
</select>
|
|
<update id="setTaskRecall">
|
UPDATE wf_run_task
|
SET status = 0
|
, update_date = CURRENT_TIMESTAMP
|
WHERE is_delete = 0
|
AND id = #{taskId}
|
and (CONCAT('', flow_id) = #{wfIdCode} or flow_code = #{wfIdCode});
|
|
UPDATE wf_run_task
|
SET is_delete = 1
|
, update_date = CURRENT_TIMESTAMP
|
WHERE is_delete = 0
|
AND prev_id = #{taskId}
|
</update>
|
|
|
<select id="getRoleCount" resultType="java.lang.Integer">
|
SELECT count(1)
|
FROM sys_role_user a,
|
sys_role b
|
WHERE a.is_delete = 0
|
and b.is_delete = 1
|
and b.code = #{code}
|
and a.user_id = #{userId}
|
</select>
|
|
<select id="getConnectInformation" resultType="com.zt.modules.workflow.model.WfRunTask">
|
SELECT *
|
FROM `wf_run_task`
|
where step_marker in ('yxsc_bb', 'sgqd_bb', 'plan_tybx')
|
and status in (0, 1)
|
and receive_id in
|
(select user_id from sys_user where DEPT_ID = #{oldShipTeam})
|
and is_delete = 0
|
group by flow_code, step_marker, biz_id
|
</select>
|
|
<select id="getFlowTrack" resultType="com.zt.modules.workflow.model.WfRunTask">
|
select * from (
|
select step_name,receive_name,receive_time,finish_time
|
from wf_run_task
|
where flow_code=#{flowCode} and biz_id=#{bizId} and is_delete = 0 and status='20'
|
union
|
select step_name,GROUP_CONCAT(receive_name) as RECEIVE_NAME,receive_time,finish_time
|
from wf_run_task
|
where flow_code=#{flowCode} and biz_id=#{bizId} and is_delete = 0
|
and status in (0,1)
|
group by step_name,receive_time,finish_time
|
) b order by receive_time
|
</select>
|
|
<select id="isExistsStep" resultType="java.lang.Integer">
|
select count(1) from wf_run_task a,
|
wf_def_step b
|
where
|
a.biz_id = #{bizId} and a.status in (0,20)
|
and a.step_id = b.id and b.exec_one = 1
|
<if test="currentStepId != 0">
|
and a.step_id = #{currentStepId}
|
</if>
|
<if test="stepMarker != null">
|
and a.step_marker = #{stepMarker}
|
</if>
|
|
</select>
|
|
<select id="isExistsRunningStep" resultType="java.lang.Integer">
|
select count(1) from wf_run_task a,
|
wf_def_step b
|
where
|
a.biz_id = #{bizId} and a.status in (0,1)
|
and a.step_id = b.id and a.is_delete = 0 and b.is_delete = 0
|
<if test="currentStepId != 0">
|
and a.step_id = #{currentStepId}
|
</if>
|
<if test="stepMarker != null">
|
and a.step_marker = #{stepMarker}
|
</if>
|
</select>
|
|
<select id="getFlowStepName" resultType="java.lang.String">
|
SELECT
|
step_name
|
FROM
|
wf_run_task
|
WHERE
|
flow_code = #{wfIdCodes}
|
AND biz_id = #{bizId}
|
AND `status` = 0
|
LIMIT 0,1
|
</select>
|
<select id="getRunFlow" resultType="com.zt.common.entity.FlowInfo">
|
select * from (
|
select distinct(a.biz_id) biz_id, a.step_marker,b.step_no
|
from wf_run_task a
|
,wf_def_step b
|
where a.step_id = b.id and a.flow_code ='${flowCode}'
|
<if test="bizIds != null">
|
and a.biz_id in
|
<foreach item="item" collection="bizIds" open="(" separator="," close=")">
|
#{item}
|
</foreach>
|
</if>
|
order by STEP_NO desc
|
) c
|
group by biz_id
|
</select>
|
|
<update id="updateConnect">
|
update `wf_run_task`
|
set is_delete =1,update_date = CURRENT_TIMESTAMP
|
where step_marker in ('yxsc_bb', 'sgqd_bb', 'plan_tybx')
|
and status in (0, 1)
|
and receive_id in
|
(select user_id from sys_user where dept_id = #{oldShipTeam})
|
and is_delete = 0
|
</update>
|
|
<update id="setReStartStatus">
|
update `wf_run_task`
|
set status = 150,update_date = CURRENT_TIMESTAMP
|
where flow_code = #{wfIdCode}
|
and biz_id = #{bizId}
|
and is_delete = 0
|
</update>
|
|
<update id="deleteFlowStep">
|
delete from wf_run_task
|
where flow_code = #{wfIdCode}
|
and step_marker = #{stepIdMark}
|
and biz_id = #{bizId}
|
</update>
|
</mapper>
|