123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- <?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.dayou.mapper.WorkFlowNodeInstanceMapper">
- <!-- 通用查询映射结果 -->
- <resultMap id="BaseResultMap" type="com.dayou.entity.WorkFlowNodeInstance">
- <result column="id" property="id" />
- <result column="deleted" property="deleted" />
- <result column="created" property="created" />
- <result column="modified" property="modified" />
- <result column="flow_id" property="flowId" />
- <result column="node_id" property="nodeId" />
- <result column="business_id" property="businessId" />
- <result column="business_type" property="businessType" />
- <result column="sequence" property="sequence" />
- <result column="state" property="state" />
- <result column="comment" property="comment" />
- </resultMap>
- <!-- 通用查询结果列 -->
- <sql id="Base_Column_List">
- id,
- deleted,
- created,
- modified,
- flow_id, node_id, business_id, business_type, sequence, state, comment
- </sql>
- <select id="getById" parameterType="java.lang.Long" resultType="com.dayou.entity.WorkFlowNodeInstance">
- SELECT
- wfni.id,
- wfni.flow_id,
- wfni.node_id,
- wfni.business_id,
- wfni.business_type,
- wfni.sequence,
- wfni.state,
- wn.verify,
- wfni.created,
- wn.code as nodeCode
- FROM
- work_flow_node_instance wfni
- LEFT JOIN work_node wn ON wn.id = wfni.node_id
- WHERE
- wfni.deleted = 0
- AND wn.deleted = 0
- AND wfni.id = #{instanceNodeId}
- </select>
- <select id="getInstanceNodeFlow" resultType="com.dayou.vo.WorkNodeInstanceVO">
- SELECT
- wf.id AS flowId,
- wn.id AS nodeId,
- wn.privious_node_id as pNodeId,
- wf.CODE AS flowCode,
- wn.NAME AS nodeName,
- wn.CODE AS nodeCode,
- ifnull( wfni.state, 'WAITING' ) AS state,
- wfni.id as instanceId
- FROM
- ( SELECT id, CODE FROM work_flow WHERE CODE = #{mainBusiness} AND deleted = 0 AND state = 0 ) wf
- LEFT JOIN ( SELECT id, privious_node_id, flow_id, NAME, CODE FROM work_node WHERE deleted = 0 ) wn ON wf.id = wn.flow_id
- LEFT JOIN ( SELECT id, flow_id, node_id, state FROM work_flow_node_instance WHERE deleted = 0 AND business_id = #{businessId}
- <if test="businessSubId!=null and businessSubId!='' and businessMinId!=null and businessMinId!=''">
- AND (business_min_id = #{businessMinId} or business_min_id IS NULL)
- AND (business_sub_id = #{businessSubId} or business_sub_id IS NULL)
- </if>
- <if test="(businessMinId==null or businessMinId=='') and businessSubId!=null and businessSubId!=''">
- AND business_min_id IS NULL
- AND (business_sub_id = #{businessSubId} or business_sub_id IS NULL)
- </if>
- <if test="(businessMinId!=null and businessMinId!='') and (businessSubId==null or businessSubId=='')">
- AND business_sub_id IS NULL
- AND (business_min_id = #{businessMinId} or business_min_id IS NULL)
- </if>
- <if test="(businessMinId==null or businessMinId=='') and (businessSubId==null or businessSubId=='')">
- AND business_sub_id IS NULL
- AND business_min_id IS NULL
- </if>
- ) wfni ON ( wfni.flow_id = wf.id AND wfni.node_id = wn.id )
- </select>
- <resultMap id="currentInstanceNodeMap" type="com.dayou.vo.WorkNodeInstanceVO">
- <result column="flowId" property="flowId" />
- <result column="nodeId" property="nodeId" />
- <result column="pNodeId" property="pNodeId" />
- <result column="flowCode" property="flowCode" />
- <result column="nodeName" property="nodeName" />
- <result column="nodeCode" property="nodeCode" />
- <result column="state" property="state" />
- <result column="instanceId" property="instanceId" />
- <result column="sequence" property="sequence" />
- <result column="reversible" property="reversible" />
- <result column="restartable" property="restartable" />
- <result column="terminable" property="terminable" />
- <result column="skippable" property="skippable" />
- <collection property="tasks" ofType="com.dayou.entity.WorkNodeTask" select="selectNodeTasks" column="{nodeId=nodeId,instanceId=instanceId}"/>
- </resultMap>
- <select id="instanceCurrent" resultMap="currentInstanceNodeMap">
- SELECT
- wf.id AS flowId,
- wn.id AS nodeId,
- wn.privious_node_id as pNodeId,
- wf.CODE AS flowCode,
- wn.NAME AS nodeName,
- wn.CODE AS nodeCode,
- wfni.state,
- wfni.id as instanceId,
- wfni.sequence,
- wn.reversible,
- wn.restartable,
- wn.terminable,
- wn.skippable
- FROM
- ( SELECT id, flow_id, node_id, state,sequence FROM work_flow_node_instance WHERE deleted = 0 AND business_id =#{businessId} AND state='PENDING' AND business_type = #{mainBusiness}
- <if test="businessSubId!=null and businessSubId!='' and businessMinId!=null and businessMinId!=''">
- AND business_sub_id = #{businessSubId}
- AND business_min_id = #{businessMinId}
- </if>
- <if test="businessSubId!=null and businessSubId!='' and (businessMinId==null or businessMinId=='') ">
- AND business_sub_id = #{businessSubId}
- AND business_min_id IS NULL
- </if>
- <if test="(businessSubId==null or businessSubId=='') and (businessMinId!=null and businessMinId!='') ">
- AND business_min_id = #{businessMinId}
- AND business_sub_id IS NULL
- </if>
- <if test="(businessSubId==null or businessSubId=='') and (businessMinId==null or businessMinId=='') ">
- AND business_sub_id IS NULL
- AND business_min_id IS NULL
- </if>
- ) wfni left join
- ( SELECT id, CODE FROM work_flow WHERE CODE = #{mainBusiness} AND deleted = 0 AND state = 0 ) wf ON wfni.flow_id = wf.id
- LEFT JOIN ( SELECT id, privious_node_id, flow_id, NAME, CODE,reversible,restartable,terminable,skippable FROM work_node WHERE deleted = 0 ) wn ON wfni.node_id = wn.id
- </select>
- <select id="selectNodeTasks" resultType="com.dayou.entity.WorkNodeTask">
- SELECT
- wnt.id,
- wnt.description,
- wnt.info,
- wtr.id AS recordId,
- wnt.task_type
- FROM
- work_node_task wnt
- LEFT JOIN work_task_record wtr ON wnt.id = wtr.task_id
- AND wtr.instance_id = #{instanceId}
- WHERE
- wnt.node_id = #{nodeId}
- AND wnt.deleted = 0 and wtr.deleted = 0
- </select>
- <select id="getInstanceNodeInfoById" parameterType="java.lang.Long" resultType="com.dayou.entity.WorkFlowNodeInstance">
- select wfni.*,wn.code as nodeCode from work_flow_node_instance wfni left join work_node wn on wn.id = wfni.node_id
- where wfni.deleted = 0 and wn.deleted = 0 and wfni.id = #{instanceNodeId}
- </select>
- <update id="batchCommitNode" parameterType="java.util.List">
- update work_flow_node_instance set state = 'FINISHED' WHERE id in (
- <foreach collection="currentNodeIds" index="index" item="item" separator=",">
- #{item}
- </foreach>
- )
- </update>
- <select id="instanceNodeCountByCode" parameterType="java.lang.String" resultType="com.dayou.vo.NightingaleEchartsVO">
- SELECT
- wn.name,
- t.num AS
- `value`
- FROM
- (
- SELECT
- node_id,
- count(*) AS num
- FROM
- work_flow_node_instance
- WHERE
- deleted = 0
- AND business_type = #{businessType}
- AND flow_id = ( SELECT id FROM work_flow WHERE CODE =#{businessType} AND state = 0 AND deleted = 0 )
- GROUP BY
- node_id
- ) t
- LEFT JOIN work_node wn ON wn.id = t.node_id
- ORDER BY
- t.num ASC
- </select>
- </mapper>
|