<?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.ruoyi.project.mapper.ProjectTaskMapper">
  <resultMap id="BaseResultMap" type="com.ruoyi.project.domain.ProjectTask">
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="aid" jdbcType="BIGINT" property="aid" />
    <result column="name" jdbcType="VARCHAR" property="name" />
    <result column="project_status" jdbcType="INTEGER" property="projectStatus" />
    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
    <result column="remark" jdbcType="VARCHAR" property="remark" />
    <result column="admin_name" jdbcType="VARCHAR" property="adminName" />
    <result column="staff_name" jdbcType="VARCHAR" property="staffName" />
    <result column="project_number" jdbcType="VARCHAR" property="projectNumber" />
    <result column="project_year" jdbcType="OTHER" property="projectYear" />
    <result column="create_year" jdbcType="OTHER" property="createYear" />
    <result column="cross_year" jdbcType="INTEGER" property="crossYear" />
  </resultMap>
  <sql id="Base_Column_List">
    id, aid, `name`, project_status, create_time, remark, admin_name, staff_name, project_number,
    project_year, create_year, cross_year
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List" />
    from project_task
    where id = #{id,jdbcType=BIGINT}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    delete from project_task
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.ruoyi.project.domain.ProjectTask" useGeneratedKeys="true">
    insert into project_task (aid, `name`, project_status,
      create_time, remark, admin_name,
      staff_name, project_number, project_year,
      create_year, cross_year)
    values (#{aid,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{projectStatus,jdbcType=INTEGER},
      #{createTime,jdbcType=TIMESTAMP}, #{remark,jdbcType=VARCHAR}, #{adminName,jdbcType=VARCHAR},
      #{staffName,jdbcType=VARCHAR}, #{projectNumber,jdbcType=VARCHAR}, #{projectYear,jdbcType=OTHER},
      #{createYear,jdbcType=OTHER}, #{crossYear,jdbcType=INTEGER})
  </insert>
  <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.ruoyi.project.domain.ProjectTask" useGeneratedKeys="true">
    insert into project_task
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="aid != null">
        aid,
      </if>
      <if test="name != null">
        `name`,
      </if>
      <if test="projectStatus != null">
        project_status,
      </if>
      <if test="createTime != null">
        create_time,
      </if>
      <if test="remark != null">
        remark,
      </if>
      <if test="adminName != null">
        admin_name,
      </if>
      <if test="staffName != null">
        staff_name,
      </if>
      <if test="projectNumber != null">
        project_number,
      </if>
      <if test="projectYear != null">
        project_year,
      </if>
      <if test="createYear != null">
        create_year,
      </if>
      <if test="crossYear != null">
        cross_year,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="aid != null">
        #{aid,jdbcType=BIGINT},
      </if>
      <if test="name != null">
        #{name,jdbcType=VARCHAR},
      </if>
      <if test="projectStatus != null">
        #{projectStatus,jdbcType=INTEGER},
      </if>
      <if test="createTime != null">
        #{createTime,jdbcType=TIMESTAMP},
      </if>
      <if test="remark != null">
        #{remark,jdbcType=VARCHAR},
      </if>
      <if test="adminName != null">
        #{adminName,jdbcType=VARCHAR},
      </if>
      <if test="staffName != null">
        #{staffName,jdbcType=VARCHAR},
      </if>
      <if test="projectNumber != null">
        #{projectNumber,jdbcType=VARCHAR},
      </if>
      <if test="projectYear != null">
        #{projectYear,jdbcType=OTHER},
      </if>
      <if test="createYear != null">
        #{createYear,jdbcType=OTHER},
      </if>
      <if test="crossYear != null">
        #{crossYear,jdbcType=INTEGER},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.ruoyi.project.domain.ProjectTask">
    update project_task
    <set>
      <if test="aid != null">
        aid = #{aid,jdbcType=BIGINT},
      </if>
      <if test="name != null">
        `name` = #{name,jdbcType=VARCHAR},
      </if>
      <if test="projectStatus != null">
        project_status = #{projectStatus,jdbcType=INTEGER},
      </if>
      <if test="createTime != null">
        create_time = #{createTime,jdbcType=TIMESTAMP},
      </if>
      <if test="remark != null">
        remark = #{remark,jdbcType=VARCHAR},
      </if>
      <if test="adminName != null">
        admin_name = #{adminName,jdbcType=VARCHAR},
      </if>
      <if test="staffName != null">
        staff_name = #{staffName,jdbcType=VARCHAR},
      </if>
      <if test="projectNumber != null">
        project_number = #{projectNumber,jdbcType=VARCHAR},
      </if>
      <if test="projectYear != null">
        project_year = #{projectYear,jdbcType=OTHER},
      </if>
      <if test="createYear != null">
        create_year = #{createYear,jdbcType=OTHER},
      </if>
      <if test="crossYear != null">
        cross_year = #{crossYear,jdbcType=INTEGER},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.ruoyi.project.domain.ProjectTask">
    update project_task
    set aid = #{aid,jdbcType=BIGINT},
      `name` = #{name,jdbcType=VARCHAR},
      project_status = #{projectStatus,jdbcType=INTEGER},
      create_time = #{createTime,jdbcType=TIMESTAMP},
      remark = #{remark,jdbcType=VARCHAR},
      admin_name = #{adminName,jdbcType=VARCHAR},
      staff_name = #{staffName,jdbcType=VARCHAR},
      project_number = #{projectNumber,jdbcType=VARCHAR},
      project_year = #{projectYear,jdbcType=OTHER},
      create_year = #{createYear,jdbcType=OTHER},
      cross_year = #{crossYear,jdbcType=INTEGER}
    where id = #{id,jdbcType=BIGINT}
  </update>
  <update id="updateStaffName">
    update project_task a left join (select pid ,group_concat(name)name from project_staff
        where pid = #{pid} group by  pid) b on a.id=b.pid set a.staff_name =b.name
    where a.id = #{pid}
  </update>


  <resultMap id="BaseResultOutMap" type="com.ruoyi.project.bo.ProjectTaskListOut">
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="aid" jdbcType="BIGINT" property="aid" />
    <result column="name" jdbcType="VARCHAR" property="name" />
    <result column="project_status" jdbcType="INTEGER" property="projectStatus" />
    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
    <result column="remark" jdbcType="VARCHAR" property="remark" />
    <result column="admin_name" jdbcType="VARCHAR" property="adminName" />
    <result column="staff_name" jdbcType="VARCHAR" property="staffName" />
    <result column="project_number" jdbcType="VARCHAR" property="projectNumber" />
    <result column="project_year" jdbcType="OTHER" property="projectYear" />
    <result column="create_year" jdbcType="OTHER" property="createYear" />
    <result column="cross_year" jdbcType="INTEGER" property="crossYear" />
  </resultMap>

  <select id="selectList" resultMap="BaseResultOutMap">
    select
    a.id, a.aid, a.`name`, a.project_status , a.create_time, a.remark, a.admin_name, a.staff_name, a.project_number,
    a.project_year, a.create_year, a.cross_year
    from project_task a
    <if test="rolesId ==2">
      left join (select pid from project_staff where aid= #{uid}) b on a.id=b.pid
    </if>
    where 1=1
      <if test="rolesId ==3">
        and a.aid = #{uid}
      </if>

    <if test="headId !=null">
      and a.aid= #{headId}
    </if>
    <if test="staffId !=null">
      and a.id in (select pid from project_staff where aid= #{staffId})
    </if>
    <if test="name !=null">
      and a.name like concat('%',#{name},'%')
    </if>
    <if test="startTime !=null and endTime !=null">
      and a.create_time  between #{startTime} and #{endTime}
    </if>
    <if test="projectNumber !=null ">
      and a.project_number like concat('%',#{projectNumber},'%')
    </if>
    <if test="projectYear !=null ">
      and a.project_year =#{projectYear}
    </if>
    <if test="crossYear !=null ">
      and a.cross_year =#{crossYear}
    </if>
    <if test="projectStatus !=null ">
      and a.project_status =#{projectStatus}
    </if>

  </select>
</mapper>
