فهرست منبع

设备管理员销售排行

tanbin 1 سال پیش
والد
کامیت
95f6d03177

+ 33 - 1
device-api-service/src/main/java/com/xy/service/DeviceInfoServiceImpl.java

@@ -183,6 +183,38 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
         return R.ok(list);
     }
 
+
+    public R<List<DeviceInfoDto.GroupByAdminNameVo>> groupByAdminCount(@RequestBody @Validated DeviceInfoDto.GroupByAdminNameDto dto) {
+        String noAdmin = "未分配管理员";
+        List<DeviceInfoDto.ListByAdminName> deviceInfoList = listByAdminName(dto).getData();
+        //根据管理员名字分组
+        Map<String, List<DeviceInfoDto.ListByAdminName>> deviceMap = deviceInfoList.stream().collect(Collectors.groupingBy(DeviceInfoDto.ListByAdminName::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.ListByAdminName> 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) {
@@ -911,7 +943,7 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
         if (CollUtil.isEmpty(mercDevices)) {
             return R.ok(mercHomeStatisticalVO);
         }
-     
+
 
         //在线、离线
         List<DeviceStatus> deviceStatuses = deviceStatusService.listByIds(myDeviceIds);

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

@@ -98,24 +98,25 @@
     <select id="listByAdminName" resultType="com.xy.dto.DeviceInfoDto$ListByAdminName">
         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>
+        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="pageByAdminName" resultType="com.xy.dto.DeviceInfoDto$ListByAdminName">
-        SELECT d.device_id, d.device_name, p.admin_name, d.device_type,p.region_name,p.place_name,m.name as merc_name,m.merc_code as merc_code
+        SELECT d.device_id, d.device_name, p.admin_name,p.admin_id, d.device_type,p.region_name,p.place_name,m.name as
+        merc_name,m.merc_code as merc_code
         FROM device_info d
         left join merc_place p on p.id = d.place_id
         left join merc m on m.id = d.merc_id
@@ -261,7 +262,8 @@
             </choose>
         </if>
         <if test="queryPage.keyword != null and queryPage.keyword != ''">
-            and CONCAT(IFNULL(info.device_name, ''), IFNULL(info.device_id, '')) LIKE CONCAT('%',#{queryPage.keyword},'%')
+            and CONCAT(IFNULL(info.device_name, ''), IFNULL(info.device_id, '')) LIKE
+            CONCAT('%',#{queryPage.keyword},'%')
         </if>
         <if test="queryPage.showStatus != null">
             and info.show_status = #{queryPage.showStatus}

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

@@ -68,6 +68,14 @@ public class DeviceInfoDto {
         private String regionName;
     }
 
+    @Data
+    @Accessors(chain = true)
+    public static class GroupByAdmin {
+        @ApiModelProperty(value = "商户ID", required = true)
+        private Long mercId;
+    }
+
+
     @Data
     @Accessors(chain = true)
     public static class GroupByAdminNameDto {