|
@@ -1,6 +1,7 @@
|
|
|
package com.xy.service;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
@@ -11,9 +12,12 @@ import com.xy.collections.map.JConcurrentHashMap;
|
|
|
import com.xy.collections.map.JHashMap;
|
|
|
import com.xy.collections.map.JMap;
|
|
|
import com.xy.device.EnumDeviceDataType;
|
|
|
+import com.xy.device.EnumDeviceOnlineStatus;
|
|
|
import com.xy.dto.DeviceDataDto;
|
|
|
import com.xy.dto.DeviceInfoDto;
|
|
|
import com.xy.entity.DeviceData;
|
|
|
+import com.xy.entity.DeviceInfo;
|
|
|
+import com.xy.entity.DeviceStatus;
|
|
|
import com.xy.entity.SysDictRedis;
|
|
|
import com.xy.mapper.DeviceDataMapper;
|
|
|
import com.xy.utils.*;
|
|
@@ -53,6 +57,56 @@ import static com.xy.utils.PlusBeans.toPageBean;
|
|
|
public class DeviceDataServiceImpl extends ServiceImpl<DeviceDataMapper, DeviceData> implements DeviceDataService {
|
|
|
|
|
|
private final DeviceInfoServiceImpl deviceInfoService;
|
|
|
+ private final DeviceStatusServiceImpl deviceStatusService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设备统计
|
|
|
+ *
|
|
|
+ * @param dto
|
|
|
+ * @return {@link DeviceDataDto.MercHomePageCountVO}
|
|
|
+ */
|
|
|
+ public DeviceDataDto.MercHomePageCountVO deviceCount(@RequestBody @Valid DeviceDataDto.MercHomePageCount dto) {
|
|
|
+ DeviceDataDto.MercHomePageCountVO vo = new DeviceDataDto.MercHomePageCountVO()
|
|
|
+ .setOfflineNum(0).setOnlineNum(0).setUnActiveNum(0).setOutOfServiceNum(0);
|
|
|
+ Long mercId = dto.getMercId();
|
|
|
+ List<Long> myDeviceIds = dto.getMyDeviceIds();
|
|
|
+ if (mercId != null && CollUtil.isEmpty(myDeviceIds)) {
|
|
|
+ //指定商户查询用,平台查询预留逻辑
|
|
|
+ List<DeviceInfoDto.Vo> vos = R.feignCheckData(deviceInfoService.list(new DeviceInfoDto.ListDto().setMercId(mercId)));
|
|
|
+ if (CollUtil.isEmpty(vos)) {
|
|
|
+ return vo;
|
|
|
+ }
|
|
|
+ myDeviceIds = vos.stream().map(DeviceInfoDto.Vo::getDeviceId).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ List<DeviceInfo> mercDevices = deviceInfoService.listByIds(myDeviceIds);
|
|
|
+ if (CollUtil.isEmpty(mercDevices)) {
|
|
|
+ return vo;
|
|
|
+ }
|
|
|
+ //待激活数量
|
|
|
+ Long unActiveNum = mercDevices.stream()
|
|
|
+ .filter(device -> device.getActiveState() == 2)
|
|
|
+ .count();
|
|
|
+ //停运状态数量
|
|
|
+ Long outOfServiceNum = mercDevices.stream()
|
|
|
+ .filter(device -> device.getBusyState() == 2)
|
|
|
+ .count();
|
|
|
+ vo.setOutOfServiceNum(outOfServiceNum.intValue());
|
|
|
+ vo.setUnActiveNum(unActiveNum.intValue());
|
|
|
+
|
|
|
+ List<DeviceStatus> deviceStatuses = deviceStatusService.listByIds(myDeviceIds);
|
|
|
+ //分组统计
|
|
|
+ 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();
|
|
|
+ vo.setOnlineNum(onlineNum);
|
|
|
+ vo.setOfflineNum(offlineNum);
|
|
|
+
|
|
|
+ return vo;
|
|
|
+ }
|
|
|
|
|
|
@PostMapping("sumPage")
|
|
|
@ApiOperation("设备销售统计")
|