Sfoglia il codice sorgente

房间使用情况查询

chejianzheng 2 mesi fa
parent
commit
13459c093d

+ 5 - 5
portal-service-application/src/main/java/com/hfln/portal/application/controller/wap/DeviceController.java

@@ -4,7 +4,7 @@ import cn.hfln.framework.catchlog.CatchAndLog;
 import cn.hfln.framework.dto.ApiResult;
 import com.hfln.portal.common.dto.data.device.DeviceDTO;
 import com.hfln.portal.common.request.device.*;
-import com.hfln.portal.common.response.device.WcTimesQueryRes;
+import com.hfln.portal.common.response.device.UsedInfoQueryRes;
 import com.hfln.portal.domain.gateway.DeviceGateway;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -81,10 +81,10 @@ public class DeviceController {
         return ApiResult.success(deviceGateway.checkDevByUserId(userId, devId));
     }
 
-    @GetMapping("/getWcTimes")
-    @Operation(summary = "查询当天上厕所次数")
-    public ApiResult<WcTimesQueryRes> getWcTimes(@RequestParam("devId") Long devId, @RequestParam("time") String time) {
-        return ApiResult.success(deviceGateway.getWcTimes(devId, time));
+    @PostMapping("/getUsedInfo")
+    @Operation(summary = "查询使用信息")
+    public ApiResult<UsedInfoQueryRes> getUsedInfo(@RequestBody @Valid UsedInfoQueryReq req) {
+        return ApiResult.success(deviceGateway.getUsedInfo(req));
     }
 
     @PostMapping("/transfer")

+ 5 - 2
portal-service-common/src/main/java/com/hfln/portal/common/dto/data/event/StayTimeDTO.java

@@ -1,15 +1,16 @@
 package com.hfln.portal.common.dto.data.event;
 
 
-import com.hfln.portal.common.vo.BaseVO;
+import com.hfln.portal.common.vo.BaseDto;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.time.LocalDateTime;
+import java.util.List;
 
 @EqualsAndHashCode(callSuper = true)
 @Data
-public class StayTimeDTO extends BaseVO {
+public class StayTimeDTO extends BaseDto {
 
     /**
      * stay_time表主键id
@@ -50,4 +51,6 @@ public class StayTimeDTO extends BaseVO {
      * 停留时长(秒)
      */
     private Integer stayTime;
+
+    private List<StayTimeDTO> childStayTime;
 }

+ 26 - 0
portal-service-common/src/main/java/com/hfln/portal/common/request/device/UsedInfoQueryReq.java

@@ -0,0 +1,26 @@
+package com.hfln.portal.common.request.device;
+
+import com.hfln.portal.common.vo.BaseVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotNull;
+import java.time.LocalDate;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@Schema(description = "使用信息查询")
+public class UsedInfoQueryReq extends BaseVO {
+
+    @Schema(description = "设备id")
+    @NotNull(message = "设备id不能为空")
+    private Long devId;
+
+    @Schema(description = "查询时间start yyyy-MM-dd")
+    private LocalDate startDate;
+
+    @Schema(description = "查询时间end yyyy-MM-dd")
+    private LocalDate endDate;
+
+}

+ 4 - 7
portal-service-common/src/main/java/com/hfln/portal/common/response/device/WcTimesQueryRes.java → portal-service-common/src/main/java/com/hfln/portal/common/response/device/UsedInfoQueryRes.java

@@ -1,6 +1,6 @@
 package com.hfln.portal.common.response.device;
 
-import com.hfln.portal.common.dto.data.event.AlarmEventDTO;
+import com.hfln.portal.common.dto.data.event.StayTimeDTO;
 import com.hfln.portal.common.vo.BaseVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -10,13 +10,10 @@ import java.util.List;
 
 @EqualsAndHashCode(callSuper = true)
 @Data
-@Schema(description = "厕所使用查询结果")
-public class WcTimesQueryRes extends BaseVO {
+@Schema(description = "使用信息查询结果")
+public class UsedInfoQueryRes extends BaseVO {
 
-    @Schema(description = "冲水次数")
-    private Integer times;
-
-    private List<AlarmEventDTO> stayTimes;
+    private List<StayTimeDTO> stayTimes;
 
     private int count;
 

+ 2 - 3
portal-service-domain/src/main/java/com/hfln/portal/domain/gateway/DeviceGateway.java

@@ -9,7 +9,7 @@ import com.hfln.portal.common.request.room.RoomParam;
 import com.hfln.portal.common.request.share.ShareConfirmParam;
 import com.hfln.portal.common.request.share.ShareParam;
 import com.hfln.portal.common.request.share.updateShareParam;
-import com.hfln.portal.common.response.device.WcTimesQueryRes;
+import com.hfln.portal.common.response.device.UsedInfoQueryRes;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
@@ -93,8 +93,7 @@ public interface DeviceGateway {
 
     String getFloorPlan(String groupUuid);
 
-    WcTimesQueryRes getWcTimes(Long devId, String time);
-
+    UsedInfoQueryRes getUsedInfo(UsedInfoQueryReq req);
 
 
     //String checkDevByOpenId(String openId, String clientId);

+ 50 - 18
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/gateway/impl/DeviceGatewayImpl.java

@@ -9,8 +9,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.hfln.portal.common.constant.mqtt.topic.TopicConstants;
 import com.hfln.portal.common.dto.data.device.DeviceDTO;
-import com.hfln.portal.common.dto.data.event.AlarmEventDTO;
 import com.hfln.portal.common.dto.data.event.EventListDTO;
+import com.hfln.portal.common.dto.data.event.StayTimeDTO;
 import com.hfln.portal.common.dto.data.home.HomeInfoDTO;
 import com.hfln.portal.common.dto.data.oss.OssFileDTO;
 import com.hfln.portal.common.dto.data.room.RegionDTO;
@@ -23,9 +23,10 @@ import com.hfln.portal.common.request.room.SubRegionInfo;
 import com.hfln.portal.common.request.share.ShareConfirmParam;
 import com.hfln.portal.common.request.share.ShareParam;
 import com.hfln.portal.common.request.share.updateShareParam;
-import com.hfln.portal.common.response.device.WcTimesQueryRes;
+import com.hfln.portal.common.response.device.UsedInfoQueryRes;
 import com.hfln.portal.common.vo.PageRecord;
 import com.hfln.portal.domain.customer.OssBusiType;
+import com.hfln.portal.domain.customer.util.CopyUtils;
 import com.hfln.portal.domain.customer.util.DevPosFixUtil;
 import com.hfln.portal.domain.customer.util.WxOfficeAccountClient;
 import com.hfln.portal.domain.exception.ErrorEnum;
@@ -48,7 +49,6 @@ import org.springframework.web.multipart.MultipartFile;
 import java.io.IOException;
 import java.io.InputStream;
 import java.math.BigDecimal;
-import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -102,6 +102,9 @@ public class DeviceGatewayImpl implements DeviceGateway {
     @Autowired
     private MqttSubHandle mqttSubHandle;
 
+    @Autowired
+    private StayTimeService stayTimeService;
+
 
     @Override
     public HomeInfoDTO queryHomeInfo(Long userId) {
@@ -886,27 +889,56 @@ public class DeviceGatewayImpl implements DeviceGateway {
     }
 
     @Override
-    public WcTimesQueryRes getWcTimes(Long devId, String time) {
-
-        LocalDate inputDate = LocalDate.parse(time);
-        LocalDate tomorrow = inputDate.plusDays(1);
-        List<AlarmEvent> list = alarmEventService.list(new LambdaQueryWrapper<AlarmEvent>().eq(AlarmEvent::getDevId, devId).ge(AlarmEvent::getCreateTime, inputDate).lt(AlarmEvent::getCreateTime, tomorrow));
-        WcTimesQueryRes res = new WcTimesQueryRes();
-        if (CollectionUtils.isEmpty(list)) {
+    public UsedInfoQueryRes getUsedInfo(UsedInfoQueryReq req) {
 
+        List<StayTime> stayTimes = stayTimeService.queryStayTime(req);
+        UsedInfoQueryRes res = new UsedInfoQueryRes();
+        if (CollectionUtils.isEmpty(stayTimes)) {
             res.setStayTimes(null);
             res.setCount(0);
-        } else {
+            return res;
+        }
+
 
-            List<AlarmEventDTO> dtoList = new ArrayList<>();
-            for (AlarmEvent alarmEvent : list) {
-                AlarmEventDTO dto = new AlarmEventDTO();
-                BeanUtils.copyProperties(alarmEvent, dto);
-                dtoList.add(dto);
+        List<StayTimeDTO> roomList = stayTimes.stream().filter(stayTime ->
+                {
+                    if (stayTime != null && stayTime.getType() != null) {
+                        if (0 == (stayTime.getType())) {
+                            return true;
+                        }
+                    }
+                    return false;
+                }
+        ).map(e -> CopyUtils.copy(e, StayTimeDTO.class)).collect(Collectors.toList());
+        List<StayTimeDTO> toiletList = stayTimes.stream().filter(stayTime ->
+                {
+                    if (stayTime != null && stayTime.getType() != null) {
+                        if (1 == (stayTime.getType())) {
+                            return true;
+                        }
+                    }
+                    return false;
+                }
+        ).map(e -> CopyUtils.copy(e, StayTimeDTO.class)).collect(Collectors.toList());
+
+        if (CollectionUtils.isNotEmpty(roomList)) {
+            for (StayTimeDTO stayTime : roomList) {
+
+                if (CollectionUtils.isNotEmpty(toiletList)) {
+                    stayTime.setChildStayTime(toiletList.stream().filter(
+                            toilet ->
+                                    !toilet.getEnterTime().isBefore(stayTime.getEnterTime()) && !toilet.getLeaveTime().isAfter(stayTime.getLeaveTime())
+                    ).collect(Collectors.toList()));
+                }
             }
-            res.setStayTimes(dtoList);
-            res.setCount(list.size());
+
+            res.setStayTimes(roomList);
+            res.setCount(roomList.size());
+            return res;
         }
+
+        res.setStayTimes(null);
+        res.setCount(0);
         return res;
     }
 

+ 4 - 1
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/StayTimeService.java

@@ -2,6 +2,7 @@ package com.hfln.portal.infrastructure.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.hfln.portal.common.request.device.UsedInfoQueryReq;
 import com.hfln.portal.common.request.event.StayTimeParams;
 import com.hfln.portal.infrastructure.po.StayTime;
 
@@ -19,4 +20,6 @@ public interface StayTimeService extends IService<StayTime> {
      * @return 分页结果
      */
     Page<StayTime> queryStayTime(StayTimeParams params, List<Long> devIdList);
-} 
+
+    List<StayTime> queryStayTime(UsedInfoQueryReq req);
+}

+ 19 - 0
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/service/impl/StayTimeServiceImpl.java

@@ -3,6 +3,7 @@ package com.hfln.portal.infrastructure.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.hfln.portal.common.request.device.UsedInfoQueryReq;
 import com.hfln.portal.common.request.event.StayTimeParams;
 import com.hfln.portal.infrastructure.mapper.StayTimeMapper;
 import com.hfln.portal.infrastructure.po.StayTime;
@@ -45,4 +46,22 @@ public class StayTimeServiceImpl extends ServiceImpl<StayTimeMapper, StayTime> i
         queryWrapper.orderByDesc(StayTime::getCreateTime);
         return this.baseMapper.selectPage(page, queryWrapper);
     }
+
+    @Override
+    public List<StayTime> queryStayTime(UsedInfoQueryReq req) {
+
+        LambdaQueryWrapper<StayTime> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(StayTime::getDevId, req.getDevId());
+        // 3. 添加日期条件
+        if (Objects.nonNull(req.getStartDate())) {
+            queryWrapper.ge(StayTime::getLeaveTime, req.getStartDate());
+        }
+
+        if (Objects.nonNull(req.getEndDate())) {
+            queryWrapper.lt(StayTime::getLeaveTime, req.getEndDate().plusDays(1));
+        }
+
+        queryWrapper.orderByDesc(StayTime::getCreateTime);
+        return this.baseMapper.selectList(queryWrapper);
+    }
 }