pipIrr-platform/pipIrr-global/src/main/resources/mapper/IrProjectMapper.xml
@@ -1,118 +1,329 @@
<?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.dy.pipIrrGlobal.daoIr.IrProjectMapper">
    <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoIr.IrProject">
        <!--@mbg.generated-->
        <!--@Table ir_project-->
        <id column="id" jdbcType="BIGINT" property="id" />
        <result column="project_name" jdbcType="VARCHAR" property="projectName" />
        <result column="province_id" jdbcType="BIGINT" property="provinceId" />
        <result column="city_id" jdbcType="BIGINT" property="cityId" />
        <result column="county_id" jdbcType="BIGINT" property="countyId" />
        <result column="town_id" jdbcType="BIGINT" property="townId" />
        <result column="village_id" jdbcType="BIGINT" property="villageId" />
        <result column="project_state" jdbcType="TINYINT" property="projectState" />
        <result column="remarks" jdbcType="VARCHAR" property="remarks" />
        <result column="operator" jdbcType="BIGINT" property="operator" />
        <result column="operate_time" jdbcType="TIMESTAMP" property="operateDt" />
        <result column="deleted" jdbcType="TINYINT" property="deleted" />
    </resultMap>
  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoIr.IrProject">
    <!--@mbg.generated-->
    <!--@Table ir_project-->
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="project_name" jdbcType="VARCHAR" property="projectName" />
    <result column="province_id" jdbcType="BIGINT" property="provinceId" />
    <result column="city_id" jdbcType="BIGINT" property="cityId" />
    <result column="county_id" jdbcType="BIGINT" property="countyId" />
    <result column="town_id" jdbcType="BIGINT" property="townId" />
    <result column="village_id" jdbcType="BIGINT" property="villageId" />
    <result column="project_state" jdbcType="TINYINT" property="projectState" />
    <result column="remarks" jdbcType="VARCHAR" property="remarks" />
    <result column="operator" jdbcType="BIGINT" property="operator" />
    <result column="operate_time" jdbcType="TIMESTAMP" property="operateTime" />
    <result column="deleted" jdbcType="TINYINT" property="deleted" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, project_name, province_id, city_id, county_id, town_id, village_id, project_state,
    remarks, `operator`, operate_time, deleted
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select
    <include refid="Base_Column_List" />
    from ir_project
    where id = #{id,jdbcType=BIGINT}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    delete from ir_project
    where id = #{id,jdbcType=BIGINT}
  </delete>
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoIr.IrProject">
    <!--@mbg.generated-->
    insert into ir_project (id, project_name, province_id,
      city_id, county_id, town_id,
      village_id, project_state, remarks,
      `operator`, operate_time, deleted
      )
    values (#{id,jdbcType=BIGINT}, #{projectName,jdbcType=VARCHAR}, #{provinceId,jdbcType=BIGINT},
      #{cityId,jdbcType=BIGINT}, #{countyId,jdbcType=BIGINT}, #{townId,jdbcType=BIGINT},
      #{villageId,jdbcType=BIGINT}, #{projectState,jdbcType=TINYINT}, #{remarks,jdbcType=VARCHAR},
      #{operator,jdbcType=BIGINT}, #{operateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=TINYINT}
      )
  </insert>
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoIr.IrProject">
    <!--@mbg.generated-->
    insert into ir_project
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
      <if test="projectName != null">
        project_name,
      </if>
      <if test="provinceId != null">
        province_id,
      </if>
      <if test="cityId != null">
        city_id,
      </if>
      <if test="countyId != null">
        county_id,
      </if>
      <if test="townId != null">
        town_id,
      </if>
      <if test="villageId != null">
        village_id,
      </if>
      <if test="projectState != null">
        project_state,
      </if>
      <if test="remarks != null">
        remarks,
      </if>
      <if test="operator != null">
        `operator`,
      </if>
      <if test="operateTime != null">
        operate_time,
      </if>
      <if test="deleted != null">
        deleted,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id,jdbcType=BIGINT},
      </if>
      <if test="projectName != null">
        #{projectName,jdbcType=VARCHAR},
      </if>
      <if test="provinceId != null">
        #{provinceId,jdbcType=BIGINT},
      </if>
      <if test="cityId != null">
        #{cityId,jdbcType=BIGINT},
      </if>
      <if test="countyId != null">
        #{countyId,jdbcType=BIGINT},
      </if>
      <if test="townId != null">
        #{townId,jdbcType=BIGINT},
      </if>
      <if test="villageId != null">
        #{villageId,jdbcType=BIGINT},
      </if>
      <if test="projectState != null">
        #{projectState,jdbcType=TINYINT},
      </if>
      <if test="remarks != null">
        #{remarks,jdbcType=VARCHAR},
      </if>
      <if test="operator != null">
        #{operator,jdbcType=BIGINT},
      </if>
      <if test="operateTime != null">
        #{operateTime,jdbcType=TIMESTAMP},
      </if>
      <if test="deleted != null">
        #{deleted,jdbcType=TINYINT},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoIr.IrProject">
    <!--@mbg.generated-->
    update ir_project
    <set>
      <if test="projectName != null">
        project_name = #{projectName,jdbcType=VARCHAR},
      </if>
      <if test="provinceId != null">
        province_id = #{provinceId,jdbcType=BIGINT},
      </if>
      <if test="cityId != null">
        city_id = #{cityId,jdbcType=BIGINT},
      </if>
      <if test="countyId != null">
        county_id = #{countyId,jdbcType=BIGINT},
      </if>
      <if test="townId != null">
        town_id = #{townId,jdbcType=BIGINT},
      </if>
      <if test="villageId != null">
        village_id = #{villageId,jdbcType=BIGINT},
      </if>
      <if test="projectState != null">
        project_state = #{projectState,jdbcType=TINYINT},
      </if>
      <if test="remarks != null">
        remarks = #{remarks,jdbcType=VARCHAR},
      </if>
      <if test="operator != null">
        `operator` = #{operator,jdbcType=BIGINT},
      </if>
      <if test="operateTime != null">
        operate_time = #{operateTime,jdbcType=TIMESTAMP},
      </if>
      <if test="deleted != null">
        deleted = #{deleted,jdbcType=TINYINT},
      </if>
    </set>
    where id = #{id,jdbcType=BIGINT}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoIr.IrProject">
    <!--@mbg.generated-->
    update ir_project
    set project_name = #{projectName,jdbcType=VARCHAR},
      province_id = #{provinceId,jdbcType=BIGINT},
      city_id = #{cityId,jdbcType=BIGINT},
      county_id = #{countyId,jdbcType=BIGINT},
      town_id = #{townId,jdbcType=BIGINT},
      village_id = #{villageId,jdbcType=BIGINT},
      project_state = #{projectState,jdbcType=TINYINT},
      remarks = #{remarks,jdbcType=VARCHAR},
      `operator` = #{operator,jdbcType=BIGINT},
      operate_time = #{operateTime,jdbcType=TIMESTAMP},
      deleted = #{deleted,jdbcType=TINYINT}
    where id = #{id,jdbcType=BIGINT}
  </update>
    <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoIr.IrProject">
        <!--@mbg.generated-->
        insert into ir_project
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">
                id,
            </if>
            <if test="projectName != null">
                project_name,
            </if>
            <if test="provinceId != null">
                province_id,
            </if>
            <if test="cityId != null">
                city_id,
            </if>
            <if test="countyId != null">
                county_id,
            </if>
            <if test="townId != null">
                town_id,
            </if>
            <if test="villageId != null">
                village_id,
            </if>
            <if test="projectState != null">
                project_state,
            </if>
            <if test="remarks != null">
                remarks,
            </if>
            <if test="operator != null">
                `operator`,
            </if>
            <if test="operateDt != null">
                operate_time,
            </if>
            <if test="deleted != null">
                deleted,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">
                #{id,jdbcType=BIGINT},
            </if>
            <if test="projectName != null">
                #{projectName,jdbcType=VARCHAR},
            </if>
            <if test="provinceId != null">
                #{provinceId,jdbcType=BIGINT},
            </if>
            <if test="cityId != null">
                #{cityId,jdbcType=BIGINT},
            </if>
            <if test="countyId != null">
                #{countyId,jdbcType=BIGINT},
            </if>
            <if test="townId != null">
                #{townId,jdbcType=BIGINT},
            </if>
            <if test="villageId != null">
                #{villageId,jdbcType=BIGINT},
            </if>
            <if test="projectState != null">
                #{projectState,jdbcType=TINYINT},
            </if>
            <if test="remarks != null">
                #{remarks,jdbcType=VARCHAR},
            </if>
            <if test="operator != null">
                #{operator,jdbcType=BIGINT},
            </if>
            <if test="operateDt != null">
                #{operateDt,jdbcType=TIMESTAMP},
            </if>
            <if test="deleted != null">
                #{deleted,jdbcType=TINYINT},
            </if>
        </trim>
    </insert>
  <!--根据下级获取上一级地址-->
  <select id="getSupperByVillageId" parameterType="_long" resultType="java.lang.Long">
    select dis_tow.*
    from ba_district dis_vil
    inner join
    ba_district dis_tow
    on dis_vil.supperId = dis_tow.id
    where dis_vil.id = #{vaId,jdbcType=BIGINT}
  </select>
  <!--逻辑删除-->
  <delete id="deleteLogicById" parameterType="java.lang.Long">
    <!--@mbg.generated-->
    update ir_project
    set deleted = 1
    where id = #{id,jdbcType=BIGINT}
  </delete>
    <!--根据下级获取上一级地址-->
    <select id="getSupperByVillageId" parameterType="_long" resultType="java.lang.Long">
        select dis_tow.*
        from ba_district dis_vil
        inner join
        ba_district dis_tow
        on dis_vil.supperId = dis_tow.id
        where dis_vil.id = #{vaId,jdbcType=BIGINT}
    </select>
  <!--修改状态-->
  <update id="updateProjectState">
    update ir_project
    set project_state = #{projectState,jdbcType=TINYINT},
    operator = #{operator,jdbcType=BIGINT},
    operate_time = #{operateTime,jdbcType=TIMESTAMP}
    where id = #{id,jdbcType=BIGINT}
  </update>
    <delete id="deleteLogicById" parameterType="java.lang.Long">
        <!--@mbg.generated-->
        update ir_project
        set deleted = 1
        where id = #{id,jdbcType=BIGINT}
    </delete>
  <!--查询一个信息-->
  <select id="selectById" resultType="com.dy.pipIrrGlobal.voIr.VoProjectOne">
    select
    CAST(pro.id AS char)AS id,
    CAST(pro.province_id AS char)AS provinceId,
    CAST(pro.city_id AS char)AS cityId,
    CAST(pro.county_id AS char)AS countyId,
    CAST(pro.town_id AS char)AS townId,
    CAST(pro.village_id AS char)AS villageId,
    pro.project_name  AS  projectName,
    pro.project_state  AS  projectState,
    cli.name         AS operatorName,
    pro.remarks,
    pro.operate_time  AS  operateDt
    from ir_project pro
    left join se_client cli on cli.id = pro.operator
    where pro.id = #{id,jdbcType=BIGINT} and pro.deleted = 0
  </select>
  <!--分页查询数量-->
  <select id="getRecordCount" resultType="java.lang.Long">
    SELECT COUNT(*) AS recordCount
    FROM ir_project pro
    <where>
      pro.deleted = 0
      <if test="projectName != null and projectName != ''">
        AND pro.project_name LIKE CONCAT('%', #{projectName}, '%')
      </if>
      <if test = "projectState != null and projectState != ''">
        AND pro.project_state = #{projectState}
      </if>
    </where>
  </select>
  <!--分页查询数据-->
  <select id="getProjects" resultType="com.dy.pipIrrGlobal.voIr.VoProject">
    SELECT
    CAST(pro.id AS char)AS projectId,
    pro.project_name  AS  projectName,
    pro.project_state  AS  projectState,
    CONCAT(province.`name`,city.`name`,country.`name`, town.`name`, village.`name`) AS address,
    pro.remarks,
    pro.operate_time  AS  operateDt
    FROM ir_project pro
    LEFT JOIN ba_district province ON pro.province_id = province.id
    LEFT JOIN ba_district city ON pro.city_id = city.id
    LEFT JOIN ba_district country ON pro.county_id = country.id
    LEFT JOIN ba_district town ON pro.town_id = town.id
    LEFT JOIN ba_district village ON pro.village_id = village.id
    <where>
      pro.deleted = 0
      <if test="projectName != null and projectName != ''">
        AND pro.project_name LIKE CONCAT('%', #{projectName}, '%')
      </if>
      <if test = "projectState != null and projectState != ''">
        AND pro.project_state = #{projectState}
      </if>
    </where>
    ORDER BY pro.operate_time DESC
    <if test="pageCurr != null and pageSize != null">
      LIMIT ${(pageCurr-1)*pageSize}, ${pageSize}
    </if>
  </select>
  <!--根据指定条件获取项目记录(精简)数量-->
  <select id="getSimpleProjectsCount" resultType="java.lang.Long">
    SELECT COUNT(*) AS recordCount
    FROM ir_project pr
    <where>
      AND pr.project_state = 1
      AND pr.deleted = 0
      <if test="projectName != null and projectName != ''">
        AND pr.project_name LIKE CONCAT('%', #{projectName}, '%')
      </if>
    </where>
  </select>
  <!--根据指定条件获取项目记录(精简)-->
  <select id="getSimpleProjects" resultType="com.dy.pipIrrGlobal.voIr.VoProjectSimple">
    SELECT
        pr.id AS projectId,
        pr.project_name AS projectName,
        (SELECT COUNT(*) FROM ir_project_group pg WHERE pg.project_id = pr.id) AS groupCount
    FROM ir_project pr
    <where>
      AND pr.project_state = 1
      AND pr.deleted = 0
      <if test="projectName != null and projectName != ''">
        AND pr.project_name LIKE CONCAT('%', #{projectName}, '%')
      </if>
    </where>
    ORDER BY pr.operate_time DESC
    <trim prefix="limit ">
      <if test="start != null and count != null">
        #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
      </if>
    </trim>
  </select>
  <!--根据项目Id获取项目详情,编辑项目信息使用-->
  <select id="getProjectDetail" resultType="com.dy.pipIrrGlobal.voIr.VoProjectDetail">
    SELECT
        projectName,
        GROUP_CONCAT(groupId) AS irrigateGroups
    FROM
      (
        SELECT
          pro.project_name AS projectName,
          grp.id AS groupId
        FROM ir_project pro
               INNER JOIN ir_project_group pg ON pg.project_id = pro.id
               INNER JOIN ir_irrigate_group grp ON grp.id = pg.group_id
        WHERE pro.deleted = 0 AND pro.id = #{projectId}
      ) project
    GROUP BY projectName
  </select>
</mapper>