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
            sys_role_user
            WHERE is_delete = 0 and
            role_id IN(
            SELECT
            id
            FROM
            sys_role
            WHERE
            CONCAT( ',', #{roleId}, ',' ) LIKE CONCAT( '%,', id, ',%' )
            )
            )
         
        
            AND dept_ID IN(
            SELECT
            id
            FROM
            sys_dept
            WHERE
            CONCAT( ',', #{deptIds}, ',' ) LIKE CONCAT( '%,', id, ',%' )
            )
         
     
    
        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 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
     
    
        ${script}
     
    
        ${script}
     
    
        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 *
        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 *
        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)
        )
     
    
        update wf_run_task
        set is_delete = 1
        ,update_date = CURRENT_TIMESTAMP
        where is_delete = 0
        
            and flow_code = #{wfIdCodes}
         
        
            and biz_Id = #{bizId}
         ;
        update wf_run_instance
        set is_delete = 1
        ,update_date = CURRENT_TIMESTAMP
        where is_delete = 0
        
            and flow_code = #{wfIdCodes}
         
        
            and biz_Id = #{bizId}
         
     
    
        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)
        
            and receive_id in (select user_id from sys_user where dept_ID in (select dept_ID from sys_user where user_id=#{userId}))
         
        
        and receive_id in (select teamgroup from sys_user where user_id =#{userId})
         
        
            and receive_id = #{userId}
         
        
            and group_id2 in (select role_id from sys_role_user where user_id =#{userId} and is_delete=0)
         
     
    
        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
                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
            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
            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
        )
     
    
        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
        
            and ( CONCAT(',',#{wfIdCodes},',') like Concat('%,',CONCAT('',flow_id ),',%')
            or CONCAT(',',#{wfIdCodes},',') like Concat('%,',flow_code,',%') )
         
        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 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')
        
            and ( CONCAT(',',#{wfIdCodes},',') like Concat('%,',CONCAT('',flow_id ),',%')
            or CONCAT(',',#{wfIdCodes},',') like Concat('%,',flow_code,',%') )
         
        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 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 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')
        
            and ( CONCAT(',',#{wfIdCodes},',') like Concat('%,',CONCAT('',flow_id ),',%')
            or CONCAT(',',#{wfIdCodes},',') like Concat('%,',flow_code,',%') )
         
        and biz_group_id = #{biz_group_id}
        GROUP BY biz_group_id,flow_code
        ) c
     
    
        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 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)
            
                and ( CONCAT(',',#{wfIdCodes},',') like Concat('%,',CONCAT('',flow_id ),',%')
                or CONCAT(',',#{wfIdCodes},',') like Concat('%,',flow_code,',%') )
             
            and biz_id = #{bizId}
            order by finish_TIME DESC
            LIMIT 0,1
        ) b
        WHERE a.id =b.id
     
    
        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 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 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 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 *
        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 count(1)
        FROM wf_run_task
        WHERE is_delete = 0
          and biz_id = #{bizId}
          and flow_code = #{wfIdCode}
     
    
        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}
     
    
        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 *
        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 * 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 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
        
            and a.step_id = #{currentStepId}
         
        
            and a.step_marker = #{stepMarker}
         
     
    
        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
        
            and a.step_id = #{currentStepId}
         
        
            and a.step_marker = #{stepMarker}
         
     
    
        SELECT
            step_name
        FROM
            wf_run_task
        WHERE
            flow_code = #{wfIdCodes}
            AND biz_id = #{bizId}
            AND `status` = 0
            LIMIT 0,1
     
    
        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}'
                            
                                and a.biz_id in
                                
                                    #{item}
                                 
                             
                          order by STEP_NO desc
                      ) c
        group by biz_id
     
    
        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 `wf_run_task`
        set status = 150,update_date = CURRENT_TIMESTAMP
        where flow_code = #{wfIdCode}
          and biz_id = #{bizId}
          and is_delete = 0
     
    
        delete from wf_run_task
        where flow_code = #{wfIdCode}
          and step_marker = #{stepIdMark}
          and biz_id = #{bizId}