java-team / EapFramework
EAP框架,基于Maven构建,支持本地编译调试
Newer
Older
EapFramework / debugproject / src / main / resources / com / mapping / one / task-mapper.xml
20541 on 17 Feb 2023 初始化调式项目
<?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>