소스 검색

新增设备按管理员分组接口

hechunping 1 년 전
부모
커밋
e58a00d40e

+ 2 - 0
device-api-service/src/main/java/com/xy/mapper/DeviceInfoMapper.java

@@ -39,4 +39,6 @@ public interface DeviceInfoMapper extends BaseMapper<DeviceInfo> {
     List<DeviceInfoDto.NetStateCount> netStateCount(@Param("mercIdList") List<Long> mercIdList);
 
     List<DeviceInfoDto.PlaceDeviceNumVo> placeDeviceNum(@Param("dto") DeviceInfoDto.PlaceDeviceNumDto dto);
+
+    List<DeviceInfoDto.GroupByAdminName> groupByAdminName(@Param("dto") DeviceInfoDto.GroupByAdminNameDto dto);
 }

+ 45 - 3
device-api-service/src/main/java/com/xy/service/DeviceInfoServiceImpl.java

@@ -108,6 +108,48 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
 
     private final MercPlaceService mercPlaceService;
 
+    @PostMapping("groupByAdminName")
+    @ApiOperation("设备按管理员分组")
+    public R groupByAdminName(@RequestBody @Validated DeviceInfoDto.GroupByAdminNameDto dto) {
+        String noAdmin = "未分配管理员";
+        List<DeviceInfoDto.GroupByAdminName> deviceInfoList = baseMapper.groupByAdminName(dto);
+        deviceInfoList.forEach(i->{
+            SysDictRedis dictDeviceType = SysDictUtils.get(DictConsts.DEVICE_TYPE, String.valueOf(i.getDeviceType()));
+            i.setDeviceTypeName(dictDeviceType.getMsg());
+            if(!Emptys.check(i.getDeviceName())){
+                i.setDeviceName("");
+            }
+        });
+
+        //没有管理员的的设置默认值
+        deviceInfoList.stream().filter(s -> s.getAdminName() == null).forEach(s -> s.setAdminName(noAdmin));
+        //根据管理员名字分组
+        Map<String, List<DeviceInfoDto.GroupByAdminName>> deviceMap = deviceInfoList.stream().collect(Collectors.groupingBy(DeviceInfoDto.GroupByAdminName::getAdminName));
+        List<DeviceInfoDto.GroupByAdminNameVo> list = new ArrayList<>();
+        //不包含未分配管理员的
+        deviceMap.forEach(
+                (k,i)->{
+                    DeviceInfoDto.GroupByAdminNameVo vo = new DeviceInfoDto.GroupByAdminNameVo();
+                    if(!noAdmin.equals(k)){
+                        vo.setAdminName(k)
+                                .setDeviceNum(i.size())
+                                .setDeviceInfos(i);
+                        list.add(vo);
+                    }
+                }
+        );
+        //包含分配管理员的
+        List<DeviceInfoDto.GroupByAdminName> noAdminNamesList = deviceMap.get(noAdmin);
+        if(Emptys.check(noAdminNamesList)){
+            DeviceInfoDto.GroupByAdminNameVo vo = new DeviceInfoDto.GroupByAdminNameVo();
+            vo.setAdminName(noAdmin)
+                    .setDeviceNum(noAdminNamesList.size())
+                    .setDeviceInfos(noAdminNamesList);
+            list.add(vo);
+        }
+        return R.ok(list);
+    }
+
     @PostMapping("eventList")
     @ApiOperation("根据事件编码查询设备")
     public R<PageBean<DeviceInfoDto.EventListVo>> eventList(@RequestBody @Validated DeviceInfoDto.EventList eventList) {
@@ -889,9 +931,9 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
         //根据点位ID查询管理员名字
         List<Long> placeIdList = deviceInfoList.stream().map(DeviceInfoDto.Vo::getPlaceId).distinct().filter(Objects::nonNull).collect(Collectors.toList());
         List<MercPlaceDto.Vo> mercPlaceList = mercPlaceService.list(new MercPlaceDto.ListDto().setIds(placeIdList)).getData();
-        if(Emptys.check(mercPlaceList)){
+        if (Emptys.check(mercPlaceList)) {
             //Map<Long, String> mercPlaceMap = mercPlaceList.stream().collect(Collectors.toMap(i -> i.getId(), i -> i.getAdminName()));
-            Map<Long, String> mercPlaceMap = mercPlaceList.stream().collect(HashMap::new,(map,item) -> map.put(item.getId(),item.getAdminName()),HashMap::putAll);
+            Map<Long, String> mercPlaceMap = mercPlaceList.stream().collect(HashMap::new, (map, item) -> map.put(item.getId(), item.getAdminName()), HashMap::putAll);
             deviceInfoList.forEach(i -> i.setAdminName(mercPlaceMap.get(i.getPlaceId())));
         }
         //没有管理员的的设置默认值
@@ -1011,7 +1053,7 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
             dataList.add(vo);
         }
         DeviceInfoDto.MercHomeListVO orderTemp = null;
-        for (int i=0; i<dataList.size(); i++){
+        for (int i = 0; i < dataList.size(); i++) {
             if ("未分配管理员".equals(dataList.get(i).getAdminName())) {
                 orderTemp = dataList.get(i);
                 dataList.remove(i);

+ 18 - 0
device-api-service/src/main/resources/mapper/DeviceInfoMapper.xml

@@ -94,6 +94,24 @@
         </association>
     </resultMap>
 
+    <select id="groupByAdminName" resultType="com.xy.dto.DeviceInfoDto$GroupByAdminName">
+        SELECT d.device_id, d.device_name, p.admin_name, d.device_type
+        FROM device_info d
+                 left join merc_place p on p.id = d.place_id
+            <where>
+                and d.merc_id = #{dto.mercId}
+                and d.active_state = 1
+                <if test="dto.deviceIdList != null and dto.deviceIdList.size > 0">
+                    and device_id in
+                    <foreach collection="dto.deviceIdList" index="index" item="item" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                </if>
+                <if test="dto.searchKey != null and dto.searchKey != ''">
+                    and CONCAT(IFNULL(d.device_name, ''), IFNULL(p.admin_name, '')) like CONCAT('%', #{dto.searchKey}, '%')
+                </if>
+            </where>
+    </select>
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="queryPageMap">
         select info.*,

+ 46 - 0
device-api/src/main/java/com/xy/dto/DeviceInfoDto.java

@@ -38,6 +38,52 @@ public class DeviceInfoDto {
      */
     public final static String CLEAR = "clear";
 
+    @Data
+    @Accessors(chain = true)
+    public static class GroupByAdminNameDto {
+        @NotNull(message = "商户ID不能为空")
+        @ApiModelProperty(value = "商户ID",required = true)
+        private Long mercId;
+
+        @ApiModelProperty("设备id集合")
+        private List<Long> deviceIdList;
+
+        @ApiModelProperty(value = "设备名/设备ID/管理员名")
+        private String searchKey;
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class GroupByAdminNameVo {
+        @ApiModelProperty(value = "管理员名称")
+        private String adminName;
+
+        @ApiModelProperty(value = "设备数")
+        private Integer deviceNum;
+
+        @ApiModelProperty(value = "列表设备信息")
+        private List<GroupByAdminName> deviceInfos;
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class GroupByAdminName {
+        @ApiModelProperty("设备ID")
+        private Long deviceId;
+
+        @ApiModelProperty("设备名称")
+        private String deviceName;
+
+        @ApiModelProperty("管理员姓名")
+        private String adminName;
+
+        @ApiModelProperty("设备类型")
+        private Integer deviceType;
+
+        @ApiModelProperty("设备类型名称")
+        private String deviceTypeName;
+    }
+
     @Data
     @Accessors(chain = true)
     public static class MyDeviceDTO {