吉安感知网项目-后端
rain
2026-01-17 e96a70dc7177a9010a15648a9a72941c7d588a6c
获取防区下属区域接口
5 files modified
140 ■■■■■ changed files
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/controller/FwDefenseZoneController.java 18 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/mapper/FwDefenseZoneMapper.java 17 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/mapper/FwDefenseZoneMapper.xml 80 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/service/IFwDefenseZoneService.java 8 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/service/impl/FwDefenseZoneServiceImpl.java 17 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/controller/FwDefenseZoneController.java
@@ -35,6 +35,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.sxkj.fw.area.dto.FwDefenseZoneDTO;
import org.sxkj.fw.area.entity.FwDefenseZoneEntity;
import org.sxkj.fw.area.vo.FwAreaDivideVO;
import org.sxkj.fw.area.vo.FwDefenseZoneVO;
import org.sxkj.fw.area.excel.FwDefenseZoneExcel;
import org.sxkj.fw.area.service.IFwDefenseZoneService;
@@ -78,6 +79,23 @@
        }
        return R.data(detail);
    }
    /**
     * 根据防区id获取区域列表
     */
    @GetMapping("/areaList")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "区域列表", notes = "传入防区id")
    public R<List<FwAreaDivideVO>> areaList(@ApiParam(value = "防区id", required = true) @RequestParam Long zoneId) {
        if (zoneId == null) {
            return R.fail("防区id不能为空");
        }
        List<FwAreaDivideVO> list = fwDefenseZoneService.selectFwAreaDivideListByZoneId(zoneId);
        if (list == null) {
            return R.fail("防区不存在");
        }
        return R.data(list);
    }
//    /**
//     * 防区管理表 分页
//     */
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/mapper/FwDefenseZoneMapper.java
@@ -18,6 +18,7 @@
import org.sxkj.fw.area.entity.FwDefenseZoneEntity;
import org.sxkj.fw.area.dto.FwDefenseZoneDTO;
import org.sxkj.fw.area.vo.FwAreaDivideVO;
import org.sxkj.fw.area.vo.FwDefenseZoneVO;
import org.sxkj.fw.area.excel.FwDefenseZoneExcel;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -52,6 +53,22 @@
    FwDefenseZoneVO selectFwDefenseZoneDetail(@Param("id") Long id);
    /**
     * 校验防区是否存在
     *
     * @param zoneId
     * @return
     */
    Integer selectDefenseZoneExists(@Param("zoneId") Long zoneId);
    /**
     * 根据防区id获取区域列表
     *
     * @param zoneId
     * @return
     */
    List<FwAreaDivideVO> selectFwAreaDivideListByZoneId(@Param("zoneId") Long zoneId);
    /**
     * 新增(几何字段使用文本入库)
     *
     * @param fwDefenseZone
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/mapper/FwDefenseZoneMapper.xml
@@ -21,6 +21,86 @@
        <result column="is_deleted" property="isDeleted"/>
    </resultMap>
    <resultMap id="fwAreaDivideResultMap" type="org.sxkj.fw.area.vo.FwAreaDivideVO">
        <result column="id" property="id"/>
        <result column="area_name" property="areaName"/>
        <result column="longitude" property="longitude"/>
        <result column="latitude" property="latitude"/>
        <result column="area_size" property="areaSize"/>
        <result column="geom" property="geom"/>
        <result column="area_type" property="areaType"/>
        <result column="trigger_condition" property="triggerCondition"/>
        <result column="response_mechanism" property="responseMechanism"/>
        <result column="control_level" property="controlLevel"/>
        <result column="police_station_id" property="policeStationId"/>
        <result column="device_ids" property="deviceIds"/>
        <result column="fly_date_start" property="flyDateStart"/>
        <result column="fly_date_end" property="flyDateEnd"/>
        <result column="area_code" property="areaCode"/>
        <result column="police_station_name" property="policeStationName"/>
        <result column="police_station_contact_person" property="policeStationContactPerson"/>
        <result column="police_station_contact_phone" property="policeStationContactPhone"/>
        <result column="create_user" property="createUser"/>
        <result column="create_dept" property="createDept"/>
        <result column="create_time" property="createTime"/>
        <result column="update_user" property="updateUser"/>
        <result column="update_time" property="updateTime"/>
        <result column="status" property="status"/>
        <result column="is_deleted" property="isDeleted"/>
    </resultMap>
    <select id="selectDefenseZoneExists" resultType="java.lang.Integer">
        select count(1)
        from ja_fw_defense_zone
        where is_deleted = 0
          and id = #{zoneId}
    </select>
    <select id="selectFwAreaDivideListByZoneId" resultMap="fwAreaDivideResultMap">
        select distinct
        ad.id,
        ad.area_name,
        ad.longitude,
        ad.latitude,
        ad.area_size,
        case
            when ad.geom is null then null
            when ST_SRID(ad.geom) is null or ST_SRID(ad.geom) = 0 then ST_AsText(ad.geom)
            else concat(ST_AsText(ST_SwapXY(ad.geom)), ' | ', ST_SRID(ad.geom))
        end as geom,
        ad.area_type,
        ad.trigger_condition,
        ad.response_mechanism,
        ad.control_level,
        ad.police_station_id,
        ad.device_ids,
        ad.fly_date_start,
        ad.fly_date_end,
        ad.area_code,
        ps.station_name as police_station_name,
        ps.contact_person as police_station_contact_person,
        ps.contact_phone as police_station_contact_phone,
        ad.create_user,
        ad.create_dept,
        ad.create_time,
        ad.update_user,
        ad.update_time,
        ad.status,
        ad.is_deleted
        from ja_fw_defense_zone dz
        join ja_fw_defense_scene ds on ds.is_deleted = 0
            and dz.is_deleted = 0
            and dz.id = #{zoneId}
            and dz.defense_scene_ids is not null
            and dz.defense_scene_ids != ''
            and find_in_set(ds.id, replace(dz.defense_scene_ids, ' ', ''))
        join ja_fw_area_divide ad on ad.is_deleted = 0
            and ds.area_divide_ids is not null
            and ds.area_divide_ids != ''
            and find_in_set(ad.id, replace(ds.area_divide_ids, ' ', ''))
        left join ja_fw_police_station ps on ps.id = ad.police_station_id and ps.is_deleted = 0
    </select>
    <select id="selectFwDefenseZonePage" resultMap="fwDefenseZoneResultMap">
        select
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/service/IFwDefenseZoneService.java
@@ -19,6 +19,7 @@
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import org.sxkj.fw.area.dto.FwDefenseZoneDTO;
import org.sxkj.fw.area.entity.FwDefenseZoneEntity;
import org.sxkj.fw.area.vo.FwAreaDivideVO;
import org.sxkj.fw.area.vo.FwDefenseZoneVO;
import org.sxkj.fw.area.excel.FwDefenseZoneExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -49,6 +50,13 @@
     */
    FwDefenseZoneVO selectFwDefenseZoneDetail(Long id);
    /**
     * 根据防区id获取关联区域列表
     *
     * @param zoneId
     * @return
     */
    List<FwAreaDivideVO> selectFwAreaDivideListByZoneId(Long zoneId);
    /**
     * 导出数据
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/service/impl/FwDefenseZoneServiceImpl.java
@@ -23,6 +23,7 @@
import org.sxkj.fw.area.entity.FwAreaDivideEntity;
import org.sxkj.fw.area.entity.FwDefenseSceneEntity;
import org.sxkj.fw.area.entity.FwDefenseZoneEntity;
import org.sxkj.fw.area.vo.FwAreaDivideVO;
import org.sxkj.fw.area.vo.FwDefenseZoneVO;
import org.sxkj.fw.area.excel.FwDefenseZoneExcel;
import org.sxkj.fw.area.mapper.FwDefenseZoneMapper;
@@ -74,6 +75,22 @@
        return detail;
    }
    @Override
    public List<FwAreaDivideVO> selectFwAreaDivideListByZoneId(Long zoneId) {
        if (zoneId == null) {
            return Collections.emptyList();
        }
        Integer exists = baseMapper.selectDefenseZoneExists(zoneId);
        if (exists == null || exists == 0) {
            return null;
        }
        List<FwAreaDivideVO> areaList = baseMapper.selectFwAreaDivideListByZoneId(zoneId);
        if (areaList == null) {
            return Collections.emptyList();
        }
        return areaList;
    }
    private void fillDefenseZoneStatistics(List<FwDefenseZoneVO> records) {
        if (records == null || records.isEmpty()) {
            return;