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
            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
            dept_id
            FROM
            SYS_DEPT
            WHERE
            CONCAT( ',', #{deptIds}, ',' ) LIKE CONCAT( '%,', dept_id, ',%' )
            )
         
        
            AND CONCAT( ',', #{zyIds}, ',' ) LIKE CONCAT( '%,', teamgroup, ',%' )
         
     
    
        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 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
     
    
        ${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.user_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 CURRENT_STATE
        FROM zhgl_annual_plan a
        WHERE a.is_delete = 0
          and a.id = #{bizId}
     
    
        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
     
    
        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}