| <?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.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.id) > 0 | 
|          LEFT JOIN sys_dept c ON b.dept_id = c.id | 
|          LEFT JOIN sys_dept d ON b.company_id = d.id | 
|         WHERE | 
|          a.is_delete = 0 | 
|          AND a.id = #{stepsId} | 
|     </select> | 
|   | 
|     <select id="getUserList" resultType="com.zt.modules.workflowconfig.model.WfDefStep"> | 
|         SELECT | 
|         a.id AS userId, | 
|         a.username AS userName, | 
|         a.real_name AS realName, | 
|         c.name AS deptName | 
|         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.name like concat('%',#{userName},'%') | 
|         </if> | 
|         AND a.is_delete = 0 | 
|         ORDER BY  a.name | 
|         ) a | 
|         LEFT JOIN sys_dept c ON a.dept_id = c.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.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.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.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.id | 
|         WHERE a.id not in (select id from sys_role where code in ('xtglybm','xtbmybm','xtsjybm','rx')) | 
|         ORDER BY d.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> |