吉安感知网项目-后端
rain
2026-01-29 c39de0df2cb8b9964228fd735bcec9c3332791a1
区域类型查询
9 files modified
68 ■■■■ changed files
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/controller/FwAreaDivideController.java 7 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/dto/FwAreaDivideDTO.java 8 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/mapper/FwAreaDivideExtMapper.xml 1 ●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/mapper/FwAreaDivideMapper.java 4 ●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/mapper/FwAreaDivideMapper.xml 14 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/service/IFwAreaDivideService.java 2 ●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/service/impl/FwAreaDivideServiceImpl.java 27 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/service/impl/FwDeviceScrapServiceImpl.java 3 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/service/impl/FwDeviceTrackServiceImpl.java 2 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/controller/FwAreaDivideController.java
@@ -84,11 +84,12 @@
     */
    @GetMapping("/list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "列表-不带分页", notes = "传入filterSelected或sceneId")
    @ApiOperation(value = "列表-不带分页", notes = "传入filterSelected或sceneId或areaTypeKeys")
    public R<List<FwAreaDivideVO>> list(
        @ApiParam(value = "是否过滤已被选择的数据(1过滤 0不过滤)") @RequestParam(required = false) Integer filterSelected,
        @ApiParam(value = "场景id") @RequestParam(required = false) Long sceneId) {
        List<FwAreaDivideVO> list = fwAreaDivideService.selectFwAreaDivideList(filterSelected, sceneId);
        @ApiParam(value = "场景id") @RequestParam(required = false) Long sceneId,
        @ApiParam(value = "区域类型key集合(逗号分隔)") @RequestParam(required = false) String areaTypeKeys) {
        List<FwAreaDivideVO> list = fwAreaDivideService.selectFwAreaDivideList(filterSelected, sceneId, areaTypeKeys);
        return R.data(list);
    }
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/dto/FwAreaDivideDTO.java
@@ -121,6 +121,14 @@
     */
    @ApiModelProperty(value = "区域编码")
    private String areaCode;
    /**
     * 区域类型key集合(逗号分隔)
     */
    @ApiModelProperty(value = "区域类型key集合(逗号分隔)")
    private String areaTypeKeys;
    @ApiModelProperty(value = "区域类型key集合", hidden = true)
    private List<String> areaTypeKeyList;
    @ApiModelProperty(value = "部门集合",hidden = true)
    private List<Long> deptList;
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/mapper/FwAreaDivideExtMapper.xml
@@ -32,6 +32,7 @@
            area_divide_id,
            area_type_key,
            area_type_value,
            geom_json,
            area_code,
            create_user,
            create_dept,
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/mapper/FwAreaDivideMapper.java
@@ -53,7 +53,9 @@
     * @param sceneId
     * @return
     */
    List<FwAreaDivideVO> selectFwAreaDivideList(@Param("filterSelected") Integer filterSelected, @Param("sceneId") Long sceneId);
    List<FwAreaDivideVO> selectFwAreaDivideList(@Param("filterSelected") Integer filterSelected,
        @Param("sceneId") Long sceneId,
        @Param("areaTypeKeyList") List<String> areaTypeKeyList);
    /**
     * 根据设备ID获取区域
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/mapper/FwAreaDivideMapper.xml
@@ -75,6 +75,13 @@
            <if test="param2.areaCode != null and param2.areaCode != ''">
                and ad.area_code = #{param2.areaCode}
            </if>
            <if test="param2.areaTypeKeyList != null and param2.areaTypeKeyList.size > 0">
                and (
                    <foreach collection="param2.areaTypeKeyList" item="key" separator=" or ">
                        find_in_set(#{key}, ad.area_type_keys)
                    </foreach>
                )
            </if>
            <if test="param2.deptList != null and param2.deptList.size > 0">
                and ad.create_dept in
                <foreach collection="param2.deptList" item="deptId" open="(" separator="," close=")">
@@ -128,6 +135,13 @@
                      and find_in_set(ad.id, replace(ds.area_divide_ids, ' ', ''))
                )
            </if>
            <if test="areaTypeKeyList != null and areaTypeKeyList.size > 0">
                and (
                    <foreach collection="areaTypeKeyList" item="key" separator=" or ">
                        find_in_set(#{key}, ad.area_type_keys)
                    </foreach>
                )
            </if>
        </where>
    </select>
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/service/IFwAreaDivideService.java
@@ -52,7 +52,7 @@
     * @param sceneId
     * @return
     */
    List<FwAreaDivideVO> selectFwAreaDivideList(Integer filterSelected, Long sceneId);
    List<FwAreaDivideVO> selectFwAreaDivideList(Integer filterSelected, Long sceneId, String areaTypeKeys);
    /**
     * 根据设备ID获取关联场景名称
drone-service/drone-fw/src/main/java/org/sxkj/fw/area/service/impl/FwAreaDivideServiceImpl.java
@@ -58,6 +58,7 @@
    public IPage<FwAreaDivideVO> selectFwAreaDividePage(IPage<FwAreaDivideVO> page, FwAreaDivideDTO fwAreaDivide) {
        List<Long> deptList = SysCache.getDeptChildIds(Long.valueOf(AuthUtil.getDeptId()));
        fwAreaDivide.setDeptList(deptList);
        fwAreaDivide.setAreaTypeKeyList(parseAreaTypeKeyList(fwAreaDivide.getAreaTypeKeys()));
        List<FwAreaDivideVO> areaDivideList = baseMapper.selectFwAreaDividePage(page, fwAreaDivide);
@@ -70,8 +71,9 @@
    }
    @Override
    public List<FwAreaDivideVO> selectFwAreaDivideList(Integer filterSelected, Long sceneId) {
        List<FwAreaDivideVO> areaDivideList = baseMapper.selectFwAreaDivideList(filterSelected, sceneId);
    public List<FwAreaDivideVO> selectFwAreaDivideList(Integer filterSelected, Long sceneId, String areaTypeKeys) {
        List<String> areaTypeKeyList = parseAreaTypeKeyList(areaTypeKeys);
        List<FwAreaDivideVO> areaDivideList = baseMapper.selectFwAreaDivideList(filterSelected, sceneId, areaTypeKeyList);
        // 获取面数据
        if (areaDivideList != null && !areaDivideList.isEmpty()) {
            enrichWithExtensionData(areaDivideList);
@@ -401,6 +403,27 @@
        return String.join(",", keySet);
    }
    private List<String> parseAreaTypeKeyList(String areaTypeKeys) {
        if (StringUtil.isBlank(areaTypeKeys)) {
            return null;
        }
        String[] keyArray = areaTypeKeys.split(",");
        Set<String> keySet = new LinkedHashSet<>();
        for (String item : keyArray) {
            if (item == null) {
                continue;
            }
            String value = item.trim();
            if (StringUtil.isNotBlank(value)) {
                keySet.add(value);
            }
        }
        if (keySet.isEmpty()) {
            return null;
        }
        return new ArrayList<>(keySet);
    }
    private List<Long> parseIdList(String ids) {
        if (StringUtil.isBlank(ids)) {
            return new ArrayList<>();
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/service/impl/FwDeviceScrapServiceImpl.java
@@ -57,11 +57,13 @@
    @Override
    @Transactional
    public boolean saveFwDeviceScrap(FwDeviceScrapDTO dto) {
        // 先保存报废记录,成功后再处理设备状态与逻辑删除
        boolean isSuccess = super.save(FwDeviceScrapWrapper.build().entityDTO(dto));
        if (isSuccess) {
            FwDeviceEntity fwDevice = new FwDeviceEntity();
            fwDevice.setId(dto.getDeviceId());
            fwDevice.setStatus(3);
            // 更新设备状态并做逻辑删除,保持报废与设备状态一致
            isSuccess = fwDeviceService.updateById(fwDevice) && fwDeviceService.deleteLogic(Collections.singletonList(fwDevice.getId()));
        }
        return isSuccess;
@@ -69,6 +71,7 @@
    @Override
    public IPage<FwDeviceScrapVO> selectFwDeviceScrapPage(IPage<FwDeviceScrapVO> page, FwDeviceScrapDTO fwDeviceScrap) {
        // 按当前部门及下级部门范围过滤数据
        List<Long> deptList = SysCache.getDeptChildIds(Long.valueOf(AuthUtil.getDeptId()));
        fwDeviceScrap.setDeptList(deptList);
        return page.setRecords(baseMapper.selectFwDeviceScrapPage(page, fwDeviceScrap));
drone-service/drone-fw/src/main/java/org/sxkj/fw/device/service/impl/FwDeviceTrackServiceImpl.java
@@ -39,12 +39,14 @@
    @Override
    public IPage<FwDeviceTrackEntity> selectFwDeviceTrackPage(IPage<FwDeviceTrackEntity> page, FwDeviceTrackDTO fwDeviceTrack) {
        // 分页查询直接透传到 Mapper
        return page.setRecords(baseMapper.selectFwDeviceTrackPage(page, fwDeviceTrack));
    }
    @Override
    public List<FwDeviceTrackExcel> exportFwDeviceTrack(Wrapper<FwDeviceTrackEntity> queryWrapper) {
        // 导出不做额外转换,保持与导出字段一致
        List<FwDeviceTrackExcel> fwDeviceTrackList = baseMapper.exportFwDeviceTrack(queryWrapper);
        //fwDeviceTrackList.forEach(fwDeviceTrack -> {
        //    fwDeviceTrack.setTypeName(DictCache.getValue(DictEnum.YES_NO, FwDeviceTrack.getType()));