tanbin 1 month ago
parent
commit
c3996b3d35

+ 11 - 10
device-api-service-merc-mini/src/main/java/com/xy/controller/MercPcDeviceController.java

@@ -67,11 +67,11 @@ public class MercPcDeviceController {
         page.setMercId(page.getMercId() == null ? MercAuthUtils.getMercId() : page.getMercId());
         //非商户管理员,按设备权限过滤
         if (!MercAuthUtils.isMercAdmin()) {
-            List<Long> mercDeviceIds = getMercDeviceIds();
+            List<Long> mercDeviceIds = getMercDeviceIds(true);
             if (CollUtil.isEmpty(mercDeviceIds)) {
                 return R.ok(new PageBean<>());
             }
-            page.setMyDeviceIds(mercDeviceIds);
+            page.setDeviceIdList(mercDeviceIds);
 
         }
         PageBean<DeviceInfoDto.Vo2> vo2PageBean = deviceService.queryPage(page);
@@ -83,14 +83,14 @@ public class MercPcDeviceController {
     public R<DeviceInfoDto.PageCount> pageCount(@RequestBody DeviceInfoDto.Page page) {
         page.setMercId(page.getMercId() == null ? MercAuthUtils.getMercId() : page.getMercId());
         //非商户管理员,按设备权限过滤
-        if (!MercAuthUtils.isMercAdmin()) {
-            List<Long> mercDeviceIds = getMercDeviceIds();
-            if (CollUtil.isEmpty(mercDeviceIds)) {
-                return R.ok(new DeviceInfoDto.PageCount ());
-            }
-            page.setMyDeviceIds(mercDeviceIds);
+
+        List<Long> mercDeviceIds = getMercDeviceIds(true);
+        if (CollUtil.isEmpty(mercDeviceIds)) {
+            return R.ok(new DeviceInfoDto.PageCount ());
         }
-         return R.ok(deviceService.pageCountForPc(page));
+        page.setMyDeviceIds(mercDeviceIds);
+
+        return R.ok(deviceService.pageCountForPc(page));
     }
 
 
@@ -99,12 +99,13 @@ public class MercPcDeviceController {
      *
      * @return {@link List}<{@link Long}>
      */
-    public List<Long> getMercDeviceIds() {
+    public List<Long> getMercDeviceIds(Boolean showNoActive) {
         MercDto.MercDevicesDTO mercDevicesDTO = new MercDto.MercDevicesDTO();
         mercDevicesDTO.setMercAdmin(MercAuthUtils.isMercAdmin());
         mercDevicesDTO.setMercId(MercAuthUtils.getMercId());
         Long userId = MercAuthUtils.getMercAuth().getUserInfo().getUserId();
         mercDevicesDTO.setUserId(userId);
+        mercDevicesDTO.setShowNoActive(showNoActive);
         List<Long> deviceIds = R.feignCheckData(mercService.getMercDevices(mercDevicesDTO));
         return deviceIds;
     }

+ 28 - 2
device-api-service/src/main/java/com/xy/service/DeviceInfoServiceImpl.java

@@ -812,7 +812,7 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
         return R.ok();
     }
 
-    @ApiOperation("分页查询")
+    @ApiOperation("设备分页查询")
     @Override
     public R<PageBean<DeviceInfoDto.Vo2>> page(@RequestBody DeviceInfoDto.Page page) {
         return R.ok(queryPage(page));
@@ -1930,7 +1930,33 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
      * @return
      */
     public DeviceInfoDto.PageCount pageCountForPc(DeviceInfoDto.Page page) {
-        return  baseMapper.pageCountForPc(  page);
+        DeviceInfoDto.PageCount count = new DeviceInfoDto.PageCount().setActiveNum(0).setOffLineNum(0).setTotal(0).setOnlineNum(0).setNoActiveNum(0);
+
+        List<Long> myDeviceIds = page.getMyDeviceIds();
+        if(CollUtil.isEmpty(myDeviceIds)){
+            return count;
+        }
+        List<DeviceStatus> deviceStatuses = deviceStatusService.listByIds(page.getMyDeviceIds());
+        //分组统计
+        Map<Integer, Long> countNetstateMap = deviceStatuses.stream().collect(Collectors
+                .groupingBy(DeviceStatus::getNetState, Collectors.counting()));
+        Integer onlineDictValue = SysDictUtils.getValue(EnumDeviceOnlineStatus.Code.CODE.getCode(), EnumDeviceOnlineStatus.CONNECTED.getCode(), Integer.class);
+        Integer offlineDictValue = SysDictUtils.getValue(EnumDeviceOnlineStatus.Code.CODE.getCode(), EnumDeviceOnlineStatus.DISCONNECT.getCode(), Integer.class);
+
+        int onlineNum = countNetstateMap.get(onlineDictValue) == null ? 0 : countNetstateMap.get(onlineDictValue).intValue();
+        int offlineNum = countNetstateMap.get(offlineDictValue) == null ? 0 : countNetstateMap.get(offlineDictValue).intValue();
+        count.setOnlineNum(onlineNum);
+        count.setOffLineNum(offlineNum);
+        List<DeviceInfo> mercDevices = listByIds(page.getMyDeviceIds());
+        int total = mercDevices.size();
+        //待激活数量
+        Long unActiveNum = mercDevices.stream()
+                .filter(device -> device.getActiveState() == 2)
+                .count();
+        count.setNoActiveNum(unActiveNum.intValue());
+        count.setActiveNum(total-unActiveNum.intValue());
+        count.setTotal(total);
+        return  count;
     }
     public PageBean<DeviceInfoDto.Vo2> queryPage(DeviceInfoDto.Page page) {
         IPage<DeviceInfoQueryPage> iPage = baseMapper.queryPage(toIPage(page.getPage()), page);

+ 8 - 4
device-api-service/src/main/resources/mapper/DeviceInfoMapper.xml

@@ -393,14 +393,18 @@
     <select id="pageCountForPc" resultType="com.xy.dto.DeviceInfoDto$PageCount">
         SELECT
         COUNT(*) AS total,
-        SUM(CASE WHEN status.net_state = 'online' THEN 1 ELSE 0 END) AS onlineNum,
-        SUM(CASE WHEN status.net_state = 'offline' THEN 1 ELSE 0 END) AS offLineNum,
+        SUM(CASE WHEN status.net_state = 1 THEN 1 ELSE 0 END) AS onlineNum,
+        SUM(CASE WHEN status.net_state = 2 THEN 1 ELSE 0 END) AS offLineNum,
         SUM(CASE WHEN info.active_state = 1 THEN 1 ELSE 0 END) AS activeNum,
-        SUM(CASE WHEN info.active_state = 0 THEN 1 ELSE 0 END) AS noActiveNum
+        SUM(CASE WHEN info.active_state = 2 THEN 1 ELSE 0 END) AS noActiveNum
         FROM device_info info
         JOIN device_status status ON info.device_id = status.device_id
         join device_sysinfo sysinfo on info.device_id = sysinfo.device_id
-
+        join device_register dr on (info.device_id = dr.device_id)
+        left join merc mr on (info.merc_id = mr.id)
+        left join merc_place mp on (info.place_id = mp.id)
+        left join merc_line ml on (info.place_line_id = ml.id)
+        left join sys_region sr on (info.district_id = sr.id)
         <where>
             <if test="queryPage.isBindMerc != null">
                 <choose>

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

@@ -664,6 +664,9 @@ public class DeviceInfoDto {
         @ApiModelProperty("点位")
         private String placeName;
 
+        @ApiModelProperty("点位照片")
+        private String placeImgs;
+
         @ApiModelProperty("线路id")
         private Long placeLineId;