<?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="cn.wisenergy.oaMapper.ProjectAndBoMapper">
    <resultMap id="Project_Map" type="cn.wisenergy.oaModel.OaProject">
        <id column="project_no" property="no"/>
        <result property="name" column="project_name"/>
        <result property="managerNo" column="pm_no"/>
        <result property="bo" column="bo_no"/>
        <result property="bName" column="bo_name"/>
        <result property="managerName" column="manager_name"/>
        <result property="deptNo" column="project_depart_no"/>
        <result property="deptName" column="project_depart_name"/>
        <result property="cost" column="cost"/>
        <result property="startDate" column="start_date"/>
        <result property="endDate" column="end_date"/>
    </resultMap>

    <resultMap id="Bo_Map" type="cn.wisenergy.oaModel.OaProject">
        <id column="project_no" property="no"/>
        <result property="name" column="project_name"/>
        <result property="managerNo" column="pm_no"/>
        <result property="managerName" column="manager_name"/>
        <result property="deptNo" column="project_depart_no"/>
        <result property="deptName" column="project_depart_name"/>
        <result property="cost" column="cost"/>
        <result property="startDate" column="start_date"/>
        <result property="endDate" column="end_date"/>
        <result property="bo" column="bo_no"/>
    </resultMap>

    <sql id="values_project">
        project_no, project_name ,pm_no ,bo_no ,
        project_depart_no ,cost,start_date ,end_date
    </sql>

    <sql id="values_bo">
        bo, bo_name,pm_no,manager_name,project_depart_no,project_depart_nam
    </sql>

    <select id="getListOaProjectByDept" resultMap="Project_Map">
    select p.project_no, p.project_name, p.pm_no, p.project_depart_no, p.cost, p.start_date, p.end_date, p.bo_no, b.bo_name
    from v_project_base p left join v_bo_base b on p.bo_no = b.bo_no
    <where>
          <if test="oaDeptNo != null">
              p.project_depart_no = #{oaDeptNo}
          </if>
          AND (p.project_no like CONCAT("%" ,#{projectNameOrNo},"%") OR p.project_name like CONCAT("%" ,#{projectNameOrNo},"%"))
          <if test="oaProjectIds != null">
              AND p.project_no not in
              <foreach collection="oaProjectIds" item="oaProject" open="(" close=")"  separator=",">
                  #{oaProject}
              </foreach>
          </if>
    </where>
    </select>

    <select id="getListOaBoByDept" resultMap="Bo_Map">
        select b.bo_no AS project_no, b.bo_name AS project_name, b.pm_no, b.pm_name, b.project_depart_no, b.project_depart_name
        from  v_bo_base b
        <where>
                <if test="oaDeptNo != null">
                    (pm_no IN (
                    SELECT
                    m. CODE
                    FROM
                    v_org_member m
                    JOIN v_org_unit u ON u.ID = m.ORG_DEPARTMENT_ID
                    WHERE
                    u. CODE = #{oaDeptNo}
                    )
                    OR
                    EXISTS (SELECT
                    p.bo_no
                    FROM
                    v_project_base p
                    left JOIN v_org_member m ON p.pm_no = m.`CODE`
                    left JOIN v_org_unit u ON m.ORG_DEPARTMENT_ID = u.ID
                    WHERE
                    u. CODE = #{oaDeptNo}
                    ))
                </if>
                AND (b.bo_no like CONCAT("%" ,#{projectNameOrNo},"%") OR b.bo_name like CONCAT("%" ,#{projectNameOrNo},"%"))
                <if test="oaProjectIds != null">
                    AND b.bo_no not in
                      <foreach collection="oaProjectIds" item="oaProject" open="(" close=")" separator=",">
                        #{oaProject}
                      </foreach>
                </if>
        </where>
    </select>


    <select id="getProjectByNameAndNo" resultMap="Project_Map">
    select  <include refid="values_project"/>
    from v_project_base
    where  project_no = #{projectNo} AND replace(replace(project_name,char(9),''),' ','') =  replace(replace(#{projectName},char(9),''),' ','')
    </select>

    <select id="getBoByNameAndNo" resultMap="Bo_Map">
        select  bo_no AS project_no,bo_name AS project_name,pm_no,project_depart_no,project_depart_name
        from  v_bo_base
        where bo_no = #{projectNo}
        <if test="projectName != null">
        AND replace(replace(bo_name,char(9),''),' ','') =  replace(replace(#{projectName},char(9),''),' ','')
        </if>
    </select>



    <select id="getProjectByNo" resultMap="Bo_Map">
    select p.project_no, p.project_name, p.pm_no, p.project_depart_no, p.cost, p.start_date, p.end_date, p.bo_no
    from v_project_base p
    where project_no = #{projectNo}
    </select>

    <select id="getBoByNo" resultMap="Project_Map">
        select bo_no AS project_no,bo_name AS project_name,pm_no,project_depart_no,project_depart_name
        from  v_bo_base
        where bo_no = #{projectNo}
    </select>

</mapper>