<?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.user_id as id 
 | 
        ,b.dept_id 
 | 
        ,b.user_name as username 
 | 
        ,b.nick_name as real_name 
 | 
        ,b.phonenumber as MOBILE 
 | 
        FROM 
 | 
        SYS_USER b 
 | 
        WHERE 
 | 
        del_flag = 0 
 | 
        <if test="roleId!=null and roleId!=''"> 
 | 
            AND USER_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 
 | 
            dept_id 
 | 
            FROM 
 | 
            SYS_DEPT 
 | 
            WHERE 
 | 
            CONCAT( ',', #{deptIds}, ',' ) LIKE CONCAT( '%,', dept_id, ',%' ) 
 | 
            ) 
 | 
        </if> 
 | 
  
 | 
        <if test="zyIds!=null and zyIds!=''"> 
 | 
            AND CONCAT( ',', #{zyIds}, ',' ) LIKE CONCAT( '%,', teamgroup, ',%' ) 
 | 
        </if> 
 | 
    </select> 
 | 
  
 | 
    <select id="getAssignUser" resultType="com.zt.core.sys.model.SysUser"> 
 | 
        SELECT b.user_id     as id 
 | 
             , b.dept_id 
 | 
             , b.user_name   as username 
 | 
             , b.nick_name   as real_name 
 | 
             , b.phonenumber as MOBILE 
 | 
        FROM SYS_USER b 
 | 
        WHERE del_flag = 0 
 | 
          and user_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.user_id     as id 
 | 
             , b.dept_id 
 | 
             , b.user_name   as username 
 | 
             , b.nick_name   as real_name 
 | 
             , b.phonenumber as MOBILE 
 | 
        FROM SYS_USER b 
 | 
        WHERE del_flag = 0 
 | 
          and user_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.user_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="getPlanStatus" resultType="java.lang.Integer"> 
 | 
        SELECT CURRENT_STATE 
 | 
        FROM zhgl_annual_plan a 
 | 
        WHERE a.is_delete = 0 
 | 
          and a.id = #{bizId} 
 | 
    </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> 
 | 
  
 | 
    <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> 
 |