行政管理模块
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

393 lines
15 KiB

<?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.ccsens.ptccsens.persist.dao.ProTaskDetailDao">
<select id="projectIdByTaskDetailId" resultType="java.lang.Long">
SELECT
b.business_id
FROM
(SELECT l.id as labelId FROM t_label l LEFT JOIN t_label_type lt on l.label_type_id = lt.id WHERE lt.label_type = 1 and l.level = 0 and l.rec_status = 0 and lt.rec_status = 0) l,
(SELECT
@r as _id ,
@r:=(SELECT @r:=parent_task_detail_id FROM t_pro_parent_task WHERE task_detail_id = _id and rec_status = 0) as parentId
FROM
(SELECT @r := #{taskDetailId}) d,
t_pro_parent_task p
WHERE
@r is not null
)p,
t_label_business b
WHERE
l.labelId = b.label_id
and p.parentId = b.business_id
and b.rec_status = 0
limit 1
</select>
<resultMap id="queryTask" type="com.ccsensptos.tallsdk.bean.vo.TallTaskVo$QueryTask">
<id column="id" property="id"/>
<result column="detailId" property="detailId"/>
<result column="name" property="name"/>
<result column="description" property="description"/>
<result column="planStart" property="planStart"/>
<result column="plan_duration" property="planDuration"/>
<result column="plan_end_time" property="planEnd"/>
<result column="realStart" property="realStart"/>
<result column="real_duration" property="realDuration"/>
<result column="real_end_time" property="realEnd"/>
<result column="process" property="process"/>
<result column="skip" property="skip"/>
<result column="skipTaskId" property="skipTaskId"/>
<collection property="panel" ofType="com.ccsensptos.tallsdk.bean.vo.TallTaskVo$PanelInfo">
<result column="backgroundColor" property="backgroundColor"/>
<result column="borderRadius" property="borderRadius"/>
<result column="border" property="border"/>
<result column="shadow" property="shadow"/>
<result column="width" property="width"/>
<result column="height" property="height"/>
<result column="row" property="row"/>
<result column="col" property="col"/>
</collection>
</resultMap>
<!-- <insert id="insertAllTaskDetail">-->
<!-- INSERT INTO t_pro_task_detail (-->
<!-- id,-->
<!-- `name`,-->
<!-- description,-->
<!-- cycle-->
<!-- )-->
<!-- VALUES-->
<!-- <foreach collection="newTaskDetailList" item="item" separator=",">-->
<!-- (#{item.id},#{item.name},#{item.description},#{item.cycle})-->
<!-- </foreach>-->
<!-- </insert>-->
<select id="queryPermanentGlobalTask" resultMap="queryTask">
SELECT
ts.id,
td.id AS detailId,
td.`name`,
td.description,
ts.plan_start_time AS planStart,
ts.plan_duration,
ts.plan_end_time,
ts.real_start_time AS realStart,
ts.real_duration,
ts.real_end_time,
ts.task_status AS process,
tf.flow_type AS skip,
tf.jump_task_detail_id AS skipTaskId,
tpi.back_color AS backgroundColor,
tpi.round_corner AS borderRadius,
tpi.border AS border,
tpi.shadow AS shadow,
tpi.width AS width,
tpi.height AS height,
tpi.`row` AS `row`,
tpi.col AS col
FROM
t_pro_task_detail AS td
LEFT JOIN t_pro_task_sub AS ts ON ts.task_detail_id = td.id
LEFT JOIN t_pro_task_flow AS tf ON tf.task_detail_id = td.id AND tf.rec_status = 0
LEFT JOIN t_pro_role_task AS rt ON rt.task_id = td.id
LEFT JOIN t_pro_task_panel_info AS tpi ON tpi.task_detail_id = td.id AND tpi.rec_status = 0
LEFT JOIN t_label_business AS lb ON td.id = lb.business_id
LEFT JOIN t_label AS l ON l.id = lb.label_id
LEFT JOIN t_label_type AS lt ON lt.id = l.label_type_id
WHERE
td.rec_status = 0 AND ts.rec_status = 0 AND lb.rec_status = 0 AND l.rec_status = 0 AND lt.rec_status = 0 AND rt.rec_status = 0
AND lb.business_type = 0
AND l.`level` = 2
AND lt.label_type = 1
AND ts.plan_start_time = 0
AND ts.plan_duration = 0
AND rt.role_id IN
<foreach collection="roleIdList" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
ORDER BY ts.plan_start_time
</select>
<select id="queryGlobalTask" resultMap="queryTask">
SELECT
alltask.*
FROM
(
SELECT
ts.id,
td.id AS detailId,
td.`name`,
td.description,
ts.plan_start_time AS planStart,
ts.plan_duration,
ts.plan_end_time,
ts.real_end_time,
ts.real_start_time AS realStart,
ts.real_duration,
ts.task_status AS process,
tf.flow_type AS skip,
tf.jump_task_detail_id AS skipTaskId,
tpi.back_color AS backgroundColor,
tpi.round_corner AS borderRadius,
tpi.border AS border,
tpi.shadow AS shadow,
tpi.width AS width,
tpi.height AS height,
tpi.`row` AS `row`,
tpi.col AS col
FROM
t_pro_task_detail AS td
LEFT JOIN t_pro_task_sub AS ts ON ts.task_detail_id = td.id
LEFT JOIN t_pro_task_flow AS tf ON tf.task_detail_id = td.id
AND tf.rec_status = 0
LEFT JOIN t_pro_role_task AS rt ON rt.task_id = td.id
LEFT JOIN t_pro_task_panel_info AS tpi ON tpi.task_detail_id = td.id
AND tpi.rec_status = 0
LEFT JOIN t_label_business AS lb ON td.id = lb.business_id
LEFT JOIN t_label AS l ON l.id = lb.label_id
LEFT JOIN t_label_type AS lt ON lt.id = l.label_type_id
WHERE
td.rec_status = 0
AND ts.rec_status = 0
AND lb.rec_status = 0
AND l.rec_status = 0
AND lt.rec_status = 0
AND rt.rec_status = 0
AND lb.business_type = 0
AND l.`level` = 2
AND lt.label_type = 1
AND ts.plan_start_time != 0
AND ts.plan_duration != 0
AND rt.role_id IN
<foreach collection="roleIdList" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
AND ts.plan_start_time &lt;= #{timeNode}
AND ts.plan_end_time &gt;= #{timeNode}
) AS alltask
LEFT JOIN t_label_business AS llbb ON alltask.detailId = llbb.business_id
LEFT JOIN t_label AS ll ON llbb.label_id = ll.id
LEFT JOIN t_label_type AS lltt ON ll.label_type_id = lltt.id
WHERE
llbb.rec_status = 0
AND ll.rec_status = 0
AND lltt.rec_status = 0
AND lltt.label_type = 0
AND llbb.business_type = 0
AND ll.`level` >= #{timeUnit}
ORDER BY alltask.planStart
</select>
<select id="queryRegularTask" resultMap="queryTask">
SELECT
alltask.*
FROM
(
SELECT
ts.id,
td.id AS detailId,
td.`name`,
td.description,
ts.plan_start_time AS planStart,
ts.plan_duration,
ts.plan_end_time,
ts.real_end_time,
ts.real_start_time AS realStart,
ts.real_duration,
ts.task_status AS process,
tf.flow_type AS skip,
tf.jump_task_detail_id AS skipTaskId,
tpi.back_color AS backgroundColor,
tpi.round_corner AS borderRadius,
tpi.border AS border,
tpi.shadow AS shadow,
tpi.width AS width,
tpi.height AS height,
tpi.`row` AS `row`,
tpi.col AS col
FROM
t_pro_task_detail AS td
LEFT JOIN t_pro_task_sub AS ts ON ts.task_detail_id = td.id
LEFT JOIN t_pro_task_flow AS tf ON tf.task_detail_id = td.id AND tf.rec_status = 0
LEFT JOIN t_pro_role_task AS rt ON rt.task_id = td.id
LEFT JOIN t_pro_task_panel_info AS tpi ON tpi.task_detail_id = td.id AND tpi.rec_status = 0
LEFT JOIN t_label_business AS lb ON td.id = lb.business_id
LEFT JOIN t_label AS l ON l.id = lb.label_id
LEFT JOIN t_label_type AS lt ON lt.id = l.label_type_id
WHERE
td.rec_status = 0
AND ts.rec_status = 0
AND lb.rec_status = 0
AND l.rec_status = 0
AND lt.rec_status = 0
AND rt.rec_status = 0
AND lb.business_type = 0
AND l.`level` = 3
AND lt.label_type = 1
AND ts.plan_start_time != 0
AND ts.plan_duration != 0
AND rt.role_id IN
<foreach collection="roleIdList" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
<if test="queryType==0 and timeUnit != 7">
AND FROM_UNIXTIME(plan_start_time/1000,#{timeFormat}) &lt;= FROM_UNIXTIME((#{timeNode}-86400000)/1000,#{timeFormat})
AND FROM_UNIXTIME(plan_start_time/1000,#{timeFormat}) &gt;= DATE_ADD(FROM_UNIXTIME(#{timeNode}/1000,#{timeFormat}),${query})
</if>
<if test="queryType==1 and timeUnit != 7">
AND FROM_UNIXTIME(plan_start_time/1000,#{timeFormat}) &gt;= FROM_UNIXTIME(#{timeNode}/1000,#{timeFormat})
AND FROM_UNIXTIME(plan_start_time/1000,#{timeFormat}) &lt;=DATE_ADD(FROM_UNIXTIME(#{timeNode}/1000,#{timeFormat}),${query})
</if>
<if test="queryType==0 and timeUnit == 7">
AND CONCAT(FROM_UNIXTIME(plan_start_time/1000,'%Y'),QUARTER(FROM_UNIXTIME(plan_start_time/1000))) &lt;= CONCAT(FROM_UNIXTIME(plan_start_time/1000,'%Y'),QUARTER(FROM_UNIXTIME(plan_start_time/1000)))
AND CONCAT(FROM_UNIXTIME(plan_start_time/1000,'%Y'),QUARTER(FROM_UNIXTIME(plan_start_time/1000))) &gt;= DATE_ADD(FROM_UNIXTIME(#{timeNode}/1000,#{timeFormat}),${query})
</if>
<if test="queryType==1 and timeUnit == 7">
AND FROM_UNIXTIME(plan_start_time/1000,#{timeFormat}) &gt;= FROM_UNIXTIME(#{timeNode}/1000,#{timeFormat})
AND FROM_UNIXTIME(plan_start_time/1000,#{timeFormat}) &lt;=DATE_ADD(FROM_UNIXTIME(#{timeNode}/1000,#{timeFormat}),${query})
</if>
) AS alltask
LEFT JOIN t_label_business AS llbb ON alltask.detailId = llbb.business_id
LEFT JOIN t_label AS ll ON llbb.label_id = ll.id
LEFT JOIN t_label_type AS lltt ON ll.label_type_id = lltt.id
WHERE
llbb.rec_status = 0
AND ll.rec_status = 0
AND lltt.rec_status = 0
AND lltt.label_type = 0
AND llbb.business_type = 0
AND ll.`level` >= #{timeUnit}
ORDER BY alltask.planStart
</select>
<select id="continueQueryTask" resultMap="queryTask">
SELECT
alltask.*
FROM
(
SELECT
ts.id,
td.id AS detailId,
td.`name`,
td.description,
ts.plan_start_time AS planStart,
ts.plan_duration,
ts.plan_end_time,
ts.real_end_time,
ts.real_start_time AS realStart,
ts.real_duration,
ts.task_status AS process,
tf.flow_type AS skip,
tf.jump_task_detail_id AS skipTaskId,
tpi.back_color AS backgroundColor,
tpi.round_corner AS borderRadius,
tpi.border AS border,
tpi.shadow AS shadow,
tpi.width AS width,
tpi.height AS height,
tpi.`row` AS `row`,
tpi.col AS col
FROM
t_pro_task_detail AS td
LEFT JOIN t_pro_task_sub AS ts ON ts.task_detail_id = td.id
LEFT JOIN t_pro_task_flow AS tf ON tf.task_detail_id = td.id AND tf.rec_status = 0
LEFT JOIN t_pro_role_task AS rt ON rt.task_id = td.id
LEFT JOIN t_pro_task_panel_info AS tpi ON tpi.task_detail_id = td.id AND tpi.rec_status = 0
LEFT JOIN t_label_business AS lb ON td.id = lb.business_id
LEFT JOIN t_label AS l ON l.id = lb.label_id
LEFT JOIN t_label_type AS lt ON lt.id = l.label_type_id
WHERE
td.rec_status = 0
AND ts.rec_status = 0
AND lb.rec_status = 0
AND l.rec_status = 0
AND lt.rec_status = 0
AND rt.rec_status = 0
AND lb.business_type = 0
AND l.`level` = 3
AND lt.label_type = 1
AND ts.plan_start_time != 0
AND ts.plan_duration != 0
AND rt.role_id IN
<foreach collection="roleIdList" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
<if test="queryType==0 and timeUnit != 7">
AND FROM_UNIXTIME(ts.plan_start_time / 1000 ,#{timeFormat}) &lt;= FROM_UNIXTIME((#{timeNode}-86400000)/ 1000 ,#{timeFormat})
</if>
<if test="queryType==1 and timeUnit != 7">
AND FROM_UNIXTIME(ts.plan_start_time / 1000 ,#{timeFormat}) &gt;= FROM_UNIXTIME((#{timeNode})/ 1000 ,#{timeFormat})
</if>
) AS alltask
LEFT JOIN t_label_business AS llbb ON alltask.detailId = llbb.business_id
LEFT JOIN t_label AS ll ON llbb.label_id = ll.id
LEFT JOIN t_label_type AS lltt ON ll.label_type_id = lltt.id
WHERE
llbb.rec_status = 0
AND ll.rec_status = 0
AND lltt.rec_status = 0
AND lltt.label_type = 0
AND llbb.business_type = 0
AND ll.`level` >= #{timeUnit}
ORDER BY alltask.planStart
</select>
<insert id="insertSelectiveList">
INSERT INTO t_pro_task_sub
(
id,
task_detail_id,
plan_start_time,
plan_end_time,
plan_duration
)
VALUES
<foreach collection="proTaskSubList" item="item" separator=",">
(#{item.id},#{item.taskDetailId},#{item.planStartTime},#{item.planEndTime},#{item.planDuration})
</foreach>
</insert>
<select id="getNowTask" resultType="java.lang.Long">
SELECT
s.id
FROM
t_pro_task_detail d
LEFT JOIN t_pro_parent_task p on d.id = p.task_detail_id
LEFT JOIN (SELECT * FROM t_pro_parent_task WHERE parent_task_detail_id = #{projectId}) p1 on p.parent_task_detail_id = p1.task_detail_id
LEFT JOIN
t_pro_task_sub s on d.id = s.task_detail_id and s.rec_status = 0
WHERE
`name` = #{taskName}
and s.plan_start_time &lt;= #{now}
and s.plan_end_time &gt;= #{now}
and d.rec_status = 0
and p.rec_status = 0
and p1.rec_status = 0
limit 1
</select>
<select id="queryTaskOfProject" resultType="com.ccsens.ptccsens.bean.vo.TaskVo$TaskOfProject">
SELECT
t.id AS detailId,
t.`name`
FROM
t_pro_parent_task AS p
LEFT JOIN t_pro_task_detail AS t ON t.id = p.task_detail_id
WHERE
p.rec_status = 0
AND t.rec_status = 0
AND p.parent_task_detail_id IN (
SELECT
pp.task_detail_id
FROM
t_pro_parent_task AS pp
WHERE
pp.parent_task_detail_id = #{projectId}
AND pp.rec_status = 0
)
AND t.`name` LIKE CONCAT('%',#{name},'%')
</select>
</mapper>