diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java index 59c5b712e..5a2c7d238 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java @@ -618,5 +618,5 @@ public interface CommonGBChannelMapper { List queryListByDeviceIds(List deviceIds); @SelectProvider(type = ChannelProvider.class, method = "queryListWithChildForSy") - List queryListWithChildForSy(@Param("query") String query, @Param("sortName") String sortName, @Param("order") String order, @Param("groupList") List groupList, @Param("status") Boolean status); + List queryListWithChildForSy(@Param("query") String query, @Param("sortName") String sortName, @Param("order") Boolean order, @Param("groupList") List groupList, @Param("online") Boolean online); } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/GroupMapper.java b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/GroupMapper.java index 28cd52829..b2ddee18e 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/GroupMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/GroupMapper.java @@ -123,6 +123,7 @@ public interface GroupMapper { List queryByBusinessGroup(@Param("businessGroup") String businessGroup); @Select("SELECT * from wvp_common_group WHERE business_group = #{businessGroup} ") + @MapKey("id") Map queryByBusinessGroupForMap(@Param("businessGroup") String businessGroup); @Delete("DELETE FROM wvp_common_group WHERE business_group = #{businessGroup}") diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/ChannelProvider.java b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/ChannelProvider.java index cd38670de..d1d05ff54 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/ChannelProvider.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/ChannelProvider.java @@ -553,8 +553,7 @@ public class ChannelProvider { StringBuilder sqlBuild = new StringBuilder(); sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE); sqlBuild.append(" where wdc.channel_type = 0 AND (wdc.gb_ptz_type is null || wdc.gb_ptz_type != 99) " + - "AND coalesce(gb_parent_id, parent_id) = #{groupDeviceId} " + - "AND coalesce(gb_parent_id, parent_id) in ("); + " AND coalesce(wdc.gb_parent_id, wdc.parent_id) in ("); sqlBuild.append(" "); List groupList = (List)params.get("groupList"); @@ -563,7 +562,7 @@ public class ChannelProvider { if (!first) { sqlBuild.append(","); } - sqlBuild.append(group.getId()); + sqlBuild.append("'" + group.getDeviceId() + "'"); first = false; } sqlBuild.append(" )"); @@ -575,22 +574,52 @@ public class ChannelProvider { } if (params.get("online") != null && (Boolean)params.get("online")) { - sqlBuild.append(" AND coalesce(gb_status, status) = 'ON'"); + sqlBuild.append(" AND coalesce(wdc.gb_status, status) = 'ON'"); } if (params.get("online") != null && !(Boolean)params.get("online")) { - sqlBuild.append(" AND coalesce(gb_status, status) = 'OFF'"); + sqlBuild.append(" AND coalesce(wdc.gb_status, status) = 'OFF'"); } - if (params.get("sortName") != null) { - if (params.get("order") == null) { - sqlBuild.append(" order by #{sortName} "); - }else { - sqlBuild.append(" order by #{sortName} #{order}"); + StringBuilder sqlBuildForSort = new StringBuilder(); + sqlBuildForSort.append("select * from ( "); + sqlBuildForSort.append(sqlBuild); + sqlBuildForSort.append(" ) as temp"); + String sortName = (String)params.get("sortName"); + switch (sortName) { + case "gbId": + sqlBuildForSort.append(" order by gb_id "); + break; + case "gbDeviceId": + sqlBuildForSort.append(" order by gb_device_id "); + break; + case "gbName": + sqlBuildForSort.append(" order by gb_name "); + break; + case "gbStatus": + sqlBuildForSort.append(" order by gb_status "); + break; + case "createTime": + sqlBuildForSort.append(" order by create_time "); + break; + case "updateTime": + sqlBuildForSort.append(" order by update_time "); + break; + case "deviceCode": + sqlBuildForSort.append(" order by deviceCode "); + break; } + if (params.get("order") != null && (Boolean)params.get("order")) { + sqlBuildForSort.append(" ASC"); + } + if (params.get("order") != null && !(Boolean)params.get("order")) { + sqlBuildForSort.append(" DESC"); + } + return sqlBuildForSort.toString(); + }else { + return sqlBuild.toString(); } - return sqlBuild.toString(); } public String queryGbChannelByChannelDeviceIdAndGbDeviceId(Map params ){ diff --git a/src/main/java/com/genersoft/iot/vmp/web/custom/CameraChannelController.java b/src/main/java/com/genersoft/iot/vmp/web/custom/CameraChannelController.java index a43f5708e..63ec8c4e9 100644 --- a/src/main/java/com/genersoft/iot/vmp/web/custom/CameraChannelController.java +++ b/src/main/java/com/genersoft/iot/vmp/web/custom/CameraChannelController.java @@ -65,7 +65,7 @@ public class CameraChannelController { @Parameter(name = "count", description = "每页查询数量") @Parameter(name = "query", description = "查询内容") @Parameter(name = "sortName", description = "排序字段名") - @Parameter(name = "order", description = "排序方式(升序 asc 或降序 desc )") + @Parameter(name = "order", description = "排序方式(true: 升序 或 false: 降序 )") @Parameter(name = "groupAlias", description = "分组别名") @Parameter(name = "geoCoordSys", description = "坐标系类型:WGS84,GCJ02、BD09") @Parameter(name = "status", description = "摄像头状态") @@ -73,7 +73,7 @@ public class CameraChannelController { @RequestParam(required = false, value = "page", defaultValue = "100")Integer count, @RequestParam(required = false) String query, @RequestParam(required = false) String sortName, - @RequestParam(required = false) String order, + @RequestParam(required = false) Boolean order, String groupAlias, @RequestParam(required = false) String geoCoordSys, @RequestParam(required = false) Boolean status){ diff --git a/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java b/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java index 63145c4cc..2a4ed5dde 100644 --- a/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java +++ b/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java @@ -22,6 +22,7 @@ import com.genersoft.iot.vmp.web.custom.bean.CameraGroup; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.github.xiaoymin.knife4j.core.util.Assert; +import com.google.common.base.CaseFormat; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; @@ -84,7 +85,7 @@ public class CameraChannelService implements CommandLineRunner { return groupPageInfo; } - public PageInfo queryListWithChild(Integer page, Integer count, String query, String sortName, String order, String groupAlias, Boolean status, String geoCoordSys) { + public PageInfo queryListWithChild(Integer page, Integer count, String query, String sortName, Boolean order, String groupAlias, Boolean status, String geoCoordSys) { // 构建组织结构信息 CameraGroup group = groupMapper.queryGroupByAlias(groupAlias); Assert.notNull(group, "获取组织结构失败"); @@ -99,7 +100,9 @@ public class CameraChannelService implements CommandLineRunner { .replaceAll("%", "/%") .replaceAll("_", "/_"); } - + if (order == null) { + order = true; + } List all = channelMapper.queryListWithChildForSy(query, sortName, order, groupList, status); PageInfo groupPageInfo = new PageInfo<>(all); List list = addIconPathAndPositionForCameraChannelList(groupPageInfo.getList(), geoCoordSys);