liusuyi
2024-10-10 38f29e38fcc668171dc05c53d40a36b895c86102
ard-work/src/main/resources/mapper/alarmpoints/ArdAlarmpointsWellMapper.xml
@@ -28,8 +28,12 @@
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="cameraId" column="camera_id"/>
        <!-- 子查询,关联 ard_well_guide_camera 表 -->
        <collection property="ardWellGuideCameraList" ofType="java.util.List" select="getArdWellGuideCameraListByWellId" column="id"/>
    </resultMap>
    <select id="getArdWellGuideCameraListByWellId" resultType="ArdWellGuideCamera">
        SELECT * FROM ard_well_guide_camera WHERE well_id = #{id}
    </select>
    <resultMap type="ArdAlarmpointsWell" id="wellResult">
        <result property="id" column="id"/>
@@ -60,12 +64,37 @@
               c.create_by,
               c.create_time,
               c.update_by,
               c.update_time,
               c.camera_id
               c.update_time
        from ard_alarmpoints_well c
                 left join sys_dept d on d.dept_id = c.dept_id
                 left join sys_user u on u.user_id = c.user_id
    </sql>
    <resultMap type="ArdAlarmpointsWell" id="ArdAlarmpointsWellOnlyResult">
        <result property="id" column="id"/>
        <result property="wellId" column="well_id"/>
        <result property="wellNumber" column="well_number"/>
        <result property="oilProduction" column="oil_production"/>
        <result property="wellBlock" column="well_block"/>
        <result property="productionDate" column="production_date"/>
        <result property="displacementMode" column="displacement_mode"/>
        <result property="surroundingEnvironment" column="surrounding_environment"/>
        <result property="wellType" column="well_type"/>
        <result property="installedLoad" column="installed_load"/>
        <result property="meteringStation" column="metering_station"/>
        <result property="transferStation" column="transfer_station"/>
        <result property="dehydrationStation" column="dehydration_station"/>
        <result property="runStatus" column="run_status"/>
        <result property="longitude" column="longitude"/>
        <result property="latitude" column="latitude"/>
        <result property="altitude" column="altitude"/>
        <result property="deptId" column="dept_id"/>
        <result property="userId" column="user_id"/>
        <result property="createBy" column="create_by"/>
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
    </resultMap>
    <select id="selectArdAlarmpointsWellList" parameterType="ArdAlarmpointsWell" resultMap="ArdAlarmpointsWellResult">
        <include refid="selectArdAlarmpointsWellVo"/>
@@ -94,7 +123,7 @@
    <select id="selectArdAlarmpointsWellById" parameterType="String" resultMap="ArdAlarmpointsWellResult">
        <include refid="selectArdAlarmpointsWellVo"/>
        where id = #{id}
        where c.id = #{id}
    </select>
    <select id="selectArdAlarmpointsWellByWellId" parameterType="String" resultMap="ArdAlarmpointsWellResult">
        <include refid="selectArdAlarmpointsWellVo"/>
@@ -126,7 +155,7 @@
            <if test="createTime != null">create_time,</if>
            <if test="updateBy != null">update_by,</if>
            <if test="updateTime != null">update_time,</if>
            <if test="cameraId != null">camera_id,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">#{id},</if>
@@ -152,7 +181,6 @@
            <if test="createTime != null">#{createTime},</if>
            <if test="updateBy != null">#{updateBy},</if>
            <if test="updateTime != null">#{updateTime},</if>
            <if test="cameraId != null">#{cameraId},</if>
        </trim>
    </insert>
@@ -181,11 +209,37 @@
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="updateBy != null">update_by = #{updateBy},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
            <if test="cameraId != null">camera_id = #{cameraId},</if>
        </trim>
        where id = #{id}
    </update>
    <update id="updateArdAlarmpointsWellByWellId" parameterType="ArdAlarmpointsWell">
        update ard_alarmpoints_well
        <trim prefix="SET" suffixOverrides=",">
            <if test="wellId != null">well_id = #{wellId},</if>
            <if test="wellNumber != null">well_number = #{wellNumber},</if>
            <if test="oilProduction != null">oil_production = #{oilProduction},</if>
            <if test="wellBlock != null">well_block = #{wellBlock},</if>
            <if test="productionDate != null">production_date = #{productionDate},</if>
            <if test="displacementMode != null">displacement_mode = #{displacementMode},</if>
            <if test="surroundingEnvironment != null">surrounding_environment = #{surroundingEnvironment},</if>
            <if test="wellType != null">well_type = #{wellType},</if>
            <if test="installedLoad != null">installed_load = #{installedLoad},</if>
            <if test="meteringStation != null">metering_station = #{meteringStation},</if>
            <if test="transferStation != null">transfer_station = #{transferStation},</if>
            <if test="dehydrationStation != null">dehydration_station = #{dehydrationStation},</if>
            <if test="runStatus != null">run_status = #{runStatus},</if>
            <if test="longitude != null">longitude = #{longitude},</if>
            <if test="latitude != null">latitude = #{latitude},</if>
            <if test="altitude != null">altitude = #{altitude},</if>
            <if test="deptId != null">dept_id = #{deptId},</if>
            <if test="userId != null">user_id = #{userId},</if>
            <if test="createBy != null">create_by = #{createBy},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="updateBy != null">update_by = #{updateBy},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
        </trim>
        where well_id = #{wellId}
    </update>
    <delete id="deleteArdAlarmpointsWellById" parameterType="String">
        delete
        from ard_alarmpoints_well
@@ -199,24 +253,78 @@
        </foreach>
    </delete>
    <select id="checkWellIdExists" resultType="ArdAlarmpointsWell">
        SELECT * FROM ard_alarmpoints_well WHERE well_id = #{wellId} limit 1
        SELECT *
        FROM ard_alarmpoints_well
        WHERE well_id = #{wellId} limit 1
    </select>
    <select id="wellByPlanId" parameterType="String" resultMap="wellResult">
        select ard_app_patrolpoint.alarmpoints_id as id,ard_alarmpoints_well.well_id, ard_app_patrolpoint."type",ard_alarmpoints_well.longitude,ard_alarmpoints_well.latitude from ard_alarmpoints_well LEFT JOIN ard_app_patrolpoint on ard_app_patrolpoint.alarmpoints_id = ard_alarmpoints_well.id where ard_alarmpoints_well.id in (select alarmpoints_id from ard_app_patrolpoint where patrolplan_id = #{id})
        GROUP BY ard_app_patrolpoint.alarmpoints_id,ard_alarmpoints_well.well_id,ard_app_patrolpoint."type",ard_alarmpoints_well.longitude,ard_alarmpoints_well.latitude
        select ard_app_patrolpoint.alarmpoints_id as id,
               ard_alarmpoints_well.well_id,
               ard_app_patrolpoint."type",
               ard_alarmpoints_well.longitude,
               ard_alarmpoints_well.latitude
        from ard_alarmpoints_well
                 LEFT JOIN ard_app_patrolpoint on ard_app_patrolpoint.alarmpoints_id = ard_alarmpoints_well.id
        where ard_alarmpoints_well.id in (select alarmpoints_id from ard_app_patrolpoint where patrolplan_id = #{id})
        GROUP BY ard_app_patrolpoint.alarmpoints_id, ard_alarmpoints_well.well_id, ard_app_patrolpoint."type",
                 ard_alarmpoints_well.longitude, ard_alarmpoints_well.latitude
    </select>
    <select id="wellListDept" parameterType="List" resultType="com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWellDeptVo">
    <select id="wellListDept" parameterType="List"
            resultType="com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWellDeptVo">
        Select well.id,well.well_id,well.well_number,well.oil_production,well.well_block,well.production_date,
        well.displacement_mode,well.surrounding_environment,well.well_type,well.installed_load,well.metering_station,
        well.transfer_station,well.dehydration_station,well.run_status,well.longitude,well.latitude,well.altitude,well.dept_id,
        dept.parent_id,dept.ancestors,dept.dept_name
        from ard_alarmpoints_well well
        left join sys_dept dept on well.dept_id = dept.dept_id
        where well.dept_id  in
        where well.dept_id in
        <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </select>
</mapper>
    <select id="getWellDataByPatrolplanIdAndPosition" resultMap="ArdAlarmpointsWellOnlyResult">
        select aaw.* from ard_app_patrolplan aap
        inner join ard_app_patrolpoint aap0 on aap.id = aap0.patrolplan_id
        inner join ard_alarmpoints_well aaw on aap0.alarmpoints_id = aaw.id
        where del is null and aap.id = #{patrolplanId}
        and f_compute_distance(cast(#{longitude} as decimal),cast(#{latitude} as decimal),aaw.longitude,aaw.latitude)
        &lt;= (select cast(sc.config_value as decimal) from sys_config sc where sc.config_key = 'appAlarmPointsDistance')
        order by f_compute_distance(cast(#{longitude} as decimal),cast(#{latitude} as decimal),aaw.longitude,aaw.latitude) desc limit 1 offset 0
    </select>
    <select id="getWellById" resultMap="ArdAlarmpointsWellOnlyResult">
        select aaw.* from ard_alarmpoints_well aaw where aaw.id = #{id}
    </select>
    <select id="conditionList" resultType="com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell">
        Select * from ard_alarmpoints_well well
        where WHERE well.well_id = #{wellId}
        and well.dept_id in
        <foreach item="deptList" collection="deptList" open="(" separator="," close=")">
            #{deptList}
        </foreach>
    </select>
    <select id="getArdAlarmpointsWellByDeptIdAndDistance" resultMap="ArdAlarmpointsWellOnlyResult">
        select * from ard_alarmpoints_well aaw
        where aaw.dept_id in (
        with recursive rsd as (
        select sd.dept_id from sys_dept sd where sd.dept_id = #{deptId}
        union
        select csd.dept_id from sys_dept csd inner join rsd on rsd.dept_id = csd.parent_id
        )
        select * from rsd) and f_compute_distance(aaw.longitude,aaw.latitude,cast(#{lonM} as numeric),cast(#{latM} as numeric)) &lt;= (select max(t.distance) from (
        select f_compute_distance(cast(#{lonM} as numeric),cast(#{latM} as numeric),cast(#{lonA} as numeric),cast(#{latA} as numeric)) as distance
        union
        select f_compute_distance(cast(#{lonM} as numeric),cast(#{latM} as numeric),cast(#{lonB} as numeric),cast(#{latB} as numeric)) as distance
        union
        select f_compute_distance(cast(#{lonM} as numeric),cast(#{latM} as numeric),cast(#{lonC} as numeric),cast(#{latC} as numeric)) as distance
        union
        select f_compute_distance(cast(#{lonM} as numeric),cast(#{latM} as numeric),cast(#{lonD} as numeric),cast(#{latD} as numeric)) as distance
        )t)
    </select>
</mapper>