<?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="task"> <!-- 以下与实体类的中字段一致 --> <sql id="selectId"> fguid, forderguid, fordernumber, ftaskname, fdisplayname, fstate, ftaskflag, freturntaskguid, fbacktasknames, fcirculationway, fperformtype, fcreatetime, fovertime, freadtime, firstovertime, fautotag, fparenttaskguid, fvariable, fwithdraw, fcountersigngroupguid, fsingleforeachguid, fsingleforeachnum, fbatch, ftaskcount, ftasksort, ftaskurgentlevel, forksigntag, forktasknames, ftasknamelist, fumpire </sql> <sql id="task_alias"> st.fguid, st.forderguid, st.fordernumber, st.ftaskname, st.fdisplayname, st.fstate, st.ftaskflag, st.freturntaskguid, st.fbacktasknames, st.fcirculationway, st.fperformtype, st.fcreatetime, st.fovertime, st.freadtime, st.firstovertime, st.fautotag, st.fparenttaskguid, st.fvariable, st.fwithdraw, st.fcountersigngroupguid, st.fsingleforeachguid, st.fsingleforeachnum, st.fbatch, st.ftaskcount, st.ftasksort, st.ftaskurgentlevel, st.forksigntag, st.forktasknames, st.ftasknamelist, st.fumpire </sql> <sql id="userInfoMsg"> fuserorgname, fbzid, fuserid, fusername </sql> <!-- 保存任务对象 --> <insert id="saveTask" parameterType="Task"> insert into sys_task (fguid,forderguid,fordernumber,ftaskname,fdisplayname,fstate,ftaskflag,freturntaskguid,fbacktasknames,fcirculationway,fperformtype,fcreatetime,fovertime,firstovertime,fautotag,fparenttaskguid,fvariable,fwithdraw,fcountersigngroupguid,fsingleforeachguid,fsingleforeachnum,fbatch,ftaskcount,ftasksort,ftaskurgentlevel,forksigntag,forktasknames,ftasknamelist,fumpire) values (#{fguid},#{forderguid},#{fordernumber},#{ftaskname},#{fdisplayname},#{fstate},#{ftaskflag},#{freturntaskguid},#{fbacktasknames},#{fcirculationway},#{fperformtype},#{fcreatetime},#{fovertime},#{firstovertime},#{fautotag},#{fparenttaskguid},#{fvariable},#{fwithdraw},#{fcountersigngroupguid},#{fsingleforeachguid},#{fsingleforeachnum},#{fbatch},#{ftaskcount},#{ftasksort},#{ftaskurgentlevel},#{forksigntag},#{forktasknames},#{ftasknamelist},#{fumpire}) </insert> <!-- 根据任务fguid获取任务 --> <select id="getTask" resultType="Task" parameterType="String"> select <include refid="selectId" /> from sys_task where fguid = #{taskguid} </select> <!-- 根据编制号获取用户信息 --> <select id="getUserInfoByBz" parameterType="hashmap" resultType="HashMap"> SELECT <include refid="userInfoMsg" /> <if test="flag==true"> ,fphone,femail </if> FROM sys_user_detail WHERE fbzid IN <foreach collection="userBzs" item="item" index="index" open="(" separator="," close=")"> #{item} </foreach> </select> <!-- 保存任务参与者 --> <insert id="saveTaskActor" parameterType="hashmap"> insert into sys_task_actor (fguid,ftaskguid, fbzid) values (#{fguid},#{taskguid}, #{fbzid}) </insert> <!-- 根据任务guid查询所有活动任务参与者集合 --> <select id="getTaskActorbzByTaskGuid" resultType="com.zhc.eap.entity.TaskActorBz" parameterType="String"> SELECT sta.ftaskguid,sta.fbzid,st.ftaskname,st.fordernumber FROM sys_task_actor sta INNER JOIN sys_task st ON sta.ftaskguid = st.fguid AND sta.ftaskguid = #{taskguid} </select> <!-- 删除任务参与者编制号 --> <delete id="deleteTaskActor" parameterType="String"> delete from sys_task_actor where ftaskguid = #{taskguid} </delete> <!-- 删除任务 --> <delete id="deleteTask" parameterType="String"> delete from sys_task where fguid = #{taskguid} </delete> <!-- 根据参数查询活动任务(如果任务guid不为空,则查询的结果集合排除该任务) --> <select id="getActiveTasks" resultType="Task" parameterType="HashMap"> select <include refid="selectId" /> from sys_task where forderguid = #{orderguid} <if test="taskguid != null and taskguid != ''"> AND fguid <![CDATA[<>]]> #{taskguid} </if> <if test="taskname != null and taskname != ''"> AND ftaskname = #{taskname} </if> <if test="parenttaskguid != null and parenttaskguid != ''"> and fparenttaskguid = #{parenttaskguid} </if> </select> <!--根据参数查询活动任务(如果任务guid不为空,则查询的结果集合排除该任务) --> <select id="getActiveTasksByTaskNames" resultType="Task" parameterType="HashMap"> select <include refid="selectId" /> from sys_task where forderguid = #{orderguid} <if test="taskguid != null and taskguid != ''"> AND fguid <![CDATA[<>]]> #{taskguid} </if> <if test="taskname != null and taskname.length > 0"> AND ftaskname in <foreach collection="taskname" item="item" index="index" open="(" separator="," close=")"> #{item} </foreach> </if> </select> <!-- 获取已完成会签任务数量 --> <select id="getProcessedTaskCount" resultType="int" parameterType="HashMap"> SELECT COUNT(DISTINCT fbzid) FROM sys_hist_task WHERE forderguid = #{orderguid} AND ftaskname = #{taskname} AND fparenttaskguid = #{parenttaskguid} AND fcountersigngroupguid = #{countersigngroupguid} AND (ftaskstage='processed' OR ftaskstage='tsAfterSigned') </select> <!-- 修改加签前任务的状态(fstate)为:tsCanceled,任务处理状态(ftaskstage)为:取消 --> <update id="updateParentSignFstate" parameterType="java.util.List"> UPDATE sys_hist_task SET fstate = 'tsCanceled',ftaskstage='cancel' WHERE fguid IN <foreach collection="list" item="taskIds" open="(" index="index" separator="," close=")"> #{taskIds} </foreach> </update> <!-- 更新任务阅读时间 --> <update id="updateTaskReadTime" parameterType="hashmap"> UPDATE sys_task SET freadtime= #{readtime} WHERE fguid = #{taskguid} </update> <!-- 根据流程id,任务父id获取子任务列表(单签) --> <select id="getSubActiveTasksAny" resultType="Task" parameterType="HashMap"> select <include refid="selectId" /> from sys_task where forderguid = #{orderguid} and fparenttaskguid = #{parenttaskguid} </select> <!-- 根据流程id,任务名称,任务父id,分组id,获取子任务列表(会签) --> <select id="getSubActiveTasksAll" resultType="Task" parameterType="HashMap"> select <include refid="selectId"/> from sys_task where forderguid = #{orderguid} and fparenttaskguid in ( select fguid from sys_hist_task where forderguid = #{orderguid} and ftaskname = #{taskname} and fparenttaskguid = #{parenttaskguid} and fcountersigngroupguid = #{countersigngroupguid} ) </select> <!-- 流程图显示待办任务信息 --> <select id="getActiveTaskAndUserInfo" resultType="HashMap" parameterType="HashMap"> SELECT st.fdisplayname,st.fcreatetime,st.ftaskname,st.ftasknamelist, sud.fbzid,sud.fuserid,sud.fusername,sud.forgname,sud.frolename FROM sys_task st INNER JOIN sys_task_actor sta ON st.fguid = sta.ftaskguid INNER JOIN sys_user_detail sud ON sud.fbzid = sta.fbzid WHERE st.forderguid = #{orderguid} </select> <!-- 根据流程单号获取任务信息 --> <select id="getTaskInfoByFordernumber" resultType="HashMap" parameterType="HashMap"> SELECT st.fguid,sta.fbzid FROM sys_task st INNER JOIN sys_task_actor sta ON st.fguid = sta.ftaskguid INNER JOIN sys_user_detail sud ON sud.fbzid = sta.fbzid AND st.fordernumber = #{fordernumber} AND sud.fuserid = #{fuserid} LIMIT 1 </select> <!-- 根据条件查找顺序任务数量,排除当前这条任务(只适用普通顺序任务(普通顺序任务执行转办再次顺序加签任务),加签顺序任务,局部验证) --> <select id="getSequenceTaskCountLocal" resultType="int" parameterType="HashMap"> SELECT count(*) FROM sys_task WHERE forderguid = #{orderguid} AND fguid <![CDATA[<>]]> #{taskguid} AND ftaskname = #{taskname} AND ftasksort = #{tasksort} <if test="parenttaskguid != null and parenttaskguid != ''"> AND fparenttaskguid = #{parenttaskguid} </if> <if test="countersigngroupguid != null and countersigngroupguid != ''"> AND fcountersigngroupguid = #{countersigngroupguid} </if> <if test="singleforeachguid != null and singleforeachguid != ''"> AND fsingleforeachguid = #{singleforeachguid} </if> </select> <!-- 根据条件查找顺序任务数量,排除当前这条任务(只适用当前环节全局数量验证,排除状态为 tsWaiting ) --> <select id="getSequenceTaskCountGlobal" resultType="int" parameterType="HashMap"> SELECT count(*) FROM sys_task WHERE forderguid = #{orderguid} AND fguid <![CDATA[<>]]> #{taskguid} AND ftaskname = #{taskname} AND fstate <![CDATA[<>]]> 'tsWaiting' <if test="countersigngroupguid != null and countersigngroupguid != ''"> AND fcountersigngroupguid = #{countersigngroupguid} </if> <if test="singleforeachguid != null and singleforeachguid != ''"> AND fsingleforeachguid = #{singleforeachguid} </if> </select> <!-- 根据当前任务顺序 + 1 查找是否存在等待中的任务 --> <select id="getSequenceTaskGuids" resultType="Task" parameterType="HashMap"> SELECT <include refid="task_alias" />,sta.fbzid as tempBzid FROM sys_task st INNER JOIN sys_task_actor sta on st.fguid = sta.ftaskguid WHERE st.forderguid = #{orderguid} AND st.ftaskname = #{taskname} AND st.fparenttaskguid = #{parenttaskguid} AND st.ftasksort = #{tasksort} <if test="countersigngroupguid != null and countersigngroupguid != ''"> AND st.fcountersigngroupguid = #{countersigngroupguid} </if> <if test="singleforeachguid != null and singleforeachguid != ''"> AND st.fsingleforeachguid = #{singleforeachguid} </if> </select> <!-- 修改顺序任务状态为tsTask --> <update id="updateSequenceTaskFstate" parameterType="HashMap"> UPDATE sys_task SET fstate = #{fstate} WHERE fguid in <foreach collection="sequenceTasks" item="item" index="index" open="(" separator="," close=")"> #{item.fguid} </foreach> </update> </mapper>