45 changed files with 473 additions and 651 deletions
@ -0,0 +1,45 @@ |
|||
package org.dromara.business.controller; |
|||
|
|||
|
|||
import io.swagger.v3.oas.annotations.tags.Tag; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.dromara.common.web.core.BaseController; |
|||
import org.springframework.validation.annotation.Validated; |
|||
import org.springframework.web.bind.annotation.PostMapping; |
|||
import org.springframework.web.bind.annotation.RequestBody; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
/** |
|||
* ZLMediaKit视频流事件回调 |
|||
*/ |
|||
@Validated |
|||
@RequiredArgsConstructor |
|||
@RestController |
|||
@RequestMapping("/index/hook") |
|||
@Tag(name = "ZLMediaKit视频流事件回调") |
|||
@Slf4j |
|||
public class WebhookController { |
|||
|
|||
|
|||
/** |
|||
* 处理播放事件 |
|||
*/ |
|||
@PostMapping("/on_play") |
|||
public String onPlay(@RequestBody String body) { |
|||
log.info("on_play event: {}", body); |
|||
|
|||
return "{\"code\": 0}"; |
|||
} |
|||
|
|||
/** |
|||
* 处理录制 MP4 文件事件 |
|||
*/ |
|||
@PostMapping("/on_record_mp4") |
|||
public String onRecordMp4(@RequestBody String body) { |
|||
log.info("on_record_mp4 event: {}", body); |
|||
|
|||
return "{\"code\": 0}"; |
|||
} |
|||
} |
@ -1,30 +0,0 @@ |
|||
package org.dromara.business.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|||
import org.apache.ibatis.annotations.Param; |
|||
import org.dromara.business.domain.BusinessDepartBoundary; |
|||
import org.dromara.common.mybatis.annotation.DataColumn; |
|||
import org.dromara.common.mybatis.annotation.DataPermission; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 部门 Mapper 接口 |
|||
*/ |
|||
public interface BusinessDepartBoundaryMapper extends BaseMapper<BusinessDepartBoundary> { |
|||
Page<BusinessDepartBoundary> listSysDepartBoundary(Page<BusinessDepartBoundary> page,@Param("condition") BusinessDepartBoundary sysDepartBoundary); |
|||
|
|||
List<BusinessDepartBoundary> listSysDepartBoundaryGeomFromText(@Param("condition") BusinessDepartBoundary sysDepartBoundary); |
|||
/** |
|||
* 通过部门编码获取部门边界数据 |
|||
* @param deptId 部门编码 |
|||
* @return String |
|||
*/ |
|||
List<BusinessDepartBoundary> queryByDeptId(@Param("deptId") String deptId); |
|||
|
|||
void saveBatchBoundary(@Param("list") List<BusinessDepartBoundary> boundaryList); |
|||
|
|||
String listJson(@Param("param") BusinessDepartBoundary departBoundary); |
|||
|
|||
} |
@ -1,22 +0,0 @@ |
|||
package org.dromara.business.mapper; |
|||
|
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|||
import org.apache.ibatis.annotations.Param; |
|||
import org.dromara.business.domain.BusinessPatrolAreas; |
|||
import org.dromara.business.domain.bo.BusinessPatrolAreasBo; |
|||
|
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Description: 巡查区域 |
|||
*/ |
|||
public interface BusinessPatrolAreasMapper extends BaseMapper<BusinessPatrolAreas> { |
|||
|
|||
IPage<BusinessPatrolAreas> listPatrolAreas(Page<BusinessPatrolAreas> page, @Param("condition") BusinessPatrolAreasBo patrolAreasBo, @Param("deptIds") List<String> deptIds); |
|||
|
|||
List<BusinessPatrolAreas> listPatrolAreas(@Param("condition") BusinessPatrolAreasBo patrolAreasBo, @Param("deptIds") List<String> deptIds); |
|||
} |
@ -1,8 +0,0 @@ |
|||
package org.dromara.business.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import org.dromara.business.domain.BusinessVectorDictItem; |
|||
|
|||
public interface BusinessVectorDictItemMapper extends BaseMapper<BusinessVectorDictItem> { |
|||
|
|||
} |
@ -1,10 +0,0 @@ |
|||
package org.dromara.business.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import org.dromara.business.domain.BusinessVectorDict; |
|||
|
|||
import java.util.List; |
|||
|
|||
public interface BusinessVectorDictMapper extends BaseMapper<BusinessVectorDict> { |
|||
List<BusinessVectorDict> listVectorField(); |
|||
} |
@ -1,30 +0,0 @@ |
|||
package org.dromara.business.service; |
|||
|
|||
import com.baomidou.mybatisplus.extension.service.IService; |
|||
import org.dromara.business.domain.BusinessDepartBoundary; |
|||
import org.dromara.common.mybatis.core.page.PageQuery; |
|||
import org.dromara.common.mybatis.core.page.TableDataInfo; |
|||
import org.springframework.web.multipart.MultipartFile; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 部门区域 服务实现类 |
|||
*/ |
|||
public interface IBusinessDepartBoundaryService extends IService<BusinessDepartBoundary>{ |
|||
TableDataInfo<BusinessDepartBoundary> listSysDepartBoundary(PageQuery page, BusinessDepartBoundary departBoundary); |
|||
|
|||
List<BusinessDepartBoundary> listSysDepartBoundaryGeomFromText(BusinessDepartBoundary departBoundary); |
|||
|
|||
List<BusinessDepartBoundary> queryByDeptId(String deptId); |
|||
|
|||
boolean uploadShpFile(MultipartFile file,Integer areaType); |
|||
|
|||
boolean deleteDepartBoundary(String id); |
|||
|
|||
boolean updateDepartBoundary(BusinessDepartBoundary departBoundary); |
|||
|
|||
boolean addDepartBoundary(BusinessDepartBoundary departBoundary); |
|||
|
|||
String listJson(BusinessDepartBoundary departBoundary); |
|||
} |
@ -1,29 +0,0 @@ |
|||
package org.dromara.business.service; |
|||
|
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|||
import com.baomidou.mybatisplus.extension.service.IService; |
|||
import org.apache.ibatis.annotations.Param; |
|||
import org.dromara.business.domain.BusinessPatrolAreas; |
|||
import org.dromara.business.domain.bo.BusinessPatrolAreasBo; |
|||
import org.dromara.common.mybatis.core.page.PageQuery; |
|||
import org.dromara.common.mybatis.core.page.TableDataInfo; |
|||
import org.springframework.web.multipart.MultipartFile; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @Description: 巡查区域 |
|||
*/ |
|||
public interface IBusinessPatrolAreasService extends IService<BusinessPatrolAreas> { |
|||
TableDataInfo<BusinessPatrolAreas> pagePatrolAreas(PageQuery pageQuery, BusinessPatrolAreasBo patrolAreasBo); |
|||
|
|||
List<BusinessPatrolAreas> listPatrolAreas(BusinessPatrolAreasBo patrolAreasBo); |
|||
|
|||
void addPatrolAreas(MultipartFile file); |
|||
|
|||
boolean updatePatrolAreas(BusinessPatrolAreas patrolAreas); |
|||
|
|||
List<BusinessPatrolAreas> exportXls(BusinessPatrolAreas patrolAreas); |
|||
|
|||
} |
@ -1,12 +0,0 @@ |
|||
package org.dromara.business.service; |
|||
|
|||
|
|||
import org.dromara.business.domain.BusinessVectorDictItem; |
|||
|
|||
import java.util.List; |
|||
|
|||
public interface IBusinessVectorDictItemService { |
|||
|
|||
List<BusinessVectorDictItem> findDictItemByDictId(String dictId); |
|||
|
|||
} |
@ -1,17 +0,0 @@ |
|||
package org.dromara.business.service; |
|||
|
|||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|||
import org.dromara.business.domain.BusinessVectorDict; |
|||
|
|||
import java.util.List; |
|||
|
|||
public interface IBusinessVectorDictService { |
|||
|
|||
List<BusinessVectorDict> listVectorField(); |
|||
|
|||
BusinessVectorDict findVectorDictById(String dictId); |
|||
|
|||
|
|||
} |
@ -1,197 +0,0 @@ |
|||
package org.dromara.business.service.impl; |
|||
|
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|||
import lombok.RequiredArgsConstructor; |
|||
import org.apache.commons.lang.StringUtils; |
|||
import org.apache.dubbo.config.annotation.DubboReference; |
|||
import org.dromara.business.domain.*; |
|||
import org.dromara.business.domain.bo.BusinessPatrolAreasBo; |
|||
import org.dromara.business.mapper.BusinessPatrolAreasMapper; |
|||
import org.dromara.business.service.*; |
|||
import org.dromara.business.utils.ShpAnalysisUtil; |
|||
import org.dromara.common.core.exception.ServiceException; |
|||
import org.dromara.common.mybatis.core.page.PageQuery; |
|||
import org.dromara.common.mybatis.core.page.TableDataInfo; |
|||
import org.dromara.common.satoken.utils.LoginHelper; |
|||
import org.dromara.system.api.RemoteDeptService; |
|||
import org.dromara.system.api.RemoteUserService; |
|||
import org.dromara.system.api.domain.vo.RemoteDeptVo; |
|||
import org.dromara.system.api.model.LoginUser; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
import org.springframework.web.multipart.MultipartFile; |
|||
|
|||
import java.io.InputStream; |
|||
import java.lang.reflect.Method; |
|||
import java.util.*; |
|||
import java.util.stream.Collectors; |
|||
|
|||
/** |
|||
* @Description: 巡查区域 |
|||
*/ |
|||
@RequiredArgsConstructor |
|||
@Service |
|||
public class BusinessPatrolAreasServiceImpl extends ServiceImpl<BusinessPatrolAreasMapper, BusinessPatrolAreas> implements IBusinessPatrolAreasService { |
|||
|
|||
private final IBusinessVectorDictService vectorDictService; |
|||
|
|||
@DubboReference |
|||
private RemoteUserService remoteUserService; |
|||
@DubboReference |
|||
private RemoteDeptService remoteDeptService; |
|||
|
|||
@Override |
|||
public TableDataInfo<BusinessPatrolAreas> pagePatrolAreas(PageQuery pageQuery, BusinessPatrolAreasBo patrolAreasBo) { |
|||
LoginUser user = LoginHelper.getLoginUser(); |
|||
List<String> deptIds = new ArrayList<>(); |
|||
String departIds = null; |
|||
if(StringUtils.isBlank(patrolAreasBo.getDeptId())){ |
|||
RemoteDeptVo remoteDeptVo = remoteDeptService.selectDeptById(user.getDeptId()); |
|||
if(ObjectUtil.isEmpty(remoteDeptVo)){ |
|||
throw new ServiceException("部门不存在"); |
|||
} |
|||
departIds = user.getDeptId() + ""; |
|||
}else { |
|||
departIds = patrolAreasBo.getDeptId(); |
|||
} |
|||
|
|||
deptIds.add(departIds); |
|||
|
|||
return TableDataInfo.build(this.baseMapper.listPatrolAreas(pageQuery.build(), patrolAreasBo, deptIds)); |
|||
} |
|||
|
|||
@Override |
|||
public List<BusinessPatrolAreas> listPatrolAreas(BusinessPatrolAreasBo patrolAreasBo) { |
|||
return this.baseMapper.listPatrolAreas(patrolAreasBo, patrolAreasBo.getDeptIds()); |
|||
} |
|||
|
|||
@Override |
|||
@Transactional(rollbackFor = Exception.class) |
|||
public boolean updatePatrolAreas(BusinessPatrolAreas patrolAreas) { |
|||
patrolAreas.setUserName(remoteUserService.selectUserNameById(Long.valueOf(patrolAreas.getUserId()))); |
|||
return this.updateById(patrolAreas); |
|||
} |
|||
|
|||
@Override |
|||
public List<BusinessPatrolAreas> exportXls(BusinessPatrolAreas patrolAreas) { |
|||
LambdaQueryWrapper<BusinessPatrolAreas> wrapper = buildWrapper(patrolAreas); |
|||
|
|||
return this.list(wrapper); |
|||
} |
|||
|
|||
@Override |
|||
public void addPatrolAreas(MultipartFile file) { |
|||
List<BusinessGeospatialVectors> geospatialVectorsList = new ArrayList<>(); |
|||
try { |
|||
//1、首先调用解析工具拿到解析的字段集合
|
|||
InputStream inputStream = file.getInputStream(); |
|||
List<Map<String, String>> mapList = ShpAnalysisUtil.analysisShpFile(inputStream); |
|||
|
|||
// 3. 构建字典map
|
|||
List<BusinessVectorDict> fieldsInfoList = vectorDictService.listVectorField(); |
|||
|
|||
Map<String, List<String>> dictMap = fieldsInfoList |
|||
.stream() |
|||
.collect(Collectors.toMap( |
|||
BusinessVectorDict::getDictCode, |
|||
v -> v.getFieldMappingsList().stream() |
|||
.map(mapping -> mapping.getItemValue().toLowerCase()) // 转小写
|
|||
.collect(Collectors.toList()) |
|||
)); |
|||
|
|||
// 4. 遍历 mapList,替换映射关系并只保留有效条目
|
|||
List<Map<String, String>> resultList = mapList.stream() |
|||
.map(originalMap -> originalMap.entrySet().stream() |
|||
.filter(entry -> { |
|||
String keyLower = entry.getKey().toLowerCase(); // 将 mapList 中的 key 转换为小写
|
|||
// 遍历 dictMap 的所有 List<String>,检查其中是否包含该 key
|
|||
return dictMap.values().stream() |
|||
.anyMatch(list -> list.contains(keyLower)); // 判断 dictMap 中的 List<String> 是否包含该 key
|
|||
}) |
|||
.collect(Collectors.toMap( |
|||
entry -> { |
|||
// 根据匹配的 key 查找 dictMap 中对应的 key
|
|||
return dictMap.entrySet().stream() |
|||
.filter(mapEntry -> mapEntry.getValue().contains(entry.getKey().toLowerCase())) |
|||
.map(Map.Entry::getKey) |
|||
.findFirst() |
|||
.orElse(""); // 如果没有匹配到,则返回空字符串
|
|||
}, |
|||
Map.Entry::getValue |
|||
)) |
|||
) |
|||
.filter(transformedMap -> !transformedMap.isEmpty()) // 过滤空的 Map
|
|||
.collect(Collectors.toList()); |
|||
|
|||
|
|||
// 5. 通过反射设置 GeospatialVectors 对象的属性
|
|||
for (Map<String, String> transformedMap : resultList) { |
|||
BusinessGeospatialVectors geoVector = new BusinessGeospatialVectors(); |
|||
|
|||
transformedMap.forEach((key, value) -> { |
|||
try { |
|||
// 尝试通过反射找到相应的Setter方法,并调用
|
|||
Method setterMethod = BusinessGeospatialVectors.class.getMethod("set" + capitalizeFirstLetter(key), String.class); |
|||
|
|||
setterMethod.invoke(geoVector, value); |
|||
} catch (Exception e) { |
|||
e.printStackTrace(); |
|||
} |
|||
}); |
|||
|
|||
geoVector.setCreateTime(new Date()); |
|||
geospatialVectorsList.add(geoVector); |
|||
} |
|||
|
|||
//6、生成新的对象集合存储数据表中
|
|||
//todo 处理这个集合geospatialVectorsList
|
|||
List<BusinessPatrolAreas> areasList = buildBusinessPatrolAreas(geospatialVectorsList); |
|||
|
|||
|
|||
} catch (Exception e) { |
|||
e.printStackTrace(); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 根据解析shp得到的内容封装到BusinessPatrolAreas这个类里面 |
|||
* @param paramList |
|||
* @return |
|||
*/ |
|||
private List<BusinessPatrolAreas> buildBusinessPatrolAreas(List<BusinessGeospatialVectors> paramList) { |
|||
List<BusinessPatrolAreas> resultList = new ArrayList<>(); |
|||
|
|||
return resultList; |
|||
} |
|||
|
|||
private static String capitalizeFirstLetter(String str) { |
|||
if (str == null || str.isEmpty()) { |
|||
return str; |
|||
} |
|||
return str.substring(0, 1).toUpperCase() + str.substring(1); |
|||
} |
|||
|
|||
private LambdaQueryWrapper<BusinessPatrolAreas> buildWrapper(BusinessPatrolAreas patrolAreas) { |
|||
LambdaQueryWrapper<BusinessPatrolAreas> wrapper = new LambdaQueryWrapper<>(); |
|||
|
|||
if (ObjectUtil.isNotEmpty(patrolAreas.getName())){ |
|||
wrapper.like(BusinessPatrolAreas::getName, patrolAreas.getName()); |
|||
} |
|||
|
|||
if (ObjectUtil.isNotEmpty(patrolAreas.getDeptId())){ |
|||
wrapper.eq(BusinessPatrolAreas::getDeptId, patrolAreas.getDeptId()); |
|||
} |
|||
|
|||
if (ObjectUtil.isNotEmpty(patrolAreas.getAreasIdList())){ |
|||
wrapper.in(BusinessPatrolAreas::getId, patrolAreas.getAreasIdList()); |
|||
} |
|||
|
|||
return wrapper; |
|||
} |
|||
} |
@ -1,28 +0,0 @@ |
|||
package org.dromara.business.service.impl; |
|||
|
|||
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|||
import org.dromara.business.domain.BusinessVectorDictItem; |
|||
import org.dromara.business.mapper.BusinessVectorDictItemMapper; |
|||
import org.dromara.business.service.IBusinessVectorDictItemService; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.List; |
|||
|
|||
|
|||
/** |
|||
* 矢量数据字段映射关联服务类 |
|||
*/ |
|||
@Service |
|||
public class BusinessVectorDictItemServiceImpl extends ServiceImpl<BusinessVectorDictItemMapper, BusinessVectorDictItem> implements IBusinessVectorDictItemService { |
|||
|
|||
|
|||
@Override |
|||
public List<BusinessVectorDictItem> findDictItemByDictId(String dictId) { |
|||
LambdaQueryWrapper<BusinessVectorDictItem> wrapper = new LambdaQueryWrapper<>(); |
|||
wrapper.eq(BusinessVectorDictItem::getDictId, dictId); |
|||
|
|||
return this.baseMapper.selectList(wrapper); |
|||
} |
|||
} |
@ -1,37 +0,0 @@ |
|||
package org.dromara.business.service.impl; |
|||
|
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|||
import org.dromara.business.domain.BusinessVectorDict; |
|||
import org.dromara.business.mapper.BusinessVectorDictMapper; |
|||
import org.dromara.business.service.IBusinessVectorDictService; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.List; |
|||
|
|||
|
|||
/** |
|||
* 矢量数据字段映射主表服务类 |
|||
*/ |
|||
@Service |
|||
public class BusinessVectorDictServiceImpl extends ServiceImpl<BusinessVectorDictMapper, BusinessVectorDict> implements IBusinessVectorDictService { |
|||
|
|||
|
|||
@Override |
|||
public List<BusinessVectorDict> listVectorField() { |
|||
return this.baseMapper.listVectorField(); |
|||
} |
|||
|
|||
@Override |
|||
public BusinessVectorDict findVectorDictById(String dictId) { |
|||
if (ObjectUtil.isEmpty(dictId)){ |
|||
throw new RuntimeException("【dictId】为空,参数为空!"); |
|||
} |
|||
|
|||
LambdaQueryWrapper<BusinessVectorDict> wrapper = new LambdaQueryWrapper<>(); |
|||
wrapper.eq(BusinessVectorDict::getId, dictId); |
|||
|
|||
return this.baseMapper.selectOne(wrapper); |
|||
} |
|||
} |
@ -1,55 +0,0 @@ |
|||
<?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="org.dromara.business.mapper.BusinessPatrolAreasMapper"> |
|||
<resultMap id="listPatrolAreasMap" type="org.dromara.business.domain.BusinessPatrolAreas"> |
|||
<result column="id" property="id" jdbcType="VARCHAR"/> |
|||
<result column="name" property="name" jdbcType="VARCHAR"/> |
|||
<result column="number" property="number" jdbcType="VARCHAR"/> |
|||
<result column="dept_id" property="deptId" jdbcType="VARCHAR"/> |
|||
<result column="dept_ids" property="deptIds" jdbcType="VARCHAR"/> |
|||
<result column="platform_type" property="platformType" jdbcType="VARCHAR"/> |
|||
<result column="dept_name" property="deptName" jdbcType="VARCHAR"/> |
|||
<result column="leader_dept_id" property="leaderDeptId" jdbcType="VARCHAR"/> |
|||
<result column="user_id" property="userId" jdbcType="VARCHAR"/> |
|||
<result column="user_name" property="userName" jdbcType="VARCHAR"/> |
|||
<result column="create_by" property="createBy" jdbcType="VARCHAR"/> |
|||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/> |
|||
<collection column="{areaId=id}" |
|||
property="patrolAreasUsers" ofType="org.dromara.business.domain.BusinessPatrolAreasUser" |
|||
javaType="java.util.ArrayList" |
|||
select="org.dromara.business.mapper.BusinessPatrolAreasUserMapper.listPatrolAreasUserByAreaId"/> |
|||
<collection column="{areaId=id}" |
|||
property="patrolAreasPoints" ofType="org.dromara.business.domain.BusinessPatrolAreasPoints" |
|||
javaType="java.util.ArrayList" |
|||
select="org.dromara.business.mapper.BusinessPatrolAreasPointsMapper.listPatrolAreasPointByAreaId"/> |
|||
</resultMap> |
|||
<select id="listPatrolAreas" resultMap="listPatrolAreasMap"> |
|||
select pa.*,sd.dept_name as dept_name from business_patrol_areas pa |
|||
LEFT JOIN dk_cloud.sys_dept sd ON pa.dept_id = sd.dept_id |
|||
where |
|||
pa.del_flag = 0 |
|||
<if test="deptIds.size > 0"> |
|||
and pa.dept_id in |
|||
<foreach item="id" collection="deptIds" open="(" separator="," close=")"> |
|||
#{id} |
|||
</foreach> |
|||
</if> |
|||
<if test="condition.name != null and condition.name != ''"> |
|||
and pa.name LIKE concat(concat('%',#{condition.name}),'%') |
|||
</if> |
|||
<if test="condition.platformType != null and condition.platformType != ''"> |
|||
AND pa.id IN ( |
|||
SELECT api.patrol_areas_id |
|||
FROM business_patrol_areas_platform_info api |
|||
|
|||
WHERE api.platform_type = 'plough' |
|||
) |
|||
</if> |
|||
<if test="condition.name != null and condition.name != ''"> |
|||
and pa.name LIKE concat(concat('%',#{condition.name}),'%') |
|||
</if> |
|||
<if test="condition.isDisable != null and condition.isDisable != ''"> |
|||
and pa.is_disable =#{condition.isDisable} |
|||
</if> |
|||
</select> |
|||
</mapper> |
@ -0,0 +1,28 @@ |
|||
package org.dromara.system.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|||
import org.apache.ibatis.annotations.Param; |
|||
import org.dromara.system.domain.SysDepartBoundary; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 部门 Mapper 接口 |
|||
*/ |
|||
public interface SysDepartBoundaryMapper extends BaseMapper<SysDepartBoundary> { |
|||
Page<SysDepartBoundary> listSysDepartBoundary(Page<SysDepartBoundary> page,@Param("condition") SysDepartBoundary sysDepartBoundary); |
|||
|
|||
List<SysDepartBoundary> listSysDepartBoundaryGeomFromText(@Param("condition") SysDepartBoundary sysDepartBoundary); |
|||
/** |
|||
* 通过部门编码获取部门边界数据 |
|||
* @param deptId 部门编码 |
|||
* @return String |
|||
*/ |
|||
List<SysDepartBoundary> queryByDeptId(@Param("deptId") String deptId); |
|||
|
|||
void saveBatchBoundary(@Param("list") List<SysDepartBoundary> boundaryList); |
|||
|
|||
String listJson(@Param("param") SysDepartBoundary departBoundary); |
|||
|
|||
} |
@ -0,0 +1,8 @@ |
|||
package org.dromara.system.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import org.dromara.system.domain.SysVectorDictItem; |
|||
|
|||
public interface SysVectorDictItemMapper extends BaseMapper<SysVectorDictItem> { |
|||
|
|||
} |
@ -0,0 +1,10 @@ |
|||
package org.dromara.system.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import org.dromara.system.domain.SysVectorDict; |
|||
|
|||
import java.util.List; |
|||
|
|||
public interface SysVectorDictMapper extends BaseMapper<SysVectorDict> { |
|||
List<SysVectorDict> listVectorField(); |
|||
} |
@ -0,0 +1,30 @@ |
|||
package org.dromara.system.service; |
|||
|
|||
import com.baomidou.mybatisplus.extension.service.IService; |
|||
import org.dromara.system.domain.SysDepartBoundary; |
|||
import org.dromara.common.mybatis.core.page.PageQuery; |
|||
import org.dromara.common.mybatis.core.page.TableDataInfo; |
|||
import org.springframework.web.multipart.MultipartFile; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 部门区域 服务实现类 |
|||
*/ |
|||
public interface ISysDepartBoundaryService extends IService<SysDepartBoundary>{ |
|||
TableDataInfo<SysDepartBoundary> listSysDepartBoundary(PageQuery page, SysDepartBoundary departBoundary); |
|||
|
|||
List<SysDepartBoundary> listSysDepartBoundaryGeomFromText(SysDepartBoundary departBoundary); |
|||
|
|||
List<SysDepartBoundary> queryByDeptId(String deptId); |
|||
|
|||
boolean uploadShpFile(MultipartFile file,Integer areaType); |
|||
|
|||
boolean deleteDepartBoundary(String id); |
|||
|
|||
boolean updateDepartBoundary(SysDepartBoundary departBoundary); |
|||
|
|||
boolean addDepartBoundary(SysDepartBoundary departBoundary); |
|||
|
|||
String listJson(SysDepartBoundary departBoundary); |
|||
} |
@ -0,0 +1,12 @@ |
|||
package org.dromara.system.service; |
|||
|
|||
|
|||
import org.dromara.system.domain.SysVectorDictItem; |
|||
|
|||
import java.util.List; |
|||
|
|||
public interface ISysVectorDictItemService { |
|||
|
|||
List<SysVectorDictItem> findDictItemByDictId(String dictId); |
|||
|
|||
} |
@ -0,0 +1,14 @@ |
|||
package org.dromara.system.service; |
|||
|
|||
import org.dromara.system.domain.SysVectorDict; |
|||
|
|||
import java.util.List; |
|||
|
|||
public interface ISysVectorDictService { |
|||
|
|||
List<SysVectorDict> listVectorField(); |
|||
|
|||
SysVectorDict findVectorDictById(String dictId); |
|||
|
|||
|
|||
} |
@ -0,0 +1,28 @@ |
|||
package org.dromara.system.service.impl; |
|||
|
|||
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|||
import org.dromara.system.domain.SysVectorDictItem; |
|||
import org.dromara.system.mapper.SysVectorDictItemMapper; |
|||
import org.dromara.system.service.ISysVectorDictItemService; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.List; |
|||
|
|||
|
|||
/** |
|||
* 矢量数据字段映射关联服务类 |
|||
*/ |
|||
@Service |
|||
public class SysVectorDictItemServiceImpl extends ServiceImpl<SysVectorDictItemMapper, SysVectorDictItem> implements ISysVectorDictItemService { |
|||
|
|||
|
|||
@Override |
|||
public List<SysVectorDictItem> findDictItemByDictId(String dictId) { |
|||
LambdaQueryWrapper<SysVectorDictItem> wrapper = new LambdaQueryWrapper<>(); |
|||
wrapper.eq(SysVectorDictItem::getDictId, dictId); |
|||
|
|||
return this.baseMapper.selectList(wrapper); |
|||
} |
|||
} |
@ -0,0 +1,37 @@ |
|||
package org.dromara.system.service.impl; |
|||
|
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|||
import org.dromara.system.domain.SysVectorDict; |
|||
import org.dromara.system.mapper.SysVectorDictMapper; |
|||
import org.dromara.system.service.ISysVectorDictService; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.List; |
|||
|
|||
|
|||
/** |
|||
* 矢量数据字段映射主表服务类 |
|||
*/ |
|||
@Service |
|||
public class SysVectorDictServiceImpl extends ServiceImpl<SysVectorDictMapper, SysVectorDict> implements ISysVectorDictService { |
|||
|
|||
|
|||
@Override |
|||
public List<SysVectorDict> listVectorField() { |
|||
return this.baseMapper.listVectorField(); |
|||
} |
|||
|
|||
@Override |
|||
public SysVectorDict findVectorDictById(String dictId) { |
|||
if (ObjectUtil.isEmpty(dictId)){ |
|||
throw new RuntimeException("【dictId】为空,参数为空!"); |
|||
} |
|||
|
|||
LambdaQueryWrapper<SysVectorDict> wrapper = new LambdaQueryWrapper<>(); |
|||
wrapper.eq(SysVectorDict::getId, dictId); |
|||
|
|||
return this.baseMapper.selectOne(wrapper); |
|||
} |
|||
} |
@ -0,0 +1,39 @@ |
|||
package org.dromara.system.utils; |
|||
|
|||
import java.util.List; |
|||
import java.util.function.Consumer; |
|||
|
|||
/** |
|||
* 分批处理工具类 |
|||
*/ |
|||
public class BatchProcessorUtil { |
|||
|
|||
/** |
|||
* 分批处理数据 |
|||
* |
|||
* @param dataList 数据集合 |
|||
* @param batchSize 每批处理的数据量 |
|||
* @param startIndex 起始位置 |
|||
* @param batchHandler 每批数据的处理逻辑 |
|||
* @return 下一次的起始位置 |
|||
*/ |
|||
public static <T> boolean processBatches(List<T> dataList, int batchSize, int startIndex, Consumer<List<T>> batchHandler) { |
|||
if (dataList == null || dataList.isEmpty()) { |
|||
return true; // 数据为空,直接返回当前起始位置
|
|||
} |
|||
|
|||
int totalSize = dataList.size(); |
|||
while (startIndex < totalSize) { |
|||
int endIndex = Math.min(startIndex + batchSize, totalSize); |
|||
List<T> batch = dataList.subList(startIndex, endIndex); |
|||
|
|||
// 处理当前批次的数据
|
|||
batchHandler.accept(batch); |
|||
|
|||
// 更新起始位置
|
|||
startIndex = endIndex; |
|||
} |
|||
|
|||
return startIndex >= totalSize; // 返回下一次的起始位置
|
|||
} |
|||
} |
@ -1,4 +1,4 @@ |
|||
package org.dromara.business.utils; |
|||
package org.dromara.system.utils; |
|||
|
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import org.geotools.data.FileDataStore; |
@ -1,6 +1,6 @@ |
|||
<?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="org.dromara.business.mapper.BusinessVectorDictItemMapper"> |
|||
<mapper namespace="org.dromara.system.mapper.SysVectorDictItemMapper"> |
|||
|
|||
|
|||
|
Loading…
Reference in new issue