<?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.workflowconfig.dao.WfDefStepDao"> 
 | 
  
 | 
    <select id="queryStepsList" resultType="com.zt.modules.workflowconfig.model.WfDefStep"> 
 | 
        SELECT 
 | 
            wds.*, 
 | 
            s1.name as stepRouterName, 
 | 
            s2.name as stepReadRouterName, 
 | 
            case when task_Group='cj' then '厂家' 
 | 
                    when task_Group='zy' then '专业' 
 | 
                    else '' end as taskGroupName 
 | 
        FROM 
 | 
            WF_DEF_STEP wds 
 | 
            LEFT JOIN WF_DEF a ON a.id = WF_DEF_ID 
 | 
            left join SYS_MENU s1 on s1.id = wds.STEP_ROUTER_ID 
 | 
            left join SYS_MENU s2 on s2.id = wds.STEP_READ_ROUTER_ID 
 | 
        <where> 
 | 
            <if test="whereSql!=null"> 
 | 
                ${whereSql} 
 | 
            </if> 
 | 
            and a.id = #{id} 
 | 
            and wds.is_delete = 0 
 | 
        </where> 
 | 
        order by wds.STEP_NO 
 | 
    </select> 
 | 
  
 | 
    <select id="workflowSelect" resultType="com.zt.modules.workflowconfig.model.WfDef"> 
 | 
        SELECT 
 | 
            id, 
 | 
            NAME 
 | 
        FROM 
 | 
            WF_DEF 
 | 
        WHERE 
 | 
           status = 1 and is_delete = 0 
 | 
        order by id 
 | 
    </select> 
 | 
  
 | 
    <select id="getUserByWorkflowSteps" resultType="com.zt.modules.workflowconfig.model.WfDefStep"> 
 | 
        SELECT 
 | 
         a.id as stepId, 
 | 
         b.user_id as userId, 
 | 
         b.user_name as userName, 
 | 
         b.nick_name as realName, 
 | 
         c.dept_name AS deptName, 
 | 
         d.dept_name AS companyName 
 | 
        FROM 
 | 
         WF_DEF_STEP a 
 | 
         LEFT JOIN SYS_USER b ON instr(a.APPROVER_IDS,b.user_id) > 0 
 | 
         LEFT JOIN SYS_DEPT c ON b.dept_id = c.dept_id 
 | 
         LEFT JOIN SYS_DEPT d ON b.COMPANY_ID = d.dept_id 
 | 
        WHERE 
 | 
         a.is_delete = 0 
 | 
         AND a.id = #{stepsId} 
 | 
    </select> 
 | 
  
 | 
    <select id="getUserList" resultType="com.zt.modules.workflowconfig.model.WfDefStep"> 
 | 
        SELECT 
 | 
        a.user_id AS userId, 
 | 
        a.user_name AS userName, 
 | 
        a.nick_name AS realName, 
 | 
        c.dept_name AS deptName, 
 | 
        d.dept_name AS companyName 
 | 
        FROM 
 | 
        ( 
 | 
        SELECT 
 | 
        a.* 
 | 
        FROM 
 | 
        SYS_USER a, 
 | 
        WF_DEF_STEP b 
 | 
        WHERE 
 | 
        ( 
 | 
        b.APPROVER_IDS IS NULL 
 | 
        or CONCAT( ',', b.APPROVER_IDS, ',' ) NOT LIKE CONCAT( '%,', a.user_id, ',%' ) 
 | 
        ) 
 | 
        <if test="whereSql!=null"> 
 | 
           and ${whereSql} 
 | 
        </if> 
 | 
        <if test="userName != '' and userName != null"> 
 | 
            and a.user_name like concat('%',#{userName},'%') 
 | 
        </if> 
 | 
        AND a.del_flag = 0 
 | 
        ORDER BY  a.user_name 
 | 
        ) a 
 | 
        LEFT JOIN SYS_DEPT c ON a.dept_id = c.dept_id 
 | 
    </select> 
 | 
  
 | 
    <update id="addWorkflowStepsUser"> 
 | 
        update WF_DEF_STEP set APPROVER_IDS = #{userId},UPDATE_DATE = CURRENT_TIMESTAMP where id = #{stepId} 
 | 
    </update> 
 | 
  
 | 
    <update id="deleteWorkflowStepsUser"> 
 | 
        update WF_DEF_STEP set APPROVER_IDS = #{userId},UPDATE_DATE = CURRENT_TIMESTAMP where id = #{stepId} 
 | 
    </update> 
 | 
  
 | 
    <update id="delete"> 
 | 
        update WF_DEF_STEP set is_delete = 1,UPDATE_DATE = CURRENT_TIMESTAMP where id = #{id} 
 | 
    </update> 
 | 
  
 | 
    <select id="getRoleByWorkflowSteps" resultType="com.zt.modules.workflowconfig.model.WfDefStep"> 
 | 
        SELECT 
 | 
         a.id as stepId, 
 | 
         b.id as roleId, 
 | 
         b.name as roleName, 
 | 
         d.dept_name AS companyName 
 | 
        FROM 
 | 
         WF_DEF_STEP a 
 | 
         LEFT JOIN SYS_ROLE b ON instr(a.APPROVER_ROLE_IDS,b.id) > 0 
 | 
         LEFT JOIN SYS_DEPT d ON b.COMPANY_ID = d.dept_id 
 | 
        WHERE 
 | 
         a.is_delete = 0 
 | 
         AND a.id = #{stepsId} 
 | 
    </select> 
 | 
  
 | 
    <select id="getRoleList" resultType="com.zt.modules.workflowconfig.model.WfDefStep"> 
 | 
        SELECT 
 | 
        a.id AS roleId, 
 | 
        a.name AS roleName, 
 | 
        d.dept_name AS companyName 
 | 
        FROM 
 | 
        ( 
 | 
        SELECT 
 | 
        a.* 
 | 
        FROM 
 | 
        SYS_ROLE a, 
 | 
        WF_DEF_STEP b 
 | 
        WHERE 
 | 
        ( 
 | 
        b.APPROVER_ROLE_IDS IS NULL 
 | 
        or CONCAT( ',', b.APPROVER_ROLE_IDS, ',' ) NOT LIKE CONCAT( '%,', a.id, ',%' ) 
 | 
        ) 
 | 
        <if test="whereSql!=null"> 
 | 
            and ${whereSql} 
 | 
        </if> 
 | 
        <if test="roleName != '' and roleName != null"> 
 | 
            and a.name like concat('%',#{roleName},'%') 
 | 
        </if> 
 | 
        AND a.is_delete = 0 
 | 
  
 | 
        ) a 
 | 
        LEFT JOIN SYS_DEPT d ON a.COMPANY_ID = d.dept_id 
 | 
        ORDER BY d.dept_name, a.sort 
 | 
    </select> 
 | 
  
 | 
    <update id="addWorkflowStepsRole"> 
 | 
        update WF_DEF_STEP set APPROVER_ROLE_IDS = #{roleId},UPDATE_DATE = CURRENT_TIMESTAMP where id = #{stepId} 
 | 
    </update> 
 | 
  
 | 
    <update id="deleteWorkflowStepsRole"> 
 | 
        update WF_DEF_STEP set APPROVER_ROLE_IDS = #{roleId},UPDATE_DATE = CURRENT_TIMESTAMP where id = #{stepId} 
 | 
    </update> 
 | 
  
 | 
    <update id="deleteFlowMenu"> 
 | 
        update SYS_ROLE_MENU set is_delete=0,UPDATE_DATE = CURRENT_TIMESTAMP WHERE ID IN 
 | 
( 
 | 
    SELECT id FROM ( 
 | 
    SELECT * FROM ( 
 | 
    SELECT a.STEP_ROUTER_ID AS menu_id,b.id AS role_id FROM WF_DEF_STEP a ,SYS_ROLE b 
 | 
    WHERE a.IS_DELETE =0 AND b.IS_DELETE=0 
 | 
       AND CONCAT(',',a.APPROVER_ROLE_IDS,',') LIKE CONCAT(',',b.id,',') 
 | 
    UNION 
 | 
    SELECT a.STEP_READ_ROUTER_ID AS menu_id,b.id AS role_id FROM WF_DEF_STEP a ,SYS_ROLE b 
 | 
    WHERE a.IS_DELETE =0 AND b.IS_DELETE=0 
 | 
        AND CONCAT(',',a.APPROVER_ROLE_IDS,',') LIKE CONCAT(',',b.id,',') 
 | 
    ) 
 | 
    WHERE menu_id IS NOT NULL 
 | 
    GROUP BY menu_id,role_id 
 | 
    ) b,SYS_ROLE_MENU c WHERE b.menu_id=c.menu_id AND b.role_id=c.role_id 
 | 
) 
 | 
    </update> 
 | 
  
 | 
    <select id="selectFlowMenu" resultType="com.zt.modules.workflowconfig.dto.FlowMenuDto"> 
 | 
        select c.*,d.id as id2,d.menu_id as menuId2 from ( 
 | 
        SELECT * FROM ( 
 | 
        SELECT a.STEP_ROUTER_ID AS menu_id,b.id AS role_id 
 | 
        FROM WF_DEF_STEP a ,SYS_ROLE b 
 | 
        WHERE a.IS_DELETE =0 AND b.IS_DELETE=0 
 | 
        AND CONCAT(',',a.APPROVER_ROLE_IDS,',') LIKE CONCAT('%,',b.id,',%') 
 | 
        UNION 
 | 
        SELECT a.STEP_READ_ROUTER_ID AS menu_id,b.id AS role_id 
 | 
        FROM WF_DEF_STEP a ,SYS_ROLE b 
 | 
        WHERE a.IS_DELETE =0 AND b.IS_DELETE=0 
 | 
        AND CONCAT(',',a.APPROVER_ROLE_IDS,',') LIKE CONCAT('%,',b.id,',%') 
 | 
        ) b 
 | 
        WHERE menu_id IS NOT NULL AND menu_id <> 0 
 | 
        GROUP BY menu_id,role_id 
 | 
        )c 
 | 
        left join sys_role_menu d on d.role_id = c.role_id and d.menu_id = c.menu_id 
 | 
        where d.IS_DELETE is null or d.IS_DELETE = 1 
 | 
    </select> 
 | 
    <update id="deleteRoleFlowMenu"> 
 | 
        update sys_role_menu set is_delete =1,UPDATE_DATE = CURRENT_TIMESTAMP where id in (select id2 from (select c.*,d.id as id2 from ( 
 | 
        SELECT * FROM ( 
 | 
        SELECT a.STEP_ROUTER_ID AS menu_id,b.id AS role_id 
 | 
        FROM WF_DEF_STEP a ,SYS_ROLE b 
 | 
        WHERE a.IS_DELETE =0 AND b.IS_DELETE=0 
 | 
        AND CONCAT(',',a.APPROVER_ROLE_IDS,',') LIKE CONCAT('%,',b.id,',%') 
 | 
        UNION 
 | 
        SELECT a.STEP_READ_ROUTER_ID AS menu_id,b.id AS role_id 
 | 
        FROM WF_DEF_STEP a ,SYS_ROLE b 
 | 
        WHERE a.IS_DELETE =0 AND b.IS_DELETE=0 
 | 
        AND CONCAT(',',a.APPROVER_ROLE_IDS,',') LIKE CONCAT('%,',b.id,',%') 
 | 
        ) b 
 | 
        WHERE menu_id IS NOT NULL AND menu_id <> 0 
 | 
        GROUP BY menu_id,role_id 
 | 
        )c 
 | 
        join sys_role_menu d 
 | 
        join sys_menu m 
 | 
        where d.menu_id = c.menu_id and d.MENU_ID = m.id and m.SHOW_MENU = 0 
 | 
        ) f where f.role_id is null 
 | 
        ) 
 | 
    </update> 
 | 
  
 | 
    <select id="selectFlowMenuOld" resultType="com.zt.modules.workflowconfig.dto.FlowMenuDto"> 
 | 
        WITH menuList AS ( 
 | 
            SELECT STEP_ROUTER_ID AS step_menu_id FROM WF_DEF_STEP WHERE IS_DELETE =0 AND STEP_ROUTER_ID IS NOT null 
 | 
            UNION 
 | 
            SELECT STEP_READ_ROUTER_ID AS step_menu_id FROM WF_DEF_STEP WHERE IS_DELETE =0 AND STEP_READ_ROUTER_ID IS NOT null 
 | 
        ), 
 | 
             shoudList AS ( 
 | 
                 SELECT * FROM ( 
 | 
                                   SELECT a.STEP_ROUTER_ID AS menu_id,b.id AS role_id 
 | 
                                   FROM WF_DEF_STEP a ,SYS_ROLE b 
 | 
                                   WHERE a.IS_DELETE =0 AND b.IS_DELETE=0 
 | 
                                     AND CONCAT(',',a.APPROVER_ROLE_IDS,',') LIKE CONCAT('%,',b.id,',%') 
 | 
                                   UNION 
 | 
                                   SELECT a.STEP_READ_ROUTER_ID AS menu_id,b.id AS role_id 
 | 
                                   FROM WF_DEF_STEP a ,SYS_ROLE b 
 | 
                                   WHERE a.IS_DELETE =0 AND b.IS_DELETE=0 
 | 
                                     AND CONCAT(',',a.APPROVER_ROLE_IDS,',') LIKE CONCAT('%,',b.id,',%') 
 | 
                               ) 
 | 
                 WHERE menu_id IS NOT NULL AND menu_id <> 0 
 | 
                 GROUP BY menu_id,role_id 
 | 
             ),existList as( 
 | 
            SELECT id as id2, menu_id AS menu_id2, role_id  AS role_id2, is_delete AS is_delete2 
 | 
            FROM SYS_ROLE_MENU b 
 | 
            WHERE menu_id IN (SELECT step_menu_id from menuList) 
 | 
              AND role_id NOT IN (1331061516255227905,1271368584383188993) 
 | 
        ) 
 | 
  
 | 
        SELECT * FROM shoudList FULL OUTER JOIN existList ON menu_id=menu_id2 AND role_id = role_id2 
 | 
    </select> 
 | 
  
 | 
  
 | 
    <select id="querySteps" resultType="com.zt.modules.workflowconfig.model.WfDefStep"> 
 | 
  
 | 
        SELECT wds.* FROM WF_DEF_STEP wds LEFT JOIN WF_DEF wd ON wds.WF_DEF_ID=wd.ID WHERE 
 | 
            wd.CODE=#{wfCode} AND wds.IS_DELETE=0 ORDER BY wds.STEP_NO ASC LIMIT 1 
 | 
    </select> 
 | 
  
 | 
    <select id="queryAllSteps" resultType="com.zt.modules.workflowconfig.model.WfDefStep"> 
 | 
        SELECT wds.* FROM WF_DEF_STEP wds LEFT JOIN WF_DEF wd ON wds.WF_DEF_ID=wd.ID WHERE 
 | 
            wd.CODE=#{wfCode} AND wds.IS_DELETE=0 ORDER BY wds.STEP_NO ASC LIMIT 100 
 | 
    </select> 
 | 
  
 | 
    <select id="getAllSteps" resultType="java.lang.String"> 
 | 
        SELECT STEP_MARKER 
 | 
        FROM WF_DEF_STEP 
 | 
        WHERE is_delete = 0 
 | 
            AND STEP_NO <> 100 
 | 
        ORDER BY WF_DEF_ID,STEP_NO 
 | 
    </select> 
 | 
  
 | 
    <select id="queryWfDefFirstStep" resultType="com.zt.modules.workflowconfig.model.WfDefStep"> 
 | 
        SELECT * FROM WF_DEF_STEP wds 
 | 
        WHERE 1=1 
 | 
        <if test="wfDefIdCode!=null"> 
 | 
            and (CONCAT('',WF_DEF_ID ) =#{wfDefIdCode} or WF_DEF_ID in (select id from WF_DEF where code=#{wfDefIdCode})) 
 | 
        </if> 
 | 
        ORDER BY wds.STEP_NO ASC LIMIT 1 
 | 
    </select> 
 | 
  
 | 
    <select id="queryWfDefFinallyStep" resultType="com.zt.modules.workflowconfig.model.WfDefStep"> 
 | 
        SELECT * FROM WF_DEF_STEP wds 
 | 
        WHERE 1=1 and wds.IS_DELETE=0 
 | 
        <if test="wfDefIdCode!=null"> 
 | 
            and (CONCAT('',WF_DEF_ID ) = #{wfDefIdCode} or WF_DEF_ID in (select id from WF_DEF where code=#{wfDefIdCode})) 
 | 
        </if> 
 | 
        ORDER BY wds.STEP_NO desc LIMIT 1 
 | 
    </select> 
 | 
  
 | 
    <select id="queryWfDefStep" resultType="com.zt.modules.workflowconfig.model.WfDefStep"> 
 | 
        SELECT * FROM WF_DEF_STEP wds 
 | 
        WHERE 1=1 
 | 
        <if test="wfDefIdCode!=null"> 
 | 
            and (CONCAT('',WF_DEF_ID ) =#{wfDefIdCode} or WF_DEF_ID in (select id from WF_DEF where code=#{wfDefIdCode}))  /*liquan*/ 
 | 
        </if> 
 | 
        <if test="stepIdMarker!=null"> 
 | 
            and (CONCAT('',id) = #{stepIdMarker} or  step_Marker = #{stepIdMarker})  /*liquan*/ 
 | 
        </if> 
 | 
        ORDER BY wds.STEP_NO desc LIMIT 1 
 | 
    </select> 
 | 
  
 | 
    <select id="queryWfDefNextStep" resultType="com.zt.modules.workflowconfig.model.WfDefStep"> 
 | 
        <![CDATA[ 
 | 
        SELECT * 
 | 
        FROM WF_DEF_STEP wds 
 | 
        WHERE is_Delete = 0 
 | 
            and STEP_TYPE = 0 
 | 
            and wds.WF_DEF_ID=#{wfDefId} 
 | 
            AND wds.STEP_NO > #{stepNo} 
 | 
        ORDER BY wds.STEP_NO ASC LIMIT 1 
 | 
        ]]> 
 | 
    </select> 
 | 
  
 | 
    <select id="queryWfDefPreStep" resultType="com.zt.modules.workflowconfig.model.WfDefStep"> 
 | 
        <![CDATA[ 
 | 
        SELECT * 
 | 
        FROM WF_DEF_STEP wds 
 | 
        WHERE is_Delete = 0 
 | 
            and STEP_TYPE = 0 
 | 
            AND wds.WF_DEF_ID = #{wfDefId} 
 | 
            AND wds.STEP_NO < #{stepNo} 
 | 
        ORDER BY wds.STEP_NO DESC LIMIT 1 
 | 
        ]]> 
 | 
    </select> 
 | 
  
 | 
    <select id="queryStepsBYMap" resultType="com.zt.modules.workflowconfig.model.WfDefStep"> 
 | 
        SELECT * FROM WF_DEF_STEP a, 
 | 
        WF_DEF b 
 | 
        WHERE a.is_Delete=0 
 | 
        and a.is_Delete=0 
 | 
        <if test="wfId!=null"> 
 | 
            AND b.ID=#{wfId} 
 | 
        </if> 
 | 
        <if test="wfCode!=null"> 
 | 
            AND b.Code=#{wfCode} 
 | 
        </if> 
 | 
        <if test="wfDefId!=null"> 
 | 
            AND a.WF_DEF_ID=#{wfDefId} 
 | 
        </if> 
 | 
        <if test="stepMarker!=null"> 
 | 
            AND a.STEP_MARKER=#{stepMarker} 
 | 
        </if> 
 | 
        ORDER BY a.STEP_NO 
 | 
    </select> 
 | 
  
 | 
    <select id="getWorkflowStepByCode" resultType="com.zt.modules.workflowconfig.model.WfDefStep"> 
 | 
        <![CDATA[ 
 | 
        SELECT * 
 | 
        FROM WF_DEF_STEP wds 
 | 
        WHERE is_Delete = 0 
 | 
            AND wds.STEP_Marker = #{stepMarker} 
 | 
        ORDER BY wds.STEP_NO ASC LIMIT 1 
 | 
        ]]> 
 | 
    </select> 
 | 
  
 | 
</mapper> 
 |