Explorar o código

增加设备管理、房屋管理

lilt085163@126.com %!s(int64=3) %!d(string=hai) anos
pai
achega
1ce2a40bce
Modificáronse 27 ficheiros con 1367 adicións e 21 borrados
  1. 119 0
      src/main/java/com/care/bms/controller/DeviceController.java
  2. 11 1
      src/main/java/com/care/bms/controller/EventHandleController.java
  3. 135 0
      src/main/java/com/care/bms/controller/HouseController.java
  4. 66 0
      src/main/java/com/care/bms/controller/StationController.java
  5. 49 0
      src/main/java/com/care/bms/controller/SysUserController.java
  6. 16 0
      src/main/java/com/care/bms/service/BmsEventOrderService.java
  7. 26 0
      src/main/java/com/care/bms/service/BmsSysUserService.java
  8. 131 0
      src/main/java/com/care/bms/service/DeviceService.java
  9. 180 0
      src/main/java/com/care/bms/service/HouseService.java
  10. 49 0
      src/main/java/com/care/bms/service/StationService.java
  11. 1 0
      src/main/java/com/care/client/controller/EventApiController.java
  12. 12 0
      src/main/java/com/care/client/controller/HouseApiController.java
  13. 59 0
      src/main/java/com/care/client/controller/OlderApiController.java
  14. 32 0
      src/main/java/com/care/client/service/PinanbaoService.java
  15. 77 0
      src/main/java/com/care/client/vo/OlderVO.java
  16. 2 2
      src/main/java/com/care/common/entity/CareHouse.java
  17. 38 0
      src/main/java/com/care/common/enums/DeviceStatusEnum.java
  18. 41 0
      src/main/java/com/care/common/enums/KeyEscrowTypeEnum.java
  19. 9 0
      src/main/java/com/care/common/mapper/CareDeviceMapper.java
  20. 7 0
      src/main/java/com/care/common/service/CareDeviceService.java
  21. 44 1
      src/main/java/com/care/common/service/impl/CareDeviceServiceImpl.java
  22. 68 3
      src/main/java/com/care/common/vo/device/DeviceVO.java
  23. 84 0
      src/main/java/com/care/common/vo/device/HouseVO.java
  24. 68 0
      src/main/java/com/care/common/vo/device/StationVO.java
  25. 2 0
      src/main/resources/application.properties
  26. 10 13
      src/main/resources/mybatis/BigSreenMapper.xml
  27. 31 1
      src/main/resources/mybatis/CareDeviceMapper.xml

+ 119 - 0
src/main/java/com/care/bms/controller/DeviceController.java

@@ -0,0 +1,119 @@
+package com.care.bms.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.care.bms.service.DeviceService;
+import com.care.common.annotation.Permission;
+import com.care.common.exception.BDException;
+import com.care.common.util.PageResult;
+import com.care.common.util.Result;
+import com.care.common.util.WebPageUtils;
+import com.care.common.vo.PageReqVO;
+import com.care.common.vo.UserLogindConvertVO;
+import com.care.common.vo.device.DeviceVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * @Author: lilt
+ * @Date: 2021/5/26
+ * @Desc:
+ */
+@RestController
+@Api(value = "DeviceController", tags = { "设备管理" })
+@Slf4j
+@RequestMapping("/bms/Device")
+@Permission
+public class DeviceController {
+
+    @Autowired
+    private DeviceService deviceService;
+
+    @GetMapping("/list")
+    @ApiOperation(value = "设备列表分页")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "status", value = "状态"),
+            @ApiImplicitParam(paramType = "query", name = "houseAddr", value = "地址"),
+            @ApiImplicitParam(paramType = "query", name = "stationId", value = "服务站ID"),
+    })
+    public PageResult<List<DeviceVO>> listDevice(HttpServletRequest request, @RequestHeader(value = "token") String token,
+                                               @RequestParam(value = "status", required = false) String status,
+                                               @RequestParam(value = "houseAddr", required = false) String houseAddr,
+                                                 @RequestParam(value = "devCode", required = false) String devCode,
+                                               @RequestParam(value = "stationId", required = false) Long stationId,
+                                               PageReqVO pageReqVo){
+        try {
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            IPage<DeviceVO> pageResponse = this.deviceService.listDevice(houseAddr,stationId,status,devCode,loginUser ,pageReqVo);
+            return PageResult.success(pageResponse.getRecords(),pageResponse.getCurrent(),pageResponse.getSize(),pageResponse.getTotal());
+        }catch (BDException e) {
+            log.error("设备列表查询-分页列表出现异常",e);
+            return  PageResult.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("设备管理: 设备列表查询出现异常",e);
+            return PageResult.error( "获取列表失败");
+        }
+    }
+
+
+    @PostMapping("/add")
+    @ApiOperation(value = "新增设备")
+    public Result<Object> addDevice(HttpServletRequest request,@RequestHeader("token") String token,
+                                       @RequestBody DeviceVO vo){
+        try {
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            this.deviceService.createDevice(vo,loginUser);
+            return  Result.success("新增成功!");
+        }catch (BDException e) {
+            log.error("新增设备-出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("设备管理: 新增设备出现异常",e);
+            return Result.error("新增失败!");
+        }
+    }
+
+    @PostMapping("/update")
+    @ApiOperation(value = "新增设备")
+    public Result<Object> update(HttpServletRequest request,@RequestHeader("token") String token,
+                                   @RequestBody DeviceVO vo){
+        try {
+            this.deviceService.updateDevice(vo);
+            return  Result.success("修改成功!");
+        }catch (BDException e) {
+            log.error("修改设备-出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("设备管理: 修改设备出现异常",e);
+            return Result.error("修改失败!");
+        }
+    }
+
+    @GetMapping("/getDeviceInfo/{deviceId}")
+    @ApiOperation(value = "详情")
+    public Result<DeviceVO> getDeviceInfo(HttpServletRequest request,@RequestHeader("token") String token,@PathVariable("deviceId") Long deviceId){
+        DeviceVO orderInfo = this.deviceService.getDevById(deviceId);
+        return  Result.success("查询成功!",orderInfo);
+    }
+
+    @PostMapping("/del/{deviceId}")
+    @ApiOperation(value = "删除设备")
+    public Result<Object> delete(HttpServletRequest request,@RequestHeader("token") String token,
+                                 @PathVariable("deviceId") Long deviceId){
+        try {
+            this.deviceService.deleteById(deviceId);
+            return  Result.success("删除成功!");
+        } catch (Exception e) {
+            log.error("设备管理: 删除出现异常",e);
+            return Result.error("删除失败!");
+        }
+    }
+
+}

+ 11 - 1
src/main/java/com/care/bms/controller/EventHandleController.java

@@ -1,5 +1,6 @@
 package com.care.bms.controller;
 
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.care.bms.service.BmsEventOrderService;
 import com.care.common.entity.CareEventOrderChamb;
@@ -233,5 +234,14 @@ public class EventHandleController {
         }
         return  Result.success("查询成功!",datas);
     }
-
+    @GetMapping("/getRealTimeMonitorUrl/{orderId}")
+    @ApiOperation(tags = {"事件处理"},value = "获取实时监控URL")
+    public Result<String> getRealTimeMonitorUrl(HttpServletRequest request,@RequestHeader("token") String token, @PathVariable("orderId") Long orderId){
+        String url = this.bmsEventOrderService.getRealTimeMonitorUrl(orderId);
+        if (StrUtil.isNotEmpty(url)) {
+            return  Result.success("查询成功!",url);
+        }else{
+            return  Result.error("查询失败!");
+        }
+    }
 }

+ 135 - 0
src/main/java/com/care/bms/controller/HouseController.java

@@ -0,0 +1,135 @@
+package com.care.bms.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.care.bms.service.HouseService;
+import com.care.common.annotation.Permission;
+import com.care.common.exception.BDException;
+import com.care.common.util.PageResult;
+import com.care.common.util.Result;
+import com.care.common.util.WebPageUtils;
+import com.care.common.vo.PageReqVO;
+import com.care.common.vo.UserLogindConvertVO;
+import com.care.common.vo.device.HouseVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * @Author: lilt
+ * @Date: 2021/5/26
+ * @Desc:
+ */
+@RestController
+@Api(value = "HouseController", tags = { "房屋管理" })
+@Slf4j
+@RequestMapping("/bms/house")
+@Permission
+public class HouseController {
+
+    @Autowired
+    private HouseService houseService;
+
+    @GetMapping("/list")
+    @ApiOperation(value = "房屋列表分页")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "status", value = "状态"),
+            @ApiImplicitParam(paramType = "query", name = "addr", value = "地址"),
+            @ApiImplicitParam(paramType = "query", name = "stationId", value = "服务站ID"),
+    })
+    public PageResult<List<HouseVO>> listHouse(HttpServletRequest request, @RequestHeader(value = "token") String token,
+                                               @RequestParam(value = "status", required = false) String status,
+                                               @RequestParam(value = "addr", required = false) String addr,
+                                               @RequestParam(value = "stationId", required = false) Long stationId,
+                                               PageReqVO pageReqVo){
+        try {
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            IPage<HouseVO> pageResponse = this.houseService.listHouse(addr,stationId,status,loginUser ,pageReqVo);
+            return PageResult.success(pageResponse.getRecords(),pageResponse.getCurrent(),pageResponse.getSize(),pageResponse.getTotal());
+        }catch (BDException e) {
+            log.error("房屋列表查询-分页列表出现异常",e);
+            return  PageResult.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("房屋管理: 房屋列表查询出现异常",e);
+            return PageResult.error( "获取列表失败");
+        }
+    }
+
+
+    @PostMapping("/add")
+    @ApiOperation(value = "新增房屋")
+    public Result<Object> addHouse(HttpServletRequest request,@RequestHeader("token") String token,
+                                       @RequestBody HouseVO vo){
+        try {
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            this.houseService.createHouse(vo,loginUser);
+            return  Result.success("新增成功!");
+        }catch (BDException e) {
+            log.error("新增房屋-出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("房屋管理: 新增房屋出现异常",e);
+            return Result.error("新增失败!");
+        }
+    }
+
+    @PostMapping("/update")
+    @ApiOperation(value = "新增房屋")
+    public Result<Object> update(HttpServletRequest request,@RequestHeader("token") String token,
+                                   @RequestBody HouseVO vo){
+        try {
+            this.houseService.updateHouse(vo);
+            return  Result.success("修改成功!");
+        }catch (BDException e) {
+            log.error("修改房屋-出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("房屋管理: 修改房屋出现异常",e);
+            return Result.error("修改失败!");
+        }
+    }
+
+    @GetMapping("/getHouseInfo/{houseId}")
+    @ApiOperation(value = "详情")
+    public Result<HouseVO> getHouseInfo(HttpServletRequest request,@RequestHeader("token") String token,@PathVariable("houseId") Long houseId){
+        HouseVO orderInfo = this.houseService.getHouseById(houseId);
+        return  Result.success("查询成功!",orderInfo);
+    }
+
+    @PostMapping("/del/{houseId}")
+    @ApiOperation(value = "新增房屋")
+    public Result<Object> delete(HttpServletRequest request,@RequestHeader("token") String token,
+                                 @PathVariable("houseId") Long houseId){
+        try {
+            this.houseService.deleteById(houseId);
+            return  Result.success("删除成功!");
+        } catch (Exception e) {
+            log.error("房屋管理: 删除出现异常",e);
+            return Result.error("删除失败!");
+        }
+    }
+    /**
+     *服务站下拉列表
+     * @param request
+     * @return
+     */
+    @GetMapping("/list4Select")
+    @ApiOperation(tags = {"设备管理"},value = "某个服务站下的房屋下拉列表")
+    public Result<List<HouseVO>> listNotHandle(HttpServletRequest request, @RequestHeader(value = "token") String token,
+                                                     @RequestParam(name = "stationId") Long stationId){
+        try {
+            List<HouseVO> datas = this.houseService.queryHouseListByStationId(stationId);
+            return Result.success(datas);
+        }catch (Exception e) {
+            log.error("某个服务站下的房屋下拉列表现异常",e);
+            return Result.error( "获取列表失败");
+        }
+    }
+
+}

+ 66 - 0
src/main/java/com/care/bms/controller/StationController.java

@@ -0,0 +1,66 @@
+package com.care.bms.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.care.bms.service.BmsEventOrderService;
+import com.care.bms.service.StationService;
+import com.care.common.annotation.Permission;
+import com.care.common.entity.CareEventOrderChamb;
+import com.care.common.enums.CallResultEnum;
+import com.care.common.enums.OrderStatusEnum;
+import com.care.common.exception.BDException;
+import com.care.common.util.PageResult;
+import com.care.common.util.Result;
+import com.care.common.util.WebPageUtils;
+import com.care.common.vo.PageReqVO;
+import com.care.common.vo.UserLogindConvertVO;
+import com.care.common.vo.device.StationVO;
+import com.care.common.vo.order.*;
+import com.care.common.vo.outcall.CcCallResultVO;
+import com.google.common.collect.Maps;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author: lilt
+ * @Date: 2021/5/26
+ * @Desc:
+ */
+@RestController
+@Api(value = "StationController", tags = { "服务站管理" })
+@Slf4j
+@RequestMapping("/bms/station")
+@Permission
+public class StationController {
+
+    @Autowired
+    private StationService stationService;
+
+    /**
+     *服务站下拉列表
+     * @param request
+     * @return
+     */
+    @GetMapping("/list4Select")
+    @ApiOperation(tags = {"房屋管理","设备管理"},value = "服务站下拉列表")
+    public Result<List<StationVO>> listNotHandle(HttpServletRequest request, @RequestHeader(value = "token") String token){
+        try {
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            List<StationVO> datas = this.stationService.queryStationsForSelect(loginUser);
+            return Result.success(datas);
+        }catch (Exception e) {
+            log.error("服务站管理: 服务站下拉列表查询出现异常",e);
+            return Result.error( "获取列表失败");
+        }
+    }
+
+}

+ 49 - 0
src/main/java/com/care/bms/controller/SysUserController.java

@@ -0,0 +1,49 @@
+package com.care.bms.controller;
+
+import com.care.bms.service.BmsSysUserService;
+import com.care.common.annotation.Permission;
+import com.care.common.util.Result;
+import com.care.common.vo.sysuser.CareSysUserVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * @Author: lilt
+ * @Date: 2021/5/26
+ * @Desc:
+ */
+@RestController
+@Api(value = "StationController", tags = { "后台用户管理" })
+@Slf4j
+@RequestMapping("/bms/sysuser")
+@Permission
+public class SysUserController {
+
+    @Autowired
+    private BmsSysUserService bmsSysUserService;
+
+    /**
+     *服务站下拉列表
+     * @param request
+     * @return
+     */
+    @GetMapping("/listKeeper4Select")
+    @ApiOperation(tags = {"房屋管理"},value = "某个服务站下的管家下拉列表")
+    public Result<List<CareSysUserVO>> listNotHandle(HttpServletRequest request, @RequestHeader(value = "token") String token,
+                                                     @RequestParam(name = "stationId") Long stationId){
+        try {
+            List<CareSysUserVO> datas = this.bmsSysUserService.queryKeeperListByStationId(stationId);
+            return Result.success(datas);
+        }catch (Exception e) {
+            log.error("某个服务站下的管家下拉列表出现异常",e);
+            return Result.error( "获取列表失败");
+        }
+    }
+
+}

+ 16 - 0
src/main/java/com/care/bms/service/BmsEventOrderService.java

@@ -69,6 +69,9 @@ public class BmsEventOrderService {
     @Resource
     private BigScreenService bigScreenService;
 
+    @Resource
+    private CareDeviceService careDeviceService;
+
     /**
      * 工单查询
      * @param orderStatus
@@ -114,6 +117,7 @@ public class BmsEventOrderService {
                 .like(StrUtil.isNotEmpty(olderName),CareEventOrder::getOlderName,olderName)
                 .eq(CareEventOrder::getOrgId,loginUser.getOrgId())
                 .eq(loginUser.getStationId()!=null,CareEventOrder::getStationId,loginUser.getStationId())
+                .last("limit 100")
                 .orderByAsc(CareEventOrder::getCreateTime);
 
         List<CareEventOrder> datas = this.careEventOrderService.list(queryWrapper);
@@ -496,4 +500,16 @@ public class BmsEventOrderService {
         }
         return null;
     }
+
+    /**
+     * 获取3D监控页面URL
+     * @return
+     */
+    public String getRealTimeMonitorUrl(Long orderId){
+        CareEventOrder order =   this.careEventOrderService.getById(orderId);
+        if (order!=null){
+            return this.careDeviceService.get3dUrl(order.getDevId());
+        }
+        return null;
+    }
 }

+ 26 - 0
src/main/java/com/care/bms/service/BmsSysUserService.java

@@ -4,14 +4,18 @@ import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.care.common.entity.CareOrganization;
 import com.care.common.entity.CareSysUser;
+import com.care.common.enums.UserRoleEnum;
 import com.care.common.exception.BDException;
 import com.care.common.service.CareOrganizationService;
 import com.care.common.service.CareSysUserService;
 import com.care.common.vo.UserLogindConvertVO;
+import com.care.common.vo.sysuser.CareSysUserVO;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * 安全管家表(CareSysUser)表服务实现类
@@ -50,4 +54,26 @@ public class BmsSysUserService{
         }
         return userLogindConvertVO;
     }
+
+    /**
+     * 查询某服务站下的 安全管家列表
+     * @param stationId
+     * @return
+     */
+    public List<CareSysUserVO> queryKeeperListByStationId(Long stationId){
+        List<CareSysUserVO> datas = new ArrayList<>();
+        QueryWrapper<CareSysUser>  userQueryWrapper = new QueryWrapper<>();
+        userQueryWrapper.lambda().eq(CareSysUser::getStationId,stationId)
+                .eq(CareSysUser::getRole, UserRoleEnum.CHANMB.getValue())
+                .orderByAsc(CareSysUser::getName);
+        List<CareSysUser> users = this.careSysUserService.list(userQueryWrapper);
+        if (users != null){
+            users.forEach(item -> {
+                CareSysUserVO vo = new CareSysUserVO();
+                BeanUtil.copyProperties(item,vo);
+                datas.add(vo);
+            });
+        }
+        return datas;
+    }
 }

+ 131 - 0
src/main/java/com/care/bms/service/DeviceService.java

@@ -0,0 +1,131 @@
+package com.care.bms.service;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.HexUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.care.bms.mqtt.MqttTool;
+import com.care.common.entity.CareDevice;
+import com.care.common.entity.CareHouse;
+import com.care.common.entity.CareStation;
+import com.care.common.enums.DeviceStatusEnum;
+import com.care.common.exception.BDException;
+import com.care.common.service.*;
+import com.care.common.vo.PageReqVO;
+import com.care.common.vo.UserLogindConvertVO;
+import com.care.common.vo.device.DeviceVO;
+import lombok.Synchronized;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+/**
+ * @Author: lilt
+ * @Date: 2021/7/14
+ * @Desc:
+ */
+@Service
+public class DeviceService {
+    @Resource
+    private CareHouseService careHouseService;
+    @Resource
+    private CareStationService careStationService;
+    @Resource
+    private CareDeviceService careDeviceService;
+
+    @Resource
+    private BmsEventOrderService bmsEventOrderService;
+    @Resource
+    private CareEventOrderService careEventOrderService;
+    @Resource
+    private CareOrganizationService careOrganizationService;
+    /**
+     * 删除设备
+     * @param id
+     * @return
+     */
+    public boolean deleteById(Long id){
+        MqttTool.removeOne(this.careDeviceService.getById(id));
+        return this.careHouseService.removeById(id);
+    }
+
+    public DeviceVO getDevById(Long id){
+        CareDevice dev = this.careDeviceService.getById(id);
+        if (dev!=null){
+            DeviceVO vo = new DeviceVO();
+            BeanUtil.copyProperties(dev,vo);
+            vo.setStatusName(DeviceStatusEnum.getCodeToName(vo.getStatus()));
+            CareStation station = this.careStationService.getById(vo.getStationId());
+            if (station!=null){
+                vo.setStationName(station.getShortName());
+            }
+            CareHouse house = this.careHouseService.getById(vo.getHouseId());
+            if (house!=null){
+                vo.setHouseAddr(house.getAddr());
+            }
+            return vo;
+        }
+        return null;
+    }
+
+    /**
+     * 保存设备
+     * @param vo
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Synchronized
+    public void createDevice(DeviceVO vo,UserLogindConvertVO loginUser){
+        //生成登陆账号
+        if (StrUtil.isEmpty(vo.getDevCode())){
+            throw new BDException("设备编号不能为空");
+        }else {
+            QueryWrapper<CareDevice> queryWrapper = new QueryWrapper();
+            queryWrapper.lambda().eq(CareDevice::getDevCode,vo.getDevCode());
+            if (this.careDeviceService.count(queryWrapper)>0){
+                throw new BDException("设备编号已经存在!");
+            }
+        }
+        //保存设备
+        CareDevice device = new CareDevice();
+        BeanUtil.copyProperties(vo,device);
+        device.setStatus(DeviceStatusEnum.ONLINE.getValue());
+        device.setCreateTime(new Date());
+        device.setOrgId(loginUser.getOrgId());
+        device.setTopic("5JPD/monitor/"+device.getDevCode()+"/event");
+        Long time = System.currentTimeMillis();
+        device.setClientId(HexUtil.toHex(time));
+        this.careDeviceService.save(device);
+        //保存完后,启动通道
+        MqttTool.addOne(device, careDeviceService, bmsEventOrderService, careEventOrderService, careHouseService, careOrganizationService, careStationService);
+
+    }
+
+    /**
+     * 保存设备
+     * @param vo
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void updateDevice(DeviceVO vo){
+        //保存设备
+        CareDevice device = this.careDeviceService.getById(vo.getId());
+        MqttTool.removeOne(device);
+        BeanUtil.copyProperties(vo,device);
+        device.setTopic("5JPD/monitor/"+device.getDevCode()+"/event");
+        device.setModifyTime(new Date());
+        this.careDeviceService.updateById(device);
+        //保存完后,启动通道
+        MqttTool.addOne(device, careDeviceService, bmsEventOrderService, careEventOrderService, careHouseService, careOrganizationService, careStationService);
+    }
+    /**
+     * 列表查询
+     * @param loginUser
+     * @param pageReqVo
+     * @return
+     */
+    public IPage<DeviceVO> listDevice(String addr, Long  stationId, String status, String devCode,UserLogindConvertVO loginUser, PageReqVO pageReqVo) {
+        return this.careDeviceService.queryList(pageReqVo,stationId,status,addr,devCode,loginUser);
+    }
+}

+ 180 - 0
src/main/java/com/care/bms/service/HouseService.java

@@ -0,0 +1,180 @@
+package com.care.bms.service;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.SecureUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.care.common.entity.CareHouse;
+import com.care.common.entity.CareMemberInfo;
+import com.care.common.entity.CareStation;
+import com.care.common.entity.CareSysUser;
+import com.care.common.enums.KeyEscrowTypeEnum;
+import com.care.common.exception.BDException;
+import com.care.common.service.CareHouseService;
+import com.care.common.service.CareMemberInfoService;
+import com.care.common.service.CareStationService;
+import com.care.common.vo.PageReqVO;
+import com.care.common.vo.UserLogindConvertVO;
+import com.care.common.vo.device.HouseVO;
+import com.care.common.vo.sysuser.CareSysUserVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author: lilt
+ * @Date: 2021/7/14
+ * @Desc:
+ */
+@Service
+public class HouseService {
+    @Resource
+    private CareHouseService careHouseService;
+    @Resource
+    private CareMemberInfoService careMemberInfoService;
+    @Resource
+    private CareStationService careStationService;
+    /**
+     * 删除房屋
+     * @param id
+     * @return
+     */
+    public boolean deleteById(Long id){
+        return this.careHouseService.removeById(id);
+    }
+
+    public HouseVO getHouseById(Long id){
+        CareHouse house = this.careHouseService.getById(id);
+        if (house!=null){
+            HouseVO vo = new HouseVO();
+            BeanUtil.copyProperties(house,vo);
+            vo.setKeyEscrowTypeName(KeyEscrowTypeEnum.getCodeToName(vo.getKeyEscrowType()));
+            if ("0".equals(vo.getStatus())){
+                vo.setStatusName("未激活");
+            }else if ("1".equals(vo.getStatus())){
+                vo.setStatusName("已激活");
+            }
+            CareStation station = this.careStationService.getById(vo.getStationId());
+            if (station!=null){
+                vo.setStationName(station.getShortName());
+            }
+            return vo;
+        }
+        return null;
+    }
+
+    /**
+     * 保存房屋
+     * @param vo
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void createHouse(HouseVO vo,UserLogindConvertVO loginUser){
+        //生成登陆账号
+        if (StrUtil.isNotEmpty(vo.getManagePhone())){
+            CareMemberInfo memberInfo = careMemberInfoService.detailByPhone(vo.getManagePhone());
+            if (memberInfo!=null){
+                throw new BDException("一个用户只能拥有一个房屋,请修改其他手机号");
+            }
+        }else{
+            throw new BDException("用户手机号不能为空");
+        }
+        //保存房屋
+        CareHouse house = new CareHouse();
+        BeanUtil.copyProperties(vo,house);
+        house.setCreateTime(new Date());
+        house.setName(house.getAddr());
+        house.setStatus("1");
+        house.setOrgId(loginUser.getOrgId());
+        this.careHouseService.save(house);
+        CareMemberInfo memberInfo = new CareMemberInfo();
+        memberInfo.setHouseId(house.getId());
+        memberInfo.setOlderId(null);
+        memberInfo.setName(house.getManageName());
+        memberInfo.setPhone(house.getManagePhone());
+        memberInfo.setPassword(SecureUtil.md5("123456"));
+        memberInfo.setCreateTime(new Date());
+        this.careMemberInfoService.save(memberInfo);
+    }
+
+    /**
+     * 保存房屋
+     * @param vo
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void updateHouse(HouseVO vo){
+        //保存房屋
+        CareHouse house = this.careHouseService.getById(vo.getId());
+        BeanUtil.copyProperties(vo,house);
+        house.setModifyTime(new Date());
+        house.setName(house.getAddr());
+        this.careHouseService.updateById(house);
+    }
+    /**
+     * 列表查询
+     * @param loginUser
+     * @param pageReqVo
+     * @return
+     */
+    public IPage<HouseVO> listHouse(String addr, Long  stationId, String status,UserLogindConvertVO loginUser, PageReqVO pageReqVo) {
+        IPage<CareHouse> page = new Page<>(pageReqVo.getCurrent(), pageReqVo.getPageSize());
+        QueryWrapper<CareHouse> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(StrUtil.isNotEmpty(status),CareHouse::getStatus, status)
+                .like(StrUtil.isNotEmpty(addr),CareHouse::getAddr,addr)
+                .eq(CareHouse::getOrgId,loginUser.getOrgId())
+                .eq(loginUser.getStationId()!=null,CareHouse::getStationId,loginUser.getStationId())
+                .eq(stationId!=null,CareHouse::getStationId,stationId)
+                .orderByAsc(CareHouse::getManageName);
+
+        IPage<CareHouse> pageRes = this.careHouseService.page(page, queryWrapper);
+        IPage<HouseVO> results = new Page<>(pageRes.getCurrent(),pageRes.getSize(),pageRes.getTotal());
+        if(CollUtil.isNotEmpty(pageRes.getRecords())){
+            List<HouseVO> list = new ArrayList<>();
+            pageRes.getRecords().forEach(item -> {
+                HouseVO  resVO = new HouseVO();
+                BeanUtils.copyProperties(item,resVO);
+                if ("0".equals(resVO.getStatus())){
+                    resVO.setStatusName("未激活");
+                }else if ("1".equals(resVO.getStatus())){
+                    resVO.setStatusName("已激活");
+                }
+                resVO.setKeyEscrowType(KeyEscrowTypeEnum.getCodeToName(resVO.getKeyEscrowType()));
+                CareStation station = this.careStationService.getById(resVO.getStationId());
+                if (station!=null){
+                    resVO.setStationName(station.getShortName());
+                }
+                list.add(resVO);
+            });
+            results.setRecords(list);
+        }
+        return results;
+    }
+
+    /**
+     * 查询某服务站下的房屋列表
+     * @param stationId
+     * @return
+     */
+    public List<HouseVO> queryHouseListByStationId(Long stationId){
+        List<HouseVO> datas = new ArrayList<>();
+        QueryWrapper<CareHouse>  userQueryWrapper = new QueryWrapper<>();
+        userQueryWrapper.lambda().eq(CareHouse::getStationId,stationId)
+                .orderByAsc(CareHouse::getManageName);
+        List<CareHouse> users = this.careHouseService.list(userQueryWrapper);
+        if (users != null){
+            users.forEach(item -> {
+                HouseVO vo = new HouseVO();
+                BeanUtil.copyProperties(item,vo);
+                datas.add(vo);
+            });
+        }
+        return datas;
+    }
+}

+ 49 - 0
src/main/java/com/care/bms/service/StationService.java

@@ -0,0 +1,49 @@
+package com.care.bms.service;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.care.common.entity.CareStation;
+import com.care.common.service.CareStationService;
+import com.care.common.vo.UserLogindConvertVO;
+import com.care.common.vo.device.StationVO;
+import org.apache.commons.compress.utils.Lists;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Author: lilt
+ * @Date: 2021/7/14
+ * @Desc:
+ */
+@Service
+public class StationService {
+    @Resource
+    private CareStationService careStationService;
+
+    /**
+     * 查询登陆人,所能看到的 服务站列表
+     * @param loginUser
+     * @return
+     */
+    public List<StationVO> queryStationsForSelect(UserLogindConvertVO loginUser){
+        List<StationVO> datas = Lists.newArrayList();
+        if (loginUser == null){
+            return datas;
+        }
+        QueryWrapper<CareStation> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CareStation::getOrgId,loginUser.getOrgId());
+        queryWrapper.lambda().eq(loginUser.getStationId()!=null,CareStation::getId,loginUser.getStationId());
+        List<CareStation> stations = this.careStationService.list(queryWrapper);
+        if (CollUtil.isNotEmpty(stations)){
+            stations.forEach(item -> {
+                StationVO vo = new StationVO();
+                BeanUtil.copyProperties(item,vo);
+                datas.add(vo);
+            });
+        }
+        return datas;
+    }
+}

+ 1 - 0
src/main/java/com/care/client/controller/EventApiController.java

@@ -40,4 +40,5 @@ public class EventApiController {
         return  Result.success("查询成功!",this.pinanbaoService.queryOrderHandleHis(orderId));
     }
 
+
 }

+ 12 - 0
src/main/java/com/care/client/controller/HouseApiController.java

@@ -1,5 +1,6 @@
 package com.care.client.controller;
 
+import cn.hutool.core.util.StrUtil;
 import com.care.client.service.PassportService;
 import com.care.client.service.PinanbaoService;
 import com.care.client.vo.DeviceMonitorVO;
@@ -18,6 +19,7 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 
 /**
@@ -104,4 +106,14 @@ public class HouseApiController {
             return Result.error("呼叫失败!");
         }
     }
+    @GetMapping("/getRealTimeMonitorUrl")
+    @ApiOperation(tags = {"首页"},value = "获取实时监控URL")
+    public Result<String> getRealTimeMonitorUrl(@RequestHeader(value = "token") String token, @RequestParam("devId") Long devId){
+        String url = this.pinanbaoService.getRealTimeMonitorUrl(devId);
+        if (StrUtil.isNotEmpty(url)) {
+            return  Result.success("查询成功!",url);
+        }else{
+            return  Result.error("查询失败!");
+        }
+    }
 }

+ 59 - 0
src/main/java/com/care/client/controller/OlderApiController.java

@@ -0,0 +1,59 @@
+package com.care.client.controller;
+
+import com.care.client.service.PassportService;
+import com.care.client.service.PinanbaoService;
+import com.care.client.vo.HouseContactVO;
+import com.care.client.vo.MemberInfoVO;
+import com.care.client.vo.OlderVO;
+import com.care.common.exception.BDException;
+import com.care.common.util.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * @Author: lilt
+ * @Date: 2021/5/26
+ * @Desc:
+ */
+@RestController
+@Api(value = "ContactApiController", tags = { "被监护人档案" })
+@Slf4j
+@RequestMapping("/pinanbao/older")
+public class OlderApiController {
+
+    @Resource
+    private PinanbaoService pinanbaoService;
+    @Resource
+    private PassportService passportService;
+
+    /**
+     * 紧急联系人列表
+     * @param request
+     * @return
+     */
+    @GetMapping("/my/list")
+    @ApiOperation(tags = {"被监护人档案"},value = "被监护人档案列表")
+    public Result<List<OlderVO>> myHouseOlderList(HttpServletRequest request, @RequestHeader(value = "token") String token){
+        MemberInfoVO current = passportService.checkToken(token);
+        try {
+            List<OlderVO> datas = pinanbaoService.queryOlderByMemberId(current.getId());
+            return Result.success(datas);
+        }catch (BDException e) {
+            return  Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("被监护人档案: 列表查询出现异常",e);
+            return Result.error( "获取失败");
+        }
+    }
+
+
+}

+ 32 - 0
src/main/java/com/care/client/service/PinanbaoService.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.care.client.vo.DeviceMonitorVO;
 import com.care.client.vo.HouseContactVO;
 import com.care.client.vo.MemberInfoVO;
+import com.care.client.vo.OlderVO;
 import com.care.common.entity.*;
 import com.care.common.enums.OrderStatusEnum;
 import com.care.common.enums.OrderTypeEnum;
@@ -51,6 +52,8 @@ public class PinanbaoService {
     private CareOrganizationService careOrganizationService;
     @Resource
     private CareStationService careStationService;
+    @Resource
+    private CareOlderService careOlderService;
     /**
      * 查询房屋的设备列表
      * @param houseId
@@ -216,4 +219,33 @@ public class PinanbaoService {
         this.careEventOrderService.saveOrder(order);
         return true;
     }
+
+    /**
+     * 获取3D监控页面URL
+     * @return
+     */
+    public String getRealTimeMonitorUrl(Long devId){
+        return this.careDeviceService.get3dUrl(devId);
+    }
+
+    /**
+     * 查询房屋老人
+     * @param memberId
+     * @return
+     */
+    public List<OlderVO> queryOlderByMemberId(Long memberId){
+        List<OlderVO> vos = Lists.newArrayList();
+        CareMemberInfo memberInfo = this.careMemberInfoService.getById(memberId);
+        QueryWrapper<CareOlder> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CareOlder::getHouseId, memberInfo.getHouseId());
+        List<CareOlder> contacts = this.careOlderService.list(queryWrapper);
+        if (CollUtil.isNotEmpty(contacts)){
+            contacts.forEach(item -> {
+                OlderVO vo = new OlderVO();
+                BeanUtil.copyProperties(item,vo);
+                vos.add(vo);
+            });
+        }
+        return vos;
+    }
 }

+ 77 - 0
src/main/java/com/care/client/vo/OlderVO.java

@@ -0,0 +1,77 @@
+package com.care.client.vo;
+
+import cn.hutool.core.date.DateUtil;
+import com.care.common.vo.order.ChamberlainVO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @Author: lilt
+ * @Date: 2021/5/29
+ * @Desc:
+ */
+@Data
+@ApiModel(value = "老人详细信息", description = "老人详细信息响应类")
+public class OlderVO {
+
+    private Long id;
+
+
+    @ApiModelProperty("机构ID")
+    private Long orgId;
+
+
+    @ApiModelProperty("服务站ID")
+    private Long stationId;
+
+
+    @ApiModelProperty("姓名")
+    private String name;
+
+
+    @ApiModelProperty("电话")
+    private String phone;
+
+
+    @ApiModelProperty("姓名:M:男 W:女")
+    private String gender;
+
+
+    @ApiModelProperty("生日")
+    private Date birthday;
+
+
+    @ApiModelProperty("居住类别:1:独居 2:非独居 3:集中居住 4:其他")
+    private String liveType;
+
+
+    @ApiModelProperty("床号或者门牌号")
+    private String bedNumber;
+
+
+    @ApiModelProperty("安全级别: 1 :一级 2:二级 3: 三级")
+    private String safeLevel;
+
+
+
+    @ApiModelProperty("状态:  0:未联系  1已联系 ")
+    private Integer status;
+
+    @ApiModelProperty("老人联系状态描述")
+    private String statusDesc;
+
+    @ApiModelProperty("年龄")
+    private Integer age;
+
+    public Integer getAge(){
+        if (this.getBirthday() != null){
+            return DateUtil.ageOfNow(this.getBirthday());
+        }else{
+            return null;
+        }
+    }
+
+}

+ 2 - 2
src/main/java/com/care/common/entity/CareHouse.java

@@ -52,9 +52,9 @@ public class CareHouse implements Serializable {
     private String keyEscrowType;
 
 
-    @ApiModelProperty("状态: 1正常,2离开房间,3久滞,4摔倒,5坠床 6主动呼叫")
+    @ApiModelProperty("状态: 1激活,0未激活")
     @TableField("STATUS")
-    private Integer status;
+    private String status;
 
 
     @ApiModelProperty("地址")

+ 38 - 0
src/main/java/com/care/common/enums/DeviceStatusEnum.java

@@ -0,0 +1,38 @@
+package com.care.common.enums;
+
+
+import cn.hutool.core.util.StrUtil;
+
+/**
+ * @Author:java
+ * @Date: 2021/05/27
+ */
+public enum DeviceStatusEnum {
+    /**
+     * 钥匙托管类型
+     */
+    ONLINE("1","在线"),
+    OFFLINE("2","离线");
+    private String value;
+    private String name;
+    DeviceStatusEnum(String value, String name) {
+        this.value = value;
+        this.name = name;
+    }
+    public String getValue() {
+        return value;
+    }
+
+    public static String getCodeToName(String code){
+        if (StrUtil.isEmpty(code)){
+            return null;
+        }
+        if (ONLINE.getValue().equals(code)){
+            return  ONLINE.name;
+        }else if (OFFLINE.getValue().equals(code)){
+            return  OFFLINE.name;
+        }
+
+        return null;
+    }
+}

+ 41 - 0
src/main/java/com/care/common/enums/KeyEscrowTypeEnum.java

@@ -0,0 +1,41 @@
+package com.care.common.enums;
+
+
+import cn.hutool.core.util.StrUtil;
+
+/**
+ * @Author:java
+ * @Date: 2021/05/27
+ */
+public enum KeyEscrowTypeEnum {
+    /**
+     * 钥匙托管类型
+     */
+    NOT("0","不托管"),
+    DIANZI("1","电子"),
+    JIXIE("2","机械");
+    private String value;
+    private String name;
+    KeyEscrowTypeEnum(String value, String name) {
+        this.value = value;
+        this.name = name;
+    }
+    public String getValue() {
+        return value;
+    }
+
+    public static String getCodeToName(String code){
+        if (StrUtil.isEmpty(code)){
+            return null;
+        }
+        if (NOT.getValue().equals(code)){
+            return  NOT.name;
+        }else if (DIANZI.getValue().equals(code)){
+            return  DIANZI.name;
+        }else if (JIXIE.getValue().equals(code)){
+            return  JIXIE.name;
+        }
+
+        return null;
+    }
+}

+ 9 - 0
src/main/java/com/care/common/mapper/CareDeviceMapper.java

@@ -1,8 +1,10 @@
 package com.care.common.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.care.common.entity.CareDevice;
 import com.care.common.vo.device.DeviceVO;
+import com.care.common.vo.order.ChambEventOrderVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -16,4 +18,11 @@ import java.util.List;
  */
 public interface CareDeviceMapper extends BaseMapper<CareDevice> {
     List<DeviceVO> queryListByHouseId(@Param("houseId") Long houseId );
+
+    IPage<DeviceVO> queryList(IPage<DeviceVO> page, @Param("stationId") Long stationId,
+                              @Param("status") String status,
+                              @Param("houseAddr") String houseAddr,
+                              @Param("devCode") String devCode,
+                              @Param("userStationId") Long userStationId,
+                              @Param("userOrgId") Long userOrgId);
 }

+ 7 - 0
src/main/java/com/care/common/service/CareDeviceService.java

@@ -1,7 +1,10 @@
 package com.care.common.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.care.common.entity.CareDevice;
+import com.care.common.vo.PageReqVO;
+import com.care.common.vo.UserLogindConvertVO;
 import com.care.common.vo.device.DeviceVO;
 
 import java.util.List;
@@ -20,4 +23,8 @@ public interface CareDeviceService extends IService<CareDevice> {
      * @return
      */
     List<DeviceVO> queryListByHouseId(Long houseId);
+
+    IPage<DeviceVO> queryList(PageReqVO pageReqVo, Long stationId, String status, String houseAddr, String devCode, UserLogindConvertVO loginUser);
+
+    String  get3dUrl(Long deviceId);
 }

+ 44 - 1
src/main/java/com/care/common/service/impl/CareDeviceServiceImpl.java

@@ -1,12 +1,25 @@
 package com.care.common.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.util.URLUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.care.common.entity.CareDevice;
+import com.care.common.enums.ChambOrderStatusEnum;
+import com.care.common.enums.DeviceStatusEnum;
 import com.care.common.mapper.CareDeviceMapper;
 import com.care.common.service.CareDeviceService;
+import com.care.common.vo.PageReqVO;
+import com.care.common.vo.UserLogindConvertVO;
 import com.care.common.vo.device.DeviceVO;
+import com.care.common.vo.order.ChambEventOrderVO;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import java.io.UnsupportedEncodingException;
 import java.util.List;
 
 /**
@@ -17,7 +30,8 @@ import java.util.List;
  */
 @Service
 public class CareDeviceServiceImpl extends ServiceImpl<CareDeviceMapper, CareDevice> implements CareDeviceService {
-
+    @Value("${device.3d.url:#{null}}")
+    private String url3D;
     /**
      * 查询房屋的设备列表
      *
@@ -28,4 +42,33 @@ public class CareDeviceServiceImpl extends ServiceImpl<CareDeviceMapper, CareDev
     public List<DeviceVO> queryListByHouseId(Long houseId) {
         return this.baseMapper.queryListByHouseId(houseId);
     }
+
+    @Override
+    public IPage<DeviceVO> queryList(PageReqVO pageReqVo, Long stationId, String status, String houseAddr, String devCode, UserLogindConvertVO loginUser) {
+        IPage<DeviceVO> page = new Page<>(pageReqVo.getCurrent(), pageReqVo.getPageSize());
+        IPage<DeviceVO> pageRes = this.baseMapper.queryList(page, stationId,status,houseAddr,devCode,loginUser.getOrgId(),loginUser.getStationId());
+        if(CollUtil.isNotEmpty(pageRes.getRecords())){
+            pageRes.getRecords().forEach(item -> {
+                item.setStatusName(DeviceStatusEnum.getCodeToName(item.getStatus()));
+            });
+        }
+        return pageRes;
+    }
+
+    @Override
+    public String get3dUrl(Long deviceId) {
+        CareDevice device = this.baseMapper.selectById(deviceId);
+        if (device!=null && StrUtil.isNotEmpty(device.getTopic())){
+            try {
+                return  url3D + java.net.URLEncoder.encode(device.getTopic(),"UTF-8");
+            } catch (UnsupportedEncodingException e) {
+                e.printStackTrace();
+            }
+        }
+        return null;
+    }
+
+    public static void main(String[] args) throws UnsupportedEncodingException {
+        System.out.println(java.net.URLEncoder.encode("5JPD/monitor/f1/event","UTF-8"));
+    }
 }

+ 68 - 3
src/main/java/com/care/common/vo/device/DeviceVO.java

@@ -1,8 +1,11 @@
 package com.care.common.vo.device;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.Date;
+
 /**
  * @Author: lilt
  * @Date: 2021/6/7
@@ -11,14 +14,76 @@ import lombok.Data;
 @Data
 public class DeviceVO {
 
-    @ApiModelProperty("设备ID")
-    private Long devId;
+    private Long id;
+
+
+    @ApiModelProperty("机构ID")
+    private Long orgId;
+
+
+    @ApiModelProperty("服务站ID")
+    private Long stationId;
+
+    private String stationName;
 
 
     @ApiModelProperty("房屋ID")
     private Long houseId;
+    private String houseAddr;
 
 
-    @ApiModelProperty("设备别名:例如卧室")
+    @ApiModelProperty("设备名称")
     private String devName;
+
+
+    @ApiModelProperty("设备编码")
+    private String devCode;
+
+
+    @ApiModelProperty("设备类别: 1:室内 2:户外")
+    private String devType;
+
+
+    @ApiModelProperty("状态:1在线;2:离线")
+    private String status;
+
+    private String statusName;
+
+
+    @ApiModelProperty("经度")
+    private Double longitude;
+
+
+    @ApiModelProperty("纬度")
+    private Double latitude;
+
+
+    @ApiModelProperty("createTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date createTime;
+
+
+    @ApiModelProperty("modifyTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date modifyTime;
+
+
+    @ApiModelProperty("呼吸频率")
+    private Integer breathRate;
+
+
+    @ApiModelProperty("心跳频率")
+    private Integer heartRate;
+
+
+    @ApiModelProperty("设备mqtt消息topic")
+    private String topic;
+
+
+    @ApiModelProperty("设备mqtt消息客户端ID")
+    private String clientId;
+
+    public Long getDevId(){
+        return this.id;
+    }
 }

+ 84 - 0
src/main/java/com/care/common/vo/device/HouseVO.java

@@ -0,0 +1,84 @@
+package com.care.common.vo.device;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 被监护房屋信息(CareHouse)实体类
+ *
+ * @author makejava
+ * @since 2021-06-02 22:00:37
+ */
+
+@Data
+public class HouseVO implements Serializable {
+    private static final long serialVersionUID = -60036036914347085L;
+
+    private Long id;
+
+
+    @ApiModelProperty("机构ID")
+    private Long orgId;
+
+
+    @ApiModelProperty("服务站ID")
+    private Long stationId;
+    private String stationName;
+
+
+    @ApiModelProperty("房屋简称")
+    private String name;
+
+
+    @ApiModelProperty("钥匙托管类型: 1 :电子 2:机械 0:未托管")
+    private String keyEscrowType;
+    private String keyEscrowTypeName;
+
+    @ApiModelProperty("状态: 0未激活,1已激活")
+    private String status;
+    private String statusName;
+
+
+    @ApiModelProperty("地址")
+    private String addr;
+
+
+    @ApiModelProperty("经度")
+    private Double longitude;
+
+
+    @ApiModelProperty("纬度")
+    private Double latitude;
+
+
+    @ApiModelProperty("管理者电话")
+    private String managePhone;
+
+
+    @ApiModelProperty("管理者姓名")
+    private String manageName;
+
+
+    @ApiModelProperty("createTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date createTime;
+
+
+    @ApiModelProperty("modifyTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date modifyTime;
+
+
+    @ApiModelProperty("管家ID")
+    private Long chambId;
+
+
+    @ApiModelProperty("管家姓名")
+    private String chambName;
+
+
+}

+ 68 - 0
src/main/java/com/care/common/vo/device/StationVO.java

@@ -0,0 +1,68 @@
+package com.care.common.vo.device;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 服务站(CareStation)实体类
+ *
+ * @author makejava
+ * @since 2021-06-02 21:44:11
+ */
+
+@Data
+@ApiModel(value = "服务站", description = "")
+public class StationVO implements Serializable {
+    private static final long serialVersionUID = 278407010051454823L;
+
+    private Long id;
+
+
+    @ApiModelProperty("机构ID")
+    private Long orgId;
+
+
+    @ApiModelProperty("服务站名称")
+    private String name;
+
+
+    @ApiModelProperty("服务站简称")
+    private String shortName;
+
+
+    @ApiModelProperty("负责人")
+    private String director;
+
+
+    @ApiModelProperty("联系电话")
+    private String phone;
+
+
+    @ApiModelProperty("地址")
+    private String addr;
+
+
+    @ApiModelProperty("经度")
+    private Double longitude;
+
+
+    @ApiModelProperty("纬度")
+    private Double latitude;
+
+
+    @ApiModelProperty("createTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date createTime;
+
+
+    @ApiModelProperty("modifyTime")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date modifyTime;
+
+
+}

+ 2 - 0
src/main/resources/application.properties

@@ -75,3 +75,5 @@ sms.notice.templateId=986791
 
 sms.notice.templateid.jiuzhi=1014148
 sms.notice.templateid.diedao=1014144
+
+device.3d.url=https://www.ventropic.com/rt/dist/#/?topic=

+ 10 - 13
src/main/resources/mybatis/BigSreenMapper.xml

@@ -216,12 +216,9 @@
         <result column="live_type" property="liveType"/>
         <result column="bed_number" property="bedNumber"/>
         <result column="safe_level" property="safeLevel"/>
-        <result column="Key_escrow_type" property="keyEscrowType"/>
-        <result column="breath_rate" property="breathRate"/>
-        <result column="breath_rate" property="heartRate"/>
+        <result column="key_escrow_type" property="keyEscrowType"/>
         <result column="addr" property="addr"/>
         <result column="phone" property="phone"/>
-        <result column="has_our_door_device" property="hasOurDoorDevice"/>
         <result column="older_status" property="olderStatus"/>
         <result column="older_event_status" property="olderEventStatus"/>
 
@@ -242,10 +239,10 @@
         (select sdc.name from sys_dim_code sdc where sdc.dim_code = a.live_type and sdc.type_code='older_live_type') live_type,
          a.bed_number,
          a.safe_level,
-         a.Key_escrow_type,
-          a.breath_rate,
-          a.heart_rate,
-          a.addr,
+         ch.key_escrow_type,
+         <!-- a.breath_rate,
+          a.heart_rate,-->
+          ch.addr,
           a.phone,
          <!-- (case when (select count(1) from care_device b where b.dev_type='2' and b.id in (select c.dev_id from care_older_device_rel c where c.older_id = a.id)) > 0 then 'Y' else 'N' end)  has_our_door_device,-->
           (select sdc.name from sys_dim_code sdc where sdc.dim_code = a.status and sdc.type_code='older_status') older_status,
@@ -254,7 +251,8 @@
           d.name contact_name,
           d.phone contact_phone,
           (select sdc.name from sys_dim_code sdc where sdc.dim_code = d.relation_type and sdc.type_code='older_contact_relation_type') relation_type
-        FROM care_older a left join care_older_contact d on a.id = d.older_id and d.status='1'
+        FROM care_older a left join care_house_contact d on d.house_id = a.id
+        left join care_house ch on ch.id=a.house_id
         where a.id = #{olderId}
         order by a.id,d.contact_level
     </select>
@@ -339,15 +337,14 @@
         (select sdc.name from sys_dim_code sdc where sdc.dim_code = a.live_type and sdc.type_code='older_live_type') live_type,
         a.bed_number,
         a.safe_level,
-        a.Key_escrow_type,
-        a.breath_rate,
-        a.heart_rate,
-        a.addr,
+        ch.key_escrow_type,
+        ch.addr,
         a.phone,
         <!--(case when (select count(1) from care_device b where b.dev_type='2' and b.id in (select c.dev_id from care_older_device_rel c where c.older_id = a.id)) > 0 then 'Y' else 'N' end)  has_our_door_device,-->
         (select sdc.name from sys_dim_code sdc where sdc.dim_code = a.status and sdc.type_code='older_status') olderStatus,
         (select c.status from care_event_order c where c.older_id = a.id order by c.create_time desc limit 1) olderEventStatus
         FROM care_older a
+        left join care_house ch on ch.id=a.house_id
         where a.station_id = #{stationId}
         <if test="olderName != null and olderName != ''">
             AND a.name like CONCAT('%',#{olderName},'%')

+ 31 - 1
src/main/resources/mybatis/CareDeviceMapper.xml

@@ -4,9 +4,39 @@
 
     <select id="queryListByHouseId" resultType="com.care.common.vo.device.DeviceVO">
         select
-            d.id as devId,
+            d.id ,
             d.dev_name as devName
         from care_device d
         where d.house_id = #{houseId}
     </select>
+    <select id="queryList" resultType="com.care.common.vo.device.DeviceVO">
+        select
+            ceoc.*,
+            ceo.addr as houseAddr,
+            cs.name as stationName
+        from care_device ceoc
+        left join care_house ceo on ceo.id = ceoc.house_id
+        left join care_station cs on cs.id = ceoc.station_id
+        <where>
+            <if test="userOrgId != null">
+                AND ceoc.org_id = #{userOrgId}
+            </if>
+            <if test="userStationId != null">
+                AND ceoc.station_id = #{userStationId}
+            </if>
+           <if test="stationId != null">
+                AND ceoc.station_id = #{stationId}
+            </if>
+            <if test="status != null and status != ''">
+                AND ceoc.status = #{status}
+            </if>
+            <if test="houseAddr != null and houseAddr != ''">
+                AND ceo.addr like CONCAT('%',#{houseAddr},'%')
+            </if>
+            <if test="devCode != null and devCode != ''">
+                AND ceoc.dev_code like CONCAT('%',#{devCode},'%')
+            </if>
+        </where>
+        order by ceoc.dev_code asc
+    </select>
 </mapper>