Browse Source

第二版

suntianwu 3 years ago
parent
commit
6096ebb6e1
62 changed files with 2236 additions and 323 deletions
  1. 6 0
      src/main/java/com/care/bigscreen/service/BigScreenService.java
  2. 21 5
      src/main/java/com/care/bigscreen/service/impl/BigScreenServiceImpl.java
  3. 1 1
      src/main/java/com/care/bigscreen/websocket/BigScreenWebSocketEndpoint.java
  4. 33 23
      src/main/java/com/care/bms/controller/DeviceController.java
  5. 78 0
      src/main/java/com/care/bms/controller/EventHandleController.java
  6. 125 0
      src/main/java/com/care/bms/controller/MemberInfoController.java
  7. 97 3
      src/main/java/com/care/bms/controller/SysUserController.java
  8. 1 0
      src/main/java/com/care/bms/mqtt/MqttMessageListener.java
  9. 172 12
      src/main/java/com/care/bms/service/BmsEventOrderService.java
  10. 184 0
      src/main/java/com/care/bms/service/BmsMemberInfoService.java
  11. 216 4
      src/main/java/com/care/bms/service/BmsSysUserService.java
  12. 206 13
      src/main/java/com/care/bms/service/DeviceService.java
  13. 21 20
      src/main/java/com/care/bms/service/HouseService.java
  14. 52 52
      src/main/java/com/care/client/service/PinanbaoService.java
  15. 7 7
      src/main/java/com/care/client/vo/HouseContactVO.java
  16. 3 6
      src/main/java/com/care/client/vo/MemberInfoVO.java
  17. 3 1
      src/main/java/com/care/client/vo/OlderVO.java
  18. 36 1
      src/main/java/com/care/common/entity/CareDevice.java
  19. 6 2
      src/main/java/com/care/common/entity/CareEventOrder.java
  20. 19 16
      src/main/java/com/care/common/entity/CareHouse.java
  21. 10 4
      src/main/java/com/care/common/entity/CareHouseContact.java
  22. 44 0
      src/main/java/com/care/common/entity/CareHouseContactRel.java
  23. 44 0
      src/main/java/com/care/common/entity/CareHouseOlderRel.java
  24. 5 13
      src/main/java/com/care/common/entity/CareMemberInfo.java
  25. 3 3
      src/main/java/com/care/common/entity/CareOlder.java
  26. 4 2
      src/main/java/com/care/common/entity/CareSysUser.java
  27. 42 0
      src/main/java/com/care/common/enums/ChambStatusEnum.java
  28. 45 0
      src/main/java/com/care/common/enums/ChambSubStatusEnum.java
  29. 38 0
      src/main/java/com/care/common/enums/DeviceActiveStatusEnum.java
  30. 44 0
      src/main/java/com/care/common/enums/DeviceSceneEnum.java
  31. 1 1
      src/main/java/com/care/common/enums/DeviceStatusEnum.java
  32. 44 0
      src/main/java/com/care/common/enums/OlderLiveTypeEnum.java
  33. 38 0
      src/main/java/com/care/common/enums/TrueFalseEnum.java
  34. 8 1
      src/main/java/com/care/common/mapper/CareDeviceMapper.java
  35. 15 0
      src/main/java/com/care/common/mapper/CareHouseContactRelMapper.java
  36. 15 0
      src/main/java/com/care/common/mapper/CareHouseOlderRelMapper.java
  37. 3 2
      src/main/java/com/care/common/service/CareDeviceService.java
  38. 14 0
      src/main/java/com/care/common/service/CareHouseContactRelService.java
  39. 14 0
      src/main/java/com/care/common/service/CareHouseOlderRelService.java
  40. 8 3
      src/main/java/com/care/common/service/impl/CareDeviceServiceImpl.java
  41. 107 57
      src/main/java/com/care/common/service/impl/CareEventOrderServiceImpl.java
  42. 18 0
      src/main/java/com/care/common/service/impl/CareHouseContactRelServiceImpl.java
  43. 22 3
      src/main/java/com/care/common/service/impl/CareHouseContactServiceImpl.java
  44. 18 0
      src/main/java/com/care/common/service/impl/CareHouseOlderRelServiceImpl.java
  45. 58 0
      src/main/java/com/care/common/util/MyBeanUtils.java
  46. 49 3
      src/main/java/com/care/common/vo/device/DeviceVO.java
  47. 15 13
      src/main/java/com/care/common/vo/device/HouseVO.java
  48. 79 0
      src/main/java/com/care/common/vo/memberinfo/MemberInfoVO.java
  49. 15 15
      src/main/java/com/care/common/vo/order/CareHouseVO.java
  50. 13 1
      src/main/java/com/care/common/vo/order/ChamberlainVO.java
  51. 5 2
      src/main/java/com/care/common/vo/order/EventOrderVO.java
  52. 10 0
      src/main/java/com/care/common/vo/order/OrderContactorVO.java
  53. 6 1
      src/main/java/com/care/common/vo/order/OrderOlderVO.java
  54. 25 10
      src/main/java/com/care/common/vo/sysuser/CareSysUserVO.java
  55. 24 9
      src/main/java/com/care/keeper/service/KeeperApiService.java
  56. 2 7
      src/main/java/com/care/keeper/vo/HouseContactVO.java
  57. 2 2
      src/main/resources/application-prod.properties
  58. 1 1
      src/main/resources/application.properties
  59. 1 1
      src/main/resources/common.properties
  60. 4 2
      src/main/resources/mybatis/BigSreenMapper.xml
  61. 19 1
      src/main/resources/mybatis/CareDeviceMapper.xml
  62. 17 0
      unnamed.patch

+ 6 - 0
src/main/java/com/care/bigscreen/service/BigScreenService.java

@@ -4,6 +4,7 @@ import com.care.bigscreen.vo.*;
 import com.care.common.vo.PageResVO;
 import com.care.common.util.PageUtil;
 
+import java.io.IOException;
 import java.util.List;
 
 
@@ -96,6 +97,11 @@ public interface BigScreenService {
      */
     void pushRtEventFlag(String stationId);
 
+    /**
+     * 调用websocket推送实时事件标识给前端
+     */
+    void pushRtEventFlag2();
+
     /**
      * 进行统计
      */

+ 21 - 5
src/main/java/com/care/bigscreen/service/impl/BigScreenServiceImpl.java

@@ -212,12 +212,28 @@ public class BigScreenServiceImpl implements BigScreenService {
      * 调用websocket推送实时事件标识给前端
      */
     @Override
-    public void pushRtEventFlag(String stationId) {
-        //触发统计
-        exeStatistics();
-        BigScreenWebSocketEndpoint.sendMsgToFront(stationId,"rt_event_happen");
+    public void pushRtEventFlag(String stationId){
+        try {
+            //触发统计
+            exeStatistics();
+            BigScreenWebSocketEndpoint.sendMessage(stationId, "rt_event_happen");
+        } catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+    /**
+     * 调用websocket推送实时事件标识给前端
+     */
+    @Override
+    public void pushRtEventFlag2(){
+        try {
+            //触发统计
+            exeStatistics();
+            BigScreenWebSocketEndpoint.sendMessage("rt_event_happen2");
+        } catch (Exception e){
+            e.printStackTrace();
+        }
     }
-
     /**
      * 进行统计
      */

+ 1 - 1
src/main/java/com/care/bigscreen/websocket/BigScreenWebSocketEndpoint.java

@@ -135,7 +135,7 @@ public class BigScreenWebSocketEndpoint {
      * @param stationId 服务站ID
      * @param msg        发送的信息
      */
-    public static void sendMsgToFront(String stationId,String msg) {
+    public static void sendMessage(String stationId,String msg) throws IOException  {
         //根据服务站ID,匹配连接并发送消息
         for (BigScreenWebSocketEndpoint endpoint : currentWebSocketSession) {
             Session session = endpoint.getSession();

+ 33 - 23
src/main/java/com/care/bms/controller/DeviceController.java

@@ -39,19 +39,28 @@ public class DeviceController {
     @GetMapping("/list")
     @ApiOperation(value = "设备列表分页")
     @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "stationId", value = "服务站ID"),
+            @ApiImplicitParam(paramType = "query", name = "devCode", value = "设备编码"),
+            @ApiImplicitParam(paramType = "query", name = "activeStatus", value = "激活状态"),
+            @ApiImplicitParam(paramType = "query", name = "chambName", value = "关联管家"),
             @ApiImplicitParam(paramType = "query", name = "status", value = "状态"),
             @ApiImplicitParam(paramType = "query", name = "houseAddr", value = "地址"),
-            @ApiImplicitParam(paramType = "query", name = "stationId", value = "服务站ID"),
+            @ApiImplicitParam(paramType = "query", name = "chambId", value = "管家ID"),
+            @ApiImplicitParam(paramType = "query", name = "memberId", 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 = "stationId", required = false) Long stationId,
                                                  @RequestParam(value = "devCode", required = false) String devCode,
-                                               @RequestParam(value = "stationId", required = false) Long stationId,
-                                               PageReqVO pageReqVo){
+                                                 @RequestParam(value = "activeStatus", required = false) String activeStatus,
+                                                 @RequestParam(value = "chambName", required = false) String chambName,
+                                                 @RequestParam(value = "status", required = false) String status,
+                                                 @RequestParam(value = "houseAddr", required = false) String houseAddr,
+                                                 @RequestParam(value = "chambId", required = false) Long chambId,
+                                                 @RequestParam(value = "chambId", required = false) Long memberId,
+                                                 PageReqVO pageReqVo){
         try {
             UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
-            IPage<DeviceVO> pageResponse = this.deviceService.listDevice(houseAddr,stationId,status,devCode,loginUser ,pageReqVo);
+            IPage<DeviceVO> pageResponse = this.deviceService.listDevice(stationId,devCode,activeStatus,chambName,status,houseAddr,chambId,memberId,loginUser ,pageReqVo);
             return PageResult.success(pageResponse.getRecords(),pageResponse.getCurrent(),pageResponse.getSize(),pageResponse.getTotal());
         }catch (BDException e) {
             log.error("设备列表查询-分页列表出现异常",e);
@@ -63,25 +72,25 @@ public class DeviceController {
     }
 
 
-    @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("/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 = "新设备")
+    @ApiOperation(value = "新设备")
     public Result<Object> update(HttpServletRequest request,@RequestHeader("token") String token,
                                    @RequestBody DeviceVO vo){
         try {
@@ -96,6 +105,7 @@ public class DeviceController {
         }
     }
 
+
     @GetMapping("/getDeviceInfo/{deviceId}")
     @ApiOperation(value = "详情")
     public Result<DeviceVO> getDeviceInfo(HttpServletRequest request,@RequestHeader("token") String token,@PathVariable("deviceId") Long deviceId){

+ 78 - 0
src/main/java/com/care/bms/controller/EventHandleController.java

@@ -1,5 +1,6 @@
 package com.care.bms.controller;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.care.bms.service.BmsEventOrderService;
@@ -65,6 +66,28 @@ public class EventHandleController {
             return PageResult.error( "获取列表失败");
         }
     }
+
+    /**
+     *未处理事件数量查询
+     * @param request
+     * @return
+     */
+    @GetMapping("/not-handle/getCount")
+    @ApiOperation(tags = {"未处理事件"},value = "未处理事件数量查询")
+    public Result<Integer> getNotHandleCount(HttpServletRequest request, @RequestHeader(value = "token") String token){
+        try {
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            Integer count = this.bmsEventOrderService.getTodoOrderCount(OrderStatusEnum.TODO.getValue(), null,loginUser);
+            return Result.success(count);
+        }catch (BDException e) {
+            log.error("未处理事件数量查询出现异常",e);
+            return  Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("事件处理: 未处理事件数量查询出现异常",e);
+            return Result.error( "获取未处理事件数量失败");
+        }
+    }
+
     @GetMapping("/my-handle/list")
     @ApiOperation(tags = {"我的处理事件"},value = "我的处理事件查询 分页")
     @ApiImplicitParams(value = {
@@ -107,6 +130,28 @@ public class EventHandleController {
             return PageResult.error( "获取列表失败");
         }
     }
+
+    /**
+     *近期处理事件(处理中事件)
+     * @param request
+     * @return
+     */
+    @GetMapping("/recent-handle/list")
+    @ApiOperation(tags = {"近期处理事件"},value = "近期处理事件(只有坐席能用)")
+    public Result<List<EventOrderVO>> listRecentHandle(HttpServletRequest request, @RequestHeader(value = "token") String token){
+        try {
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            List<EventOrderVO> datas = this.bmsEventOrderService.listRecentHandle(OrderStatusEnum.DOING.getValue(),loginUser);
+            return PageResult.success(datas);
+        }catch (BDException e) {
+            log.error("近期处理事件查询列表出现异常",e);
+            return  PageResult.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("事件处理: 近期处理事件查询出现异常",e);
+            return PageResult.error( "获取列表失败");
+        }
+    }
+
     @PostMapping("/receive/{orderId}")
     @ApiOperation(tags = {"未处理事件"},value = "立即处理-领取工单")
     public Result<Object> receiveOrder(HttpServletRequest request,@RequestHeader("token") String token,@PathVariable("orderId") Long orderId){
@@ -121,6 +166,13 @@ public class EventHandleController {
         return  Result.success("查询成功!",orderInfo);
     }
 
+    @GetMapping("/getChambList/{orderId}")
+    @ApiOperation(tags = {"事件处理"},value = "主管家和改派管家列表查询")
+    public Result<List<ChamberlainVO>> getChambList(HttpServletRequest request,@RequestHeader("token") String token,@PathVariable("orderId") Long orderId){
+        List<ChamberlainVO> older = this.bmsEventOrderService.queryChambList(orderId);
+        return  Result.success("查询成功!",older);
+    }
+
     @GetMapping("/getOlderList/{orderId}")
     @ApiOperation(tags = {"事件处理"},value = "被监护人信息列表")
     public Result<List<OrderOlderVO>> getOlderList(HttpServletRequest request,@RequestHeader("token") String token,@PathVariable("orderId") Long orderId){
@@ -244,4 +296,30 @@ public class EventHandleController {
             return  Result.error("查询失败!");
         }
     }
+
+    @GetMapping("/getFreeKeeperList/{orderId}")
+    @ApiOperation(tags = {"事件处理"},value = "获取空闲管家列表")
+    public Result<List<ChamberlainVO> > getFreeKeeperList(HttpServletRequest request,@RequestHeader("token") String token, @PathVariable("orderId") Long orderId){
+        List<ChamberlainVO> chamberlainVOList = this.bmsEventOrderService.getFreeChamberlainList(orderId);
+        if (CollUtil.isNotEmpty(chamberlainVOList)) {
+            return  Result.success("查询成功!",chamberlainVOList);
+        }else{
+            return  Result.error("没有空闲管家!");
+        }
+    }
+
+
+    @PostMapping("/assignKeeper/{orderId}/{chambId}")
+    @ApiOperation(tags = {"事件处理"},value = "指派管家")
+    public Result<Object> assignKeeper(HttpServletRequest request,@RequestHeader("token") String token,
+                                                   @PathVariable("orderId") Long orderId,
+                                                   @PathVariable("chambId") Long chambId){
+
+        if (this.bmsEventOrderService.updateCareEventOrderChamb(orderId,chambId)) {
+            return  Result.success("指派管家成功!");
+        }else{
+            return  Result.error("指派管家失败!");
+        }
+
+    }
 }

+ 125 - 0
src/main/java/com/care/bms/controller/MemberInfoController.java

@@ -0,0 +1,125 @@
+package com.care.bms.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.care.bms.service.BmsMemberInfoService;
+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.vo.PageReqVO;
+import com.care.common.vo.memberinfo.MemberInfoVO;
+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 java.util.List;
+
+/**
+ * @Author: stw
+ * @Date: 2021/8/26
+ * @Desc:
+ */
+@RestController
+@Api(value = "MemberInfoController", tags = { "后台用户管理" })
+@Slf4j
+@RequestMapping("/bms/memberinfo")
+@Permission
+public class MemberInfoController {
+
+    @Autowired
+    private BmsMemberInfoService bmsMemberInfoService;
+
+
+    @GetMapping("/listMemberInfo")
+    @ApiOperation(value = "用户列表分页")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "name", value = "用户名"),
+            @ApiImplicitParam(paramType = "query", name = "phone", value = "电话"),
+    })
+    public PageResult<List<MemberInfoVO>> listMemberInfo(@RequestHeader(value = "token") String token,
+                                               @RequestParam(value = "name", required = false) String name,
+                                               @RequestParam(value = "phone", required = false) String phone,
+                                               PageReqVO pageReqVo){
+        try {
+            IPage<MemberInfoVO> pageResponse = this.bmsMemberInfoService.listCareMemberInfo(name,phone,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("/addMemberInfo")
+//    @ApiOperation(value = "新增用户")
+//    public Result<Object> addMemberInfo(@RequestHeader("token") String token,
+//                                   @RequestBody MemberInfoVO vo){
+//        try {
+//            this.bmsMemberInfoService.createCareMemberInfo(vo);
+//            return  Result.success("新增成功!");
+//        }catch (BDException e) {
+//            log.error("新增用户-出现异常",e);
+//            return Result.error(e.getMessage());
+//        } catch (Exception e) {
+//            log.error("用户管理: 新增用户出现异常",e);
+//            return Result.error("新增失败!");
+//        }
+//    }
+
+
+    @PostMapping("/updateMemberInfoStatus/{memberId}/{status}")
+    @ApiOperation(value = "修改用户状态,状态:0可用,1禁用")
+    public Result<Object> updateMemberInfoStatus(@RequestHeader("token") String token,
+                                                 @PathVariable("memberId") Long memberId,
+                                                 @PathVariable("status") String status) {
+        if (this.bmsMemberInfoService.updateCareMemberInfoStatus(memberId, status)) {
+            return Result.success("更新成功!");
+        } else {
+            return Result.error("更新失败!");
+        }
+    }
+
+//    @PostMapping("/updateMemberInfo")
+//    @ApiOperation(value = "修改用户")
+//    public Result<Object> updateMemberInfo(@RequestHeader("token") String token,
+//                                 @RequestBody MemberInfoVO vo){
+//        try {
+//            this.bmsMemberInfoService.updateCareMemberInfo(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("/getMemberInfoInfo/{memberId}")
+//    @ApiOperation(value = "用户详情")
+//    public Result<MemberInfoVO> getMemberInfoInfo(@RequestHeader("token") String token,@PathVariable("memberId") Long memberId){
+//        MemberInfoVO orderInfo = this.bmsMemberInfoService.getCareMemberInfoById(memberId);
+//        return  Result.success("查询成功!",orderInfo);
+//    }
+//
+//    @PostMapping("/deleteMemberInfo/{memberId}")
+//    @ApiOperation(value = "删除用户")
+//    public Result<Object> deleteMemberInfo(HttpServletRequest request,@RequestHeader("token") String token,
+//                                 @PathVariable("memberId") Long memberId){
+//        try {
+//            this.bmsMemberInfoService.deleteById(memberId);
+//            return  Result.success("删除成功!");
+//        } catch (Exception e) {
+//            log.error("用户管理: 删除出现异常",e);
+//            return Result.error("删除失败!");
+//        }
+//    }
+}

+ 97 - 3
src/main/java/com/care/bms/controller/SysUserController.java

@@ -1,10 +1,19 @@
 package com.care.bms.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.care.bms.service.BmsSysUserService;
 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 com.care.common.vo.sysuser.CareSysUserVO;
 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;
@@ -19,7 +28,7 @@ import java.util.List;
  * @Desc:
  */
 @RestController
-@Api(value = "StationController", tags = { "后台用户管理" })
+@Api(value = "SysUserController", tags = { "后台管家管理" })
 @Slf4j
 @RequestMapping("/bms/sysuser")
 @Permission
@@ -29,12 +38,12 @@ public class SysUserController {
     private BmsSysUserService bmsSysUserService;
 
     /**
-     *服务站下拉列表
+     *管家下拉列表
      * @param request
      * @return
      */
     @GetMapping("/listKeeper4Select")
-    @ApiOperation(tags = {"房屋管理"},value = "某个服务站下的管家下拉列表")
+    @ApiOperation(value = "某个服务站下的管家下拉列表")
     public Result<List<CareSysUserVO>> listNotHandle(HttpServletRequest request, @RequestHeader(value = "token") String token,
                                                      @RequestParam(name = "stationId") Long stationId){
         try {
@@ -46,4 +55,89 @@ public class SysUserController {
         }
     }
 
+
+    @GetMapping("/listKeeper")
+    @ApiOperation(value = "管家列表分页")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "name", value = "管家姓名"),
+            @ApiImplicitParam(paramType = "query", name = "phone", value = "电话"),
+            @ApiImplicitParam(paramType = "query", name = "stationId", value = "服务站ID"),
+    })
+    public PageResult<List<CareSysUserVO>> listKeeper(HttpServletRequest request, @RequestHeader(value = "token") String token,
+                                               @RequestParam(value = "name", required = false) String name,
+                                               @RequestParam(value = "phone", required = false) String phone,
+                                               @RequestParam(value = "stationId", required = false) Long stationId,
+                                               PageReqVO pageReqVo){
+        try {
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            IPage<CareSysUserVO> pageResponse = this.bmsSysUserService.listCareSysUser(name,phone,stationId,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( "获取列表失败");
+        }
+    }
+
+    @GetMapping("/getKeeperFreeDev")
+    @ApiOperation(value = "获取没分配给管家的空闲设备列表")
+    public Result<List<DeviceVO>> getKeeperFreeDev(HttpServletRequest request, @RequestHeader("token") String token){
+        List<DeviceVO> list = this.bmsSysUserService.getFreeDeviceVOList();
+        return  Result.success("查询成功!",list);
+    }
+
+    @PostMapping("/addKeeper")
+    @ApiOperation(value = "新增管家")
+    public Result<Object> addKeeper(HttpServletRequest request,@RequestHeader("token") String token,
+                                   @RequestBody CareSysUserVO vo){
+        try {
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            this.bmsSysUserService.createCareSysUser(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("/updateKeeper")
+    @ApiOperation(value = "修改管家")
+    public Result<Object> updateKeeper(HttpServletRequest request,@RequestHeader("token") String token,
+                                 @RequestBody CareSysUserVO vo){
+        try {
+            this.bmsSysUserService.updateCareSysUser(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("/getKeeperInfo/{chambId}")
+    @ApiOperation(value = "管家详情")
+    public Result<CareSysUserVO> getKeeperInfo(HttpServletRequest request,@RequestHeader("token") String token,@PathVariable("chambId") Long chambId){
+        CareSysUserVO orderInfo = this.bmsSysUserService.getCareSysUserById(chambId);
+        return  Result.success("查询成功!",orderInfo);
+    }
+
+    @PostMapping("/deleteKeeper/{chambId}")
+    @ApiOperation(value = "删除管家")
+    public Result<Object> deleteKeeper(HttpServletRequest request,@RequestHeader("token") String token,
+                                 @PathVariable("chambId") Long chambId){
+        try {
+            this.bmsSysUserService.deleteById(chambId);
+            return  Result.success("删除成功!");
+        } catch (Exception e) {
+            log.error("管家管理: 删除出现异常",e);
+            return Result.error("删除失败!");
+        }
+    }
 }

+ 1 - 0
src/main/java/com/care/bms/mqtt/MqttMessageListener.java

@@ -141,6 +141,7 @@ public class MqttMessageListener implements IMqttMessageListener {
         order.setDevId(careDevice.getId());
         order.setDevName(careDevice.getDevName());
         order.setHouseName(careHouse.getName());
+        order.setMemberId(careDevice.getMemberId());
         order.setTitle(careHouse.getAddr());
         order.setOrderType(orderType);
         order.setStatus(OrderStatusEnum.TODO.getValue());

+ 172 - 12
src/main/java/com/care/bms/service/BmsEventOrderService.java

@@ -118,7 +118,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")
+                //.last("limit 100")
                 .orderByAsc(CareEventOrder::getCreateTime);
 
         List<CareEventOrder> datas = this.careEventOrderService.list(queryWrapper);
@@ -134,6 +134,26 @@ public class BmsEventOrderService {
         }
         return results;
     }
+    /**
+     *
+     * 工单数量查询
+     * @param orderStatus
+     * @param olderName
+     * @param loginUser
+     * @return
+     */
+    public Integer getTodoOrderCount(String orderStatus, String olderName, UserLogindConvertVO loginUser) {
+        QueryWrapper<CareEventOrder> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(StrUtil.isNotEmpty(orderStatus),CareEventOrder::getStatus, orderStatus)
+                .like(StrUtil.isNotEmpty(olderName),CareEventOrder::getOlderName,olderName)
+                .eq(CareEventOrder::getOrgId,loginUser.getOrgId())
+                .eq(loginUser.getStationId()!=null,CareEventOrder::getStationId,loginUser.getStationId());
+
+        int count = this.careEventOrderService.count(queryWrapper);
+
+        return count;
+    }
+
     /**
      * 我的处理事件 - 坐席
      *
@@ -167,6 +187,34 @@ public class BmsEventOrderService {
         return results;
     }
 
+    /**
+     * 近期事件查询
+     * @param orderStatus
+     * @param loginUser
+     * @return
+     */
+    public List<EventOrderVO> listRecentHandle(String orderStatus, UserLogindConvertVO loginUser) {
+        QueryWrapper<CareEventOrder> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(StrUtil.isNotEmpty(orderStatus),CareEventOrder::getStatus, orderStatus)
+                .eq(CareEventOrder::getOrgId,loginUser.getOrgId())
+                .eq(loginUser.getStationId()!=null,CareEventOrder::getStationId,loginUser.getStationId())
+                .eq(CareEventOrder::getSeatId,loginUser.getId())
+                .orderByAsc(CareEventOrder::getCreateTime);
+
+        List<CareEventOrder> datas = this.careEventOrderService.list(queryWrapper);
+        List<EventOrderVO> results = Lists.newArrayList();
+        if(CollUtil.isNotEmpty(datas)){
+            datas.forEach(item -> {
+                EventOrderVO  resVO = new EventOrderVO();
+                BeanUtils.copyProperties(item,resVO);
+                resVO.setOrderTypeName(OrderTypeEnum.getCodeToName(item.getOrderType()));
+                resVO.setStatusName(OrderStatusEnum.getCodeToName(item.getStatus()));
+                results.add(resVO);
+            });
+        }
+        return results;
+    }
+
     /**
      * 处理工单
      * 使用分布式锁
@@ -217,12 +265,81 @@ public class BmsEventOrderService {
             CareHouse house = this.careHouseService.getById(order.getHouseId());
             CareHouseVO houseVO = new CareHouseVO();
             BeanUtil.copyProperties(house,houseVO);
-            houseVO.setRelationTypeDesc("屋主");
+            //houseVO.setRelationTypeDesc("屋主");
             eventOrderVO.setHouse(houseVO);
         }
         return  eventOrderVO;
     }
 
+    /**
+     * 主管家改派管家列表查询
+     * @param orderId
+     * @return
+     */
+    public List<ChamberlainVO>  queryChambList(Long orderId){
+        List<ChamberlainVO> chambList = new ArrayList<>();
+
+        ChamberlainVO mainVO = null;
+        ChamberlainVO assignVO = null;
+
+        CareEventOrder order = this.careEventOrderService.getById(orderId);
+        CareDevice dev = this.careDeviceService.getById(order.getDevId());
+        if(dev != null){
+            CareSysUser careSysUser = this.careSysUserService.getById(dev.getChambId());
+            if (careSysUser != null) {
+                mainVO = new ChamberlainVO();
+                BeanUtil.copyProperties(careSysUser,mainVO);
+                mainVO.setIsMain(TrueFalseEnum.TRUE.getValue());
+                mainVO.setStatusDesc(ChambStatusEnum.getCodeToName(mainVO.getStatus()));
+            }
+        }
+        CareEventOrderChamb careEventOrderChamb = this.careEventOrderChambService.getChambOrderByOrderId(orderId);
+        if(careEventOrderChamb != null) {
+            CareSysUser careSysUser = this.careSysUserService.getById(careEventOrderChamb.getChambId());
+            if(careSysUser != null){
+                assignVO = new ChamberlainVO();
+                BeanUtil.copyProperties(careSysUser,assignVO);
+                assignVO.setIsMain(TrueFalseEnum.FALSE.getValue());
+                assignVO.setStatusDesc(ChambStatusEnum.getCodeToName(mainVO.getStatus()));
+            }
+        }
+
+        if (mainVO != null && assignVO != null) {
+            if(mainVO.getId().equals(assignVO.getId())){ //没有指派管家
+                if(ChambStatusEnum.BUSY.getValue().equals(mainVO.getStatus())){ //主状态是忙碌时拆分子状态
+                    if(ChambOrderStatusEnum.DOING.equals(careEventOrderChamb.getStatus())){
+                        mainVO.setSubStatus(ChambSubStatusEnum.DOING.getValue());//处理中
+                    } else {
+                        mainVO.setSubStatus(ChambSubStatusEnum.BUSY.getValue());//忙碌
+                    }
+                } else {//主状态不是忙碌时设置子状态和主状态相同
+                    mainVO.setSubStatus(mainVO.getStatus());
+                }
+                mainVO.setSubStatusDesc(ChambStatusEnum.getCodeToName(mainVO.getSubStatus()));
+                chambList.add(mainVO);
+            } else{ //指派了管家
+                //设置主管家子状态和主状态相同:空闲、休假、忙碌
+                mainVO.setSubStatus(mainVO.getStatus());
+
+                //设置指派管家状态
+                if(ChambStatusEnum.BUSY.getValue().equals(assignVO.getStatus())) { //指派管家的主状态是忙碌时拆分子状态
+                    if(ChambOrderStatusEnum.DOING.equals(careEventOrderChamb.getStatus())){
+                        assignVO.setSubStatus(ChambSubStatusEnum.DOING.getValue());//处理中
+                    } else {
+                        assignVO.setSubStatus(ChambSubStatusEnum.BUSY.getValue());//忙碌
+                    }
+                } else {//指派管家的主状态不是忙碌时设置子状态和主状态相同
+                    assignVO.setSubStatus(assignVO.getStatus());
+                }
+                mainVO.setSubStatusDesc(ChambStatusEnum.getCodeToName(mainVO.getSubStatus()));
+                chambList.add(mainVO);
+                assignVO.setSubStatusDesc(ChambStatusEnum.getCodeToName(assignVO.getSubStatus()));
+                chambList.add(assignVO);
+            }
+        }
+        return chambList;
+    }
+
     /**
      * 查询老人列表
      * @param orderId
@@ -230,24 +347,24 @@ public class BmsEventOrderService {
      */
     public List<OrderOlderVO>  queryOrderOlderList(Long orderId){
         List<OrderOlderVO> orderOlderVOList = Lists.newArrayList();
-        CareEventOrder order = this.careEventOrderService.getById(orderId);
+//        CareEventOrder order = this.careEventOrderService.getById(orderId);
         QueryWrapper<CareEventOrderOlder> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(CareEventOrderOlder::getOrderId,orderId);
         List<CareEventOrderOlder> ceoos  = this.careEventOrderOlderService.list(queryWrapper);
         if (CollUtil.isNotEmpty(ceoos)){
-            ChamberlainVO chamberlainVO = new ChamberlainVO();
-            CareHouse house = this.careHouseService.getById(order.getHouseId());
-            if (house!=null){
-                CareSysUser user = this.careSysUserService.getById(house.getChambId());
-                if (user!= null){
-                    BeanUtil.copyProperties(user,chamberlainVO);
-                }
-            }
+//            ChamberlainVO chamberlainVO = new ChamberlainVO();
+//            CareHouse house = this.careHouseService.getById(order.getHouseId());
+//            if (house!=null){
+//                CareSysUser user = this.careSysUserService.getById(house.getChambId());
+//                if (user!= null){
+//                    BeanUtil.copyProperties(user,chamberlainVO);
+//                }
+//            }
             ceoos.forEach(item->{
                 OrderOlderVO orderOlderVO = new OrderOlderVO();
                 BeanUtil.copyProperties(item,orderOlderVO);
                 orderOlderVO.setStatusDesc(OrderOlderStatusEnum.getCodeToName(orderOlderVO.getStatus()));
-                orderOlderVO.setChamberlain(chamberlainVO);
+                //orderOlderVO.setChamberlain(chamberlainVO);
                 orderOlderVOList.add(orderOlderVO);
             });
 
@@ -514,4 +631,47 @@ public class BmsEventOrderService {
         }
         return null;
     }
+
+    /**
+     * 获取空闲管家
+     * @return
+     */
+    public List<ChamberlainVO>  getFreeChamberlainList(Long orderId){
+        List<ChamberlainVO> freeChamberlainList = new ArrayList<>();
+        CareEventOrder order =   this.careEventOrderService.getById(orderId);
+
+        QueryWrapper<CareSysUser> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CareSysUser::getStatus,ChambStatusEnum.FREE).eq(CareSysUser::getOrgId,order.getOrgId()).eq(CareSysUser::getStationId,order.getStationId());
+        List<CareSysUser> list = this.careSysUserService.list(queryWrapper);
+        if(CollUtil.isNotEmpty(list)){
+            list.forEach(item->{
+                ChamberlainVO chamberlainVO = new ChamberlainVO();
+                BeanUtil.copyProperties(item,chamberlainVO);
+                chamberlainVO.setStatusDesc(ChambStatusEnum.getCodeToName(chamberlainVO.getStatus()));
+                CareDevice careDevice = this.careDeviceService.getById(order.getDevId());
+                if(careDevice != null && chamberlainVO.getId().equals(careDevice.getChambId())) {
+                    chamberlainVO.setIsMain(TrueFalseEnum.TRUE.getValue());
+                } else {
+                    chamberlainVO.setIsMain(TrueFalseEnum.FALSE.getValue());
+                }
+                freeChamberlainList.add(chamberlainVO);
+            });
+        }
+
+        return freeChamberlainList;
+    }
+
+    /**
+     * 更新管家工单
+     * @param orderId
+     * @param chambId
+     */
+    public boolean updateCareEventOrderChamb(Long orderId,Long chambId){
+        UpdateWrapper<CareEventOrderChamb> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().eq(CareEventOrderChamb::getOrderId,orderId)
+                .set(CareEventOrderChamb::getChambId,chambId)
+                .set(CareEventOrderChamb::getModifyTime,DateUtil.date());
+        this.careEventOrderChambService.update(updateWrapper);
+        return true;
+    }
 }

+ 184 - 0
src/main/java/com/care/bms/service/BmsMemberInfoService.java

@@ -0,0 +1,184 @@
+package com.care.bms.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.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.care.common.entity.*;
+
+import com.care.common.service.*;
+import com.care.common.util.MyBeanUtils;
+import com.care.common.vo.PageReqVO;
+
+
+import com.care.common.vo.memberinfo.MemberInfoVO;
+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;
+
+/**
+ * 频安宝用户表(CareMemberInfo)表服务实现类
+ *
+ * @author makejava
+ * @since 2021-05-21 00:08:38
+ */
+@Service
+public class BmsMemberInfoService {
+
+    @Resource
+    private CareMemberInfoService careMemberInfoService;
+    @Resource
+    private CareDeviceService careDeviceService;
+
+    
+    /**
+     * 查询频安宝用户列表
+     * @return
+             */
+    public IPage<MemberInfoVO> listCareMemberInfo(String name, String phone, PageReqVO pageReqVo) {
+            IPage<CareMemberInfo> page = new Page<>(pageReqVo.getCurrent(), pageReqVo.getPageSize());
+            QueryWrapper<CareMemberInfo> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().like(StrUtil.isNotEmpty(name),CareMemberInfo::getName,name)
+                    .like(StrUtil.isNotEmpty(phone),CareMemberInfo::getPhone,phone)
+                    .orderByAsc(CareMemberInfo::getName);
+
+            IPage<CareMemberInfo> pageRes = this.careMemberInfoService.page(page, queryWrapper);
+            IPage<MemberInfoVO> results = new Page<>(pageRes.getCurrent(),pageRes.getSize(),pageRes.getTotal());
+            if(CollUtil.isNotEmpty(pageRes.getRecords())){
+                List<MemberInfoVO> list = new ArrayList<>();
+                pageRes.getRecords().forEach(item -> {
+                    MemberInfoVO  resVO = new MemberInfoVO();
+                    BeanUtils.copyProperties(item,resVO);
+                    //服务设备数量
+                    QueryWrapper<CareDevice> queryWrapper1 = new QueryWrapper<>();
+                    queryWrapper1.lambda().eq(CareDevice::getMemberId,resVO.getId());
+                    resVO.setDevCount(this.careDeviceService.count(queryWrapper1));
+                    list.add(resVO);
+                });
+                results.setRecords(list);
+            }
+            return results;
+    }
+
+    /**
+     * 删除频安宝用户
+     * @param id
+     * @return
+     */
+    public boolean deleteById(Long id){
+        return this.careMemberInfoService.removeById(id);
+    }
+
+    /**
+     * 频安宝用户详情
+     * @param id
+     * @return
+     */
+    public MemberInfoVO getCareMemberInfoById(Long id){
+        CareMemberInfo careMemberInfo = this.careMemberInfoService.getById(id);
+        if (careMemberInfo!=null){
+            MemberInfoVO resVO = new MemberInfoVO();
+            BeanUtil.copyProperties(careMemberInfo,resVO);
+
+            //服务设备数量
+            QueryWrapper<CareDevice> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.lambda().eq(CareDevice::getMemberId,resVO.getId());
+            resVO.setDevCount(this.careDeviceService.count(queryWrapper1));
+            return resVO;
+        }
+        return null;
+    }
+
+
+    /**
+     * 保存频安宝用户
+     * @param vo
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void createCareMemberInfo(MemberInfoVO vo){
+        //保存频安宝用户
+        CareMemberInfo careMemberInfo = new CareMemberInfo();
+        BeanUtil.copyProperties(vo,careMemberInfo);
+        careMemberInfo.setCreateTime(new Date());
+
+        this.careMemberInfoService.save(careMemberInfo);
+
+//        //更新设备
+//        List<DeviceVO> hasDeviceVOList = vo.getHasDeviceVOList();
+//        if (CollUtil.isNotEmpty(hasDeviceVOList)) {
+//            hasDeviceVOList.forEach(item -> {
+//                CareDevice careDevice = new CareDevice();
+//                BeanUtil.copyProperties(item,careDevice);
+//                careDevice.setMemberId(careMemberInfo.getId());
+//                careDeviceService.updateById(careDevice);
+//            });
+//        }
+    }
+
+    /**
+     * 修改频安宝用户
+     * @param vo
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void updateCareMemberInfo(MemberInfoVO vo){
+        //保存频安宝用户
+        CareMemberInfo careMemberInfo = this.careMemberInfoService.getById(vo.getId());
+        MyBeanUtils.copyProperties(vo,careMemberInfo);
+        careMemberInfo.setModifyTime(new Date());
+        this.careMemberInfoService.updateById(careMemberInfo);
+
+//        List<DeviceVO> hasDeviceVOList = vo.getHasDeviceVOList();
+//        //查找原来拥有的设备
+//        QueryWrapper<CareDevice> queryWrapper = new QueryWrapper<>();
+//        queryWrapper.lambda().eq(CareDevice::getMemberId,vo.getId());
+//        List<CareDevice> hasDeviceListOld = this.careDeviceService.list(queryWrapper);
+//
+//        if (CollUtil.isNotEmpty(hasDeviceListOld)) {
+//          for(CareDevice careDevice : hasDeviceListOld){
+//              boolean has = false;
+//              for(DeviceVO deviceVO : hasDeviceVOList) {
+//                  if(careDevice.getId().equals(deviceVO.getId())){
+//                      has = true;
+//                      break;
+//                  }
+//              }
+//              if(!has) {
+//                  //将不再拥有的设备的频安宝用户id置空
+//                  this.careDeviceService.updateDevChamb(careDevice.getId());
+//              }
+//          }
+//        }
+//
+//        //更新拥有的设备
+//        if (CollUtil.isNotEmpty(hasDeviceVOList)) {
+//            hasDeviceVOList.forEach(item -> {
+//                CareDevice careDevice = new CareDevice();
+//                BeanUtil.copyProperties(item,careDevice);
+//                careDevice.setMemberId(careMemberInfo.getId());
+//                careDeviceService.updateById(careDevice);
+//            });
+//        }
+
+    }
+    /**
+     * 修改频安宝用户状态
+     * @param status
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public boolean updateCareMemberInfoStatus(Long id, String status){
+        //修改频安宝用户
+        CareMemberInfo careMemberInfo = this.careMemberInfoService.getById(id);
+        careMemberInfo.setStatus(status);
+        careMemberInfo.setModifyTime(new Date());
+        this.careMemberInfoService.updateById(careMemberInfo);
+        return true;
+    }
+
+}

+ 216 - 4
src/main/java/com/care/bms/service/BmsSysUserService.java

@@ -1,20 +1,29 @@
 package com.care.bms.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.QueryWrapper;
-import com.care.common.entity.CareOrganization;
-import com.care.common.entity.CareSysUser;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.care.common.entity.*;
+
 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.service.*;
+import com.care.common.util.MyBeanUtils;
+import com.care.common.vo.PageReqVO;
 import com.care.common.vo.UserLogindConvertVO;
+import com.care.common.vo.device.DeviceVO;
 import com.care.common.vo.sysuser.CareSysUserVO;
 import org.apache.commons.codec.digest.DigestUtils;
+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;
 
 /**
@@ -29,7 +38,16 @@ public class BmsSysUserService{
     @Resource
     private CareOrganizationService careOrganizationService;
     @Resource
+    private CareStationService careStationService;
+    @Resource
     private CareSysUserService careSysUserService;
+    @Resource
+    private CareDeviceService careDeviceService;
+    @Resource
+    private CareEventOrderChambService careEventOrderChambService;
+    @Resource
+    private CareHouseService careHouseService;
+
 
     public UserLogindConvertVO getLoginUser(String orgCode, String phone,String password) {
         UserLogindConvertVO userLogindConvertVO = null;
@@ -76,4 +94,198 @@ public class BmsSysUserService{
         }
         return datas;
     }
+
+    /**
+     * 查询安全管家列表
+     * @param stationId
+     * @return
+             */
+    public IPage<CareSysUserVO> listCareSysUser(String name,String phone, Long stationId,UserLogindConvertVO loginUser, PageReqVO pageReqVo) {
+            IPage<CareSysUser> page = new Page<>(pageReqVo.getCurrent(), pageReqVo.getPageSize());
+            QueryWrapper<CareSysUser> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().like(StrUtil.isNotEmpty(name),CareSysUser::getName,name)
+                    .like(StrUtil.isNotEmpty(phone),CareSysUser::getPhone,phone)
+                    .eq(CareSysUser::getOrgId,loginUser.getOrgId())
+                    .eq(loginUser.getStationId()!=null,CareSysUser::getStationId,loginUser.getStationId())
+                    .eq(stationId!=null,CareSysUser::getStationId,stationId)
+                    .eq(CareSysUser::getRole,UserRoleEnum.CHANMB.getValue())
+                    .orderByAsc(CareSysUser::getName);
+
+            IPage<CareSysUser> pageRes = this.careSysUserService.page(page, queryWrapper);
+            IPage<CareSysUserVO> results = new Page<>(pageRes.getCurrent(),pageRes.getSize(),pageRes.getTotal());
+            if(CollUtil.isNotEmpty(pageRes.getRecords())){
+                List<CareSysUserVO> list = new ArrayList<>();
+                pageRes.getRecords().forEach(item -> {
+                    CareSysUserVO  resVO = new CareSysUserVO();
+                    BeanUtils.copyProperties(item,resVO);
+                    //服务设备数量
+                    QueryWrapper<CareDevice> queryWrapper1 = new QueryWrapper<>();
+                    queryWrapper1.lambda().eq(CareDevice::getChambId,resVO.getId());
+                    resVO.setDevCount(this.careDeviceService.count(queryWrapper1));
+                    //服务次数
+                    QueryWrapper<CareEventOrderChamb> queryWrapper2 = new QueryWrapper<>();
+                    queryWrapper2.lambda().eq(CareEventOrderChamb::getChambId,resVO.getId()).ne(CareEventOrderChamb::getStatus,"3");
+                    resVO.setServeCount(this.careEventOrderChambService.count(queryWrapper2));
+
+                    CareStation station = this.careStationService.getById(resVO.getStationId());
+                    if (station!=null){
+                        resVO.setStationName(station.getShortName());
+                    }
+                    list.add(resVO);
+                });
+                results.setRecords(list);
+            }
+            return results;
+    }
+
+    /**
+     * 删除管家
+     * @param id
+     * @return
+     */
+    public boolean deleteById(Long id){
+        return this.careSysUserService.removeById(id);
+    }
+
+    /**
+     * 详情
+     * @param id
+     * @return
+     */
+    public CareSysUserVO getCareSysUserById(Long id){
+        CareSysUser careSysUser = this.careSysUserService.getById(id);
+        if (careSysUser!=null){
+            CareSysUserVO resVO = new CareSysUserVO();
+            BeanUtil.copyProperties(careSysUser,resVO);
+
+            //服务设备数量和列表
+            QueryWrapper<CareDevice> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.lambda().eq(CareDevice::getChambId,resVO.getId());
+            List<CareDevice> hasDeviceList = this.careDeviceService.list(queryWrapper1);
+            if(CollUtil.isNotEmpty(hasDeviceList)){
+                List<DeviceVO> hasDeviceVOList = new ArrayList<>();
+                hasDeviceList.forEach(item ->{
+                    DeviceVO deviceVO = new DeviceVO();
+                    BeanUtil.copyProperties(item,deviceVO);
+                    deviceVO.setHouseAddr(careHouseService.getById(deviceVO.getHouseId()).getAddr());
+                    hasDeviceVOList.add(deviceVO);
+                });
+                resVO.setHasDeviceVOList(hasDeviceVOList);
+                resVO.setDevCount(hasDeviceVOList.size());
+            } else {
+                resVO.setDevCount(0);
+            }
+
+
+            //服务次数
+            QueryWrapper<CareEventOrderChamb> queryWrapper2 = new QueryWrapper<>();
+            queryWrapper2.lambda().eq(CareEventOrderChamb::getChambId,resVO.getId()).ne(CareEventOrderChamb::getStatus,"3");
+            resVO.setServeCount(this.careEventOrderChambService.count(queryWrapper2));
+
+            CareStation station = this.careStationService.getById(resVO.getStationId());
+            if (station!=null){
+                resVO.setStationName(station.getShortName());
+            }
+
+            //空闲设备列表
+            resVO.setFreeDeviceVOList(getFreeDeviceVOList());
+            return resVO;
+        }
+        return null;
+    }
+
+    /**
+     * 获取空闲设备列表
+     * @return
+     */
+    public List<DeviceVO> getFreeDeviceVOList(){
+        QueryWrapper<CareDevice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().isNull(CareDevice::getChambId);
+        List<CareDevice> freeDeviceList = this.careDeviceService.list(queryWrapper);
+        List<DeviceVO> freeDeviceVOList = new ArrayList<>();
+        if(CollUtil.isNotEmpty(freeDeviceList)){
+            freeDeviceList.forEach(item ->{
+                DeviceVO deviceVO = new DeviceVO();
+                BeanUtil.copyProperties(item,deviceVO);
+                deviceVO.setHouseAddr(careHouseService.getById(deviceVO.getHouseId()).getAddr());
+                freeDeviceVOList.add(deviceVO);
+            });
+        }
+        return freeDeviceVOList;
+    }
+
+    /**
+     * 保存管家
+     * @param vo
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void createCareSysUser(CareSysUserVO vo,UserLogindConvertVO loginUser){
+        //保存管家
+        CareSysUser careSysUser = new CareSysUser();
+        BeanUtil.copyProperties(vo,careSysUser);
+        careSysUser.setCreateTime(new Date());
+        careSysUser.setRole(UserRoleEnum.CHANMB.getValue());
+        careSysUser.setStationId(loginUser.getStationId());
+        careSysUser.setOrgId(loginUser.getOrgId());
+
+        this.careSysUserService.save(careSysUser);
+
+        //更新设备
+        List<DeviceVO> hasDeviceVOList = vo.getHasDeviceVOList();
+        if (CollUtil.isNotEmpty(hasDeviceVOList)) {
+            hasDeviceVOList.forEach(item -> {
+                CareDevice careDevice = new CareDevice();
+                BeanUtil.copyProperties(item,careDevice);
+                careDevice.setChambId(careSysUser.getId());
+                careDeviceService.updateById(careDevice);
+            });
+        }
+    }
+
+    /**
+     * 修改管家
+     * @param vo
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void updateCareSysUser(CareSysUserVO vo){
+        //保存管家
+        CareSysUser careSysUser = this.careSysUserService.getById(vo.getId());
+        MyBeanUtils.copyProperties(vo,careSysUser);
+        careSysUser.setModifyTime(new Date());
+        this.careSysUserService.updateById(careSysUser);
+
+        List<DeviceVO> hasDeviceVOList = vo.getHasDeviceVOList();
+        //查找原来拥有的设备
+        QueryWrapper<CareDevice> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CareDevice::getChambId,vo.getId());
+        List<CareDevice> hasDeviceListOld = this.careDeviceService.list(queryWrapper);
+
+        if (CollUtil.isNotEmpty(hasDeviceListOld)) {
+          for(CareDevice careDevice : hasDeviceListOld){
+              boolean has = false;
+              for(DeviceVO deviceVO : hasDeviceVOList) {
+                  if(careDevice.getId().equals(deviceVO.getId())){
+                      has = true;
+                      break;
+                  }
+              }
+              if(!has) {
+                  //将不再拥有的设备的管家id置空
+                  this.careDeviceService.updateDevChamb(careDevice.getId());
+              }
+          }
+        }
+
+        //更新拥有的设备
+        if (CollUtil.isNotEmpty(hasDeviceVOList)) {
+            hasDeviceVOList.forEach(item -> {
+                CareDevice careDevice = new CareDevice();
+                BeanUtil.copyProperties(item,careDevice);
+                careDevice.setChambId(careSysUser.getId());
+                careDeviceService.updateById(careDevice);
+            });
+        }
+
+    }
+
 }

+ 206 - 13
src/main/java/com/care/bms/service/DeviceService.java

@@ -1,26 +1,31 @@
 package com.care.bms.service;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
 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.entity.*;
+import com.care.common.enums.*;
 import com.care.common.exception.BDException;
 import com.care.common.service.*;
+import com.care.common.util.MyBeanUtils;
 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.OrderContactorVO;
+import com.care.common.vo.order.OrderOlderVO;
 import lombok.Synchronized;
+import org.apache.commons.lang3.StringUtils;
 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
@@ -42,6 +47,20 @@ public class DeviceService {
     private CareEventOrderService careEventOrderService;
     @Resource
     private CareOrganizationService careOrganizationService;
+    @Resource
+    private CareOlderService careOlderService;
+    @Resource
+    private CareHouseContactService careHouseContactService;
+    @Resource
+    private CareHouseOlderRelService careHouseOlderRelService;
+    @Resource
+    private CareHouseContactRelService careHouseContactRelService;
+    @Resource
+    private CareMemberInfoService careMemberInfoService;
+    @Resource
+    private CareSysUserService careSysUserService;
+
+
     /**
      * 删除设备
      * @param id
@@ -49,6 +68,7 @@ public class DeviceService {
      */
     public boolean deleteById(Long id){
         MqttTool.removeOne(this.careDeviceService.getById(id));
+
         return this.careDeviceService.removeById(id);
     }
 
@@ -58,6 +78,15 @@ public class DeviceService {
             DeviceVO vo = new DeviceVO();
             BeanUtil.copyProperties(dev,vo);
             vo.setStatusName(DeviceStatusEnum.getCodeToName(vo.getStatus()));
+            vo.setActiveStatusName(DeviceActiveStatusEnum.getCodeToName(vo.getActiveStatus()));
+            vo.setDevSceneName(DeviceSceneEnum.getCodeToName(vo.getDevScene()));
+
+            CareSysUser careSysUser = this.careSysUserService.getById(vo.getChambId());
+            if (careSysUser != null){
+                vo.setChambPhone(careSysUser.getPhone());
+                vo.setChambName(careSysUser.getName());
+            }
+
             CareStation station = this.careStationService.getById(vo.getStationId());
             if (station!=null){
                 vo.setStationName(station.getShortName());
@@ -66,6 +95,36 @@ public class DeviceService {
             if (house!=null){
                 vo.setHouseAddr(house.getAddr());
             }
+            QueryWrapper<CareHouseOlderRel> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().eq(CareHouseOlderRel::getHouseId,dev.getHouseId());
+            List<CareHouseOlderRel> olderRels = careHouseOlderRelService.list(queryWrapper);
+            if(CollUtil.isNotEmpty(olderRels)) {
+                List<OrderOlderVO> orderOlderVOList = new ArrayList<>();
+                olderRels.forEach(item -> {
+                    CareOlder older = this.careOlderService.getById(item.getOlderId());
+                    OrderOlderVO orderOlderVO = new OrderOlderVO();
+                    BeanUtil.copyProperties(older,orderOlderVO);
+                    orderOlderVO.setLiveTypeDesc(OlderLiveTypeEnum.getCodeToName(orderOlderVO.getLiveType()));
+                    orderOlderVOList.add(orderOlderVO);
+                });
+                vo.setOrderOlderVOList(orderOlderVOList);
+            }
+
+            QueryWrapper<CareHouseContactRel> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.lambda().eq(CareHouseContactRel::getHouseId,dev.getHouseId());
+            List<CareHouseContactRel> contactRels = careHouseContactRelService.list(queryWrapper1);
+            if(CollUtil.isNotEmpty(contactRels)) {
+                List<OrderContactorVO> orderContactorVOList = new ArrayList<>();
+                contactRels.forEach(item -> {
+                    CareHouseContact contact = this.careHouseContactService.getById(item.getContactId());
+                    OrderContactorVO orderContactorVO = new OrderContactorVO();
+                    BeanUtil.copyProperties(contact,orderContactorVO);
+                    orderContactorVO.setRelationTypeDesc(RelationTypeEnum.getCodeToName(orderContactorVO.getRelationType()));
+                    orderContactorVOList.add(orderContactorVO);
+                });
+                vo.setOrderContactorVOList(orderContactorVOList);
+            }
+
             return vo;
         }
         return null;
@@ -91,9 +150,11 @@ public class DeviceService {
         //保存设备
         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));
@@ -104,20 +165,151 @@ public class DeviceService {
     }
 
     /**
-     * 保存设备
+     * 修改设备
      * @param vo
      */
     @Transactional(rollbackFor = Exception.class)
-    public void updateDevice(DeviceVO vo){
+    public void updateDevice(DeviceVO vo) {
+
+        List<OrderOlderVO> orderOlderVOList = vo.getOrderOlderVOList();
+        List<OrderContactorVO> orderContactorVOList = vo.getOrderContactorVOList();
+
+        if(CollUtil.isEmpty(orderOlderVOList) || CollUtil.isEmpty(orderContactorVOList)) {
+            return;
+        }
+
         //保存设备
         CareDevice device = this.careDeviceService.getById(vo.getId());
-        MqttTool.removeOne(device);
-        BeanUtil.copyProperties(vo,device);
-        device.setTopic("5JPD/monitor/"+device.getDevCode()+"/event");
+
+        if (DeviceActiveStatusEnum.ACTIVE.getValue().equals(device.getActiveStatus())) {
+            MqttTool.removeOne(device);
+        }
+
+        MyBeanUtils.copyProperties(vo, device);
+
+        //处理house
+        if (device.getHouseId() == null) { //新增
+            CareHouse careHouse = new CareHouse();
+            careHouse.setAddr(vo.getHouseAddr());
+            careHouse.setName(vo.getHouseAddr());
+            careHouse.setLatitude(vo.getLatitude());
+            careHouse.setLongitude(vo.getLongitude());
+            careHouse.setCreateTime(new Date());
+            careHouse.setOrgId(device.getOrgId());
+            careHouse.setStationId(device.getStationId());
+            this.careHouseService.save(careHouse);
+        } else { //修改
+            CareHouse careHouse = this.careHouseService.getById(device.getHouseId());
+            careHouse.setAddr(vo.getHouseAddr());
+            careHouse.setName(vo.getHouseAddr());
+            careHouse.setLatitude(vo.getLatitude());
+            careHouse.setLongitude(vo.getLongitude());
+            careHouse.setModifyTime(new Date());
+            this.careHouseService.updateById(careHouse);
+        }
+
+        //关联用户
+        //用手机号查找care_member_info表,有的话就关联上,没有的话只保留手机号在设备表
+        QueryWrapper<CareMemberInfo> queryWrapper0 = new QueryWrapper<>();
+        queryWrapper0.lambda().eq(CareMemberInfo::getPhone,vo.getMemberPhone());
+        CareMemberInfo careMemberInfo = this.careMemberInfoService.getOne(queryWrapper0);
+
+        if (careMemberInfo != null) { //关联,
+            device.setMemberId(careMemberInfo.getId());
+        } else { //置空
+            device.setMemberId(null);//TODO,是否生效?
+        }
+
+
+        //mqtt
+        if(StringUtils.isEmpty(device.getTopic())){
+            device.setTopic("5JPD/monitor/"+device.getDevCode()+"/event");
+        }
+        if(StringUtils.isEmpty(device.getClientId())){
+            Long time = System.currentTimeMillis();
+            device.setClientId(HexUtil.toHex(time));
+        }
+
         device.setModifyTime(new Date());
         this.careDeviceService.updateById(device);
-        //保存完后,启动通道
-        MqttTool.addOne(device, careDeviceService, bmsEventOrderService, careEventOrderService, careHouseService, careOrganizationService, careStationService);
+
+        List<Long> olderIdUpdates = new ArrayList<>();
+        orderOlderVOList.forEach(item -> {
+            CareOlder careOlder = new CareOlder();
+            BeanUtil.copyProperties(item, careOlder);
+            if(careOlder.getId() != null) {//修改
+                careOlder.setModifyTime(new Date());
+                olderIdUpdates.add(careOlder.getId());
+                careOlderService.updateById(careOlder);
+            } else { //新增
+                careOlder.setOrgId(device.getOrgId());
+                careOlder.setStationId(device.getStationId());
+                careOlder.setCreateTime(new Date());
+                careOlderService.save(careOlder);
+            }
+
+        });
+
+        List<Long> contactIdUpdates = new ArrayList<>();
+        orderContactorVOList.forEach(item -> {
+            CareHouseContact careHouseContact = new CareHouseContact();
+            BeanUtil.copyProperties(item, careHouseContact);
+            if(careHouseContact.getId() != null) {//修改
+                careHouseContact.setModifyTime(new Date());
+                contactIdUpdates.add(careHouseContact.getId());
+                careHouseContactService.updateById(careHouseContact);
+            } else { //新增
+                careHouseContact.setOrgId(device.getOrgId());
+                careHouseContact.setStationId(device.getStationId());
+                careHouseContact.setCreateTime(new Date());
+                careHouseContactService.save(careHouseContact);
+            }
+        });
+
+        //处理删除部分
+        //查询出来数据库里已经有的
+        QueryWrapper<CareHouseOlderRel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CareHouseOlderRel::getHouseId,device.getHouseId());
+        List<CareHouseOlderRel> olderRels = careHouseOlderRelService.list(queryWrapper);
+        if(CollUtil.isNotEmpty(olderRels)){
+            List<Long> olderIdDels = new ArrayList<>();
+            List<Long> olderReIdDels = new ArrayList<>();
+            olderRels.forEach(item -> {
+                if(!olderIdUpdates.contains(item.getOlderId())){
+                    olderReIdDels.add(item.getId());
+                    olderIdDels.add(item.getOlderId());
+                }
+            });
+           if(CollUtil.isNotEmpty(olderIdDels)){
+               this.careHouseOlderRelService.removeByIds(olderReIdDels);
+               this.careOlderService.removeByIds(olderIdDels);
+           }
+        }
+
+        //处理删除部分
+        //查询出来数据库里已经有的
+        QueryWrapper<CareHouseContactRel> queryWrapper2 = new QueryWrapper<>();
+        queryWrapper2.lambda().eq(CareHouseContactRel::getHouseId,device.getHouseId());
+        List<CareHouseContactRel> contactRels = careHouseContactRelService.list(queryWrapper2);
+        if(CollUtil.isNotEmpty(contactRels)){
+            List<Long> contactIdDels = new ArrayList<>();
+            List<Long> contactReIdDels = new ArrayList<>();
+            contactRels.forEach(item -> {
+                if(!contactIdUpdates.contains(item.getContactId())){
+                    contactReIdDels.add(item.getId());
+                    contactIdDels.add(item.getContactId());
+                }
+            });
+            if(CollUtil.isNotEmpty(contactIdDels)){
+                this.careHouseContactRelService.removeByIds(contactReIdDels);
+                this.careHouseContactService.removeByIds(contactIdDels);
+            }
+        }
+
+        if(DeviceActiveStatusEnum.ACTIVE.getValue().equals(device.getActiveStatus())) {
+            //保存完后,启动通道
+            MqttTool.addOne(device, careDeviceService, bmsEventOrderService, careEventOrderService, careHouseService, careOrganizationService, careStationService);
+        }
     }
     /**
      * 列表查询
@@ -125,7 +317,8 @@ public class DeviceService {
      * @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);
+    public IPage<DeviceVO> listDevice(Long stationId, String  devCode, String activeStatus, String chambName,String status,String houseAddr,Long chambId,Long memberId,UserLogindConvertVO loginUser, PageReqVO pageReqVo) {
+        return this.careDeviceService.queryList(pageReqVo,stationId,devCode,activeStatus,chambName,status,houseAddr,chambId,memberId,loginUser);
     }
+
 }

+ 21 - 20
src/main/java/com/care/bms/service/HouseService.java

@@ -16,6 +16,7 @@ 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.util.MyBeanUtils;
 import com.care.common.vo.PageReqVO;
 import com.care.common.vo.UserLogindConvertVO;
 import com.care.common.vo.device.HouseVO;
@@ -77,15 +78,15 @@ public class HouseService {
      */
     @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("用户手机号不能为空");
-        }
+//        //生成登陆账号
+//        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);
@@ -94,14 +95,14 @@ public class HouseService {
         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);
+//        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);
     }
 
     /**
@@ -112,7 +113,7 @@ public class HouseService {
     public void updateHouse(HouseVO vo){
         //保存房屋
         CareHouse house = this.careHouseService.getById(vo.getId());
-        BeanUtil.copyProperties(vo,house);
+        MyBeanUtils.copyProperties(vo,house);
         house.setModifyTime(new Date());
         house.setName(house.getAddr());
         this.careHouseService.updateById(house);
@@ -131,7 +132,7 @@ public class HouseService {
                 .eq(CareHouse::getOrgId,loginUser.getOrgId())
                 .eq(loginUser.getStationId()!=null,CareHouse::getStationId,loginUser.getStationId())
                 .eq(stationId!=null,CareHouse::getStationId,stationId)
-                .orderByAsc(CareHouse::getManageName);
+                .orderByAsc(CareHouse::getAddr);
 
         IPage<CareHouse> pageRes = this.careHouseService.page(page, queryWrapper);
         IPage<HouseVO> results = new Page<>(pageRes.getCurrent(),pageRes.getSize(),pageRes.getTotal());
@@ -166,7 +167,7 @@ public class HouseService {
         List<HouseVO> datas = new ArrayList<>();
         QueryWrapper<CareHouse>  userQueryWrapper = new QueryWrapper<>();
         userQueryWrapper.lambda().eq(CareHouse::getStationId,stationId)
-                .orderByAsc(CareHouse::getManageName);
+                .orderByAsc(CareHouse::getAddr);
         List<CareHouse> users = this.careHouseService.list(userQueryWrapper);
         if (users != null){
             users.forEach(item -> {

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

@@ -94,7 +94,7 @@ public class PinanbaoService {
         List<HouseContactVO> vos = Lists.newArrayList();
         CareMemberInfo memberInfo = this.careMemberInfoService.getById(memberId);
         QueryWrapper<CareHouseContact> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(CareHouseContact::getHouseId, memberInfo.getHouseId())
+        queryWrapper.lambda().eq(CareHouseContact::getMemberId, memberInfo.getId())
         .orderByAsc(CareHouseContact::getContactLevel);
         List<CareHouseContact> contacts = this.careHouseContactService.list(queryWrapper);
         if (CollUtil.isNotEmpty(contacts)){
@@ -158,33 +158,33 @@ public class PinanbaoService {
      */
     public boolean sos(MemberInfoVO member,  MultipartFile file){
 
-        EventOrderVO orderVO = getDoingEvent(member.getHouseId());
-        if (orderVO!=null){
-            throw new BDException("有进行中事件,请勿重复呼叫");
-        }
-
-        Date now  = DateUtil.date();
-        //1. 保存文件
-        String url = fileUploadService.upload(file,"sos");
-        //2. 查询房屋
-        CareHouse house = this.careHouseService.getById(member.getHouseId());
-        //2. 生成工单
-        CareEventOrder order = new CareEventOrder();
-        order.setOrgId(house.getOrgId());
-        order.setOrgName(this.careOrganizationService.getById(house.getOrgId()).getName());
-        order.setStationId(house.getStationId());
-        order.setStationName(this.careStationService.getById(house.getStationId()).getName());
-        order.setHouseId(house.getId());
-        order.setHouseName(house.getName());
-        order.setTitle(house.getAddr()+" "+member.getName()+" 主动呼叫");
-        order.setOlderId(member.getId());
-        order.setOlderName(member.getName());
-        order.setVoiceUrl(url);
-        order.setOrderType(OrderTypeEnum.ZHU_DONG_HU_JIAO.getValue());
-        order.setStatus(OrderStatusEnum.TODO.getValue());
-        order.setCreateTime(now);
-        order.setModifyTime(now);
-        this.careEventOrderService.saveOrder(order);
+//        EventOrderVO orderVO = getDoingEvent(member.getHouseId());
+//        if (orderVO!=null){
+//            throw new BDException("有进行中事件,请勿重复呼叫");
+//        }
+//
+//        Date now  = DateUtil.date();
+//        //1. 保存文件
+//        String url = fileUploadService.upload(file,"sos");
+//        //2. 查询房屋
+//        CareHouse house = this.careHouseService.getById(member.getHouseId());
+//        //2. 生成工单
+//        CareEventOrder order = new CareEventOrder();
+//        order.setOrgId(house.getOrgId());
+//        order.setOrgName(this.careOrganizationService.getById(house.getOrgId()).getName());
+//        order.setStationId(house.getStationId());
+//        order.setStationName(this.careStationService.getById(house.getStationId()).getName());
+//        order.setHouseId(house.getId());
+//        order.setHouseName(house.getName());
+//        order.setTitle(house.getAddr()+" "+member.getName()+" 主动呼叫");
+//        order.setOlderId(member.getId());
+//        order.setOlderName(member.getName());
+//        order.setVoiceUrl(url);
+//        order.setOrderType(OrderTypeEnum.ZHU_DONG_HU_JIAO.getValue());
+//        order.setStatus(OrderStatusEnum.TODO.getValue());
+//        order.setCreateTime(now);
+//        order.setModifyTime(now);
+//        this.careEventOrderService.saveOrder(order);
         return true;
     }
 
@@ -195,29 +195,29 @@ public class PinanbaoService {
      */
     public boolean sos(MemberInfoVO member){
 
-        EventOrderVO orderVO = getDoingEvent(member.getHouseId());
-        if (orderVO!=null){
-            throw new BDException("有进行中事件,请勿重复呼叫");
-        }
-        Date now  = DateUtil.date();
-        //2. 查询房屋
-        CareHouse house = this.careHouseService.getById(member.getHouseId());
-        //2. 生成工单
-        CareEventOrder order = new CareEventOrder();
-        order.setOrgId(house.getOrgId());
-        order.setOrgName(this.careOrganizationService.getById(house.getOrgId()).getName());
-        order.setStationId(house.getStationId());
-        order.setStationName(this.careStationService.getById(house.getStationId()).getName());
-        order.setHouseId(house.getId());
-        order.setHouseName(house.getName());
-        order.setTitle(house.getAddr()+" "+member.getName()+" 主动呼叫");
-        order.setOlderId(member.getId());
-        order.setOlderName(member.getName());
-        order.setOrderType(OrderTypeEnum.ZHU_DONG_HU_JIAO.getValue());
-        order.setStatus(OrderStatusEnum.TODO.getValue());
-        order.setCreateTime(now);
-        order.setModifyTime(now);
-        this.careEventOrderService.saveOrder(order);
+//        EventOrderVO orderVO = getDoingEvent(member.getHouseId());
+//        if (orderVO!=null){
+//            throw new BDException("有进行中事件,请勿重复呼叫");
+//        }
+//        Date now  = DateUtil.date();
+//        //2. 查询房屋
+//        CareHouse house = this.careHouseService.getById(member.getHouseId());
+//        //2. 生成工单
+//        CareEventOrder order = new CareEventOrder();
+//        order.setOrgId(house.getOrgId());
+//        order.setOrgName(this.careOrganizationService.getById(house.getOrgId()).getName());
+//        order.setStationId(house.getStationId());
+//        order.setStationName(this.careStationService.getById(house.getStationId()).getName());
+//        order.setHouseId(house.getId());
+//        order.setHouseName(house.getName());
+//        order.setTitle(house.getAddr()+" "+member.getName()+" 主动呼叫");
+//        order.setOlderId(member.getId());
+//        order.setOlderName(member.getName());
+//        order.setOrderType(OrderTypeEnum.ZHU_DONG_HU_JIAO.getValue());
+//        order.setStatus(OrderStatusEnum.TODO.getValue());
+//        order.setCreateTime(now);
+//        order.setModifyTime(now);
+//        this.careEventOrderService.saveOrder(order);
         return true;
     }
 
@@ -239,7 +239,7 @@ public class PinanbaoService {
         List<OlderVO> vos = Lists.newArrayList();
         CareMemberInfo memberInfo = this.careMemberInfoService.getById(memberId);
         QueryWrapper<CareOlder> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(CareOlder::getHouseId, memberInfo.getHouseId());
+        queryWrapper.lambda().eq(CareOlder::getMemberId, memberInfo.getId());
         List<CareOlder> contacts = this.careOlderService.list(queryWrapper);
         if (CollUtil.isNotEmpty(contacts)){
             contacts.forEach(item -> {

+ 7 - 7
src/main/java/com/care/client/vo/HouseContactVO.java

@@ -1,14 +1,10 @@
 package com.care.client.vo;
 
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -37,13 +33,14 @@ public class HouseContactVO implements Serializable {
     private Long stationId;
 
 
-    @ApiModelProperty("房屋ID")
-    private Long houseId;
-
+    @ApiModelProperty("频安宝用户ID")
+    private Long memberId;
 
     @ApiModelProperty("姓名")
     private String name;
 
+    @ApiModelProperty("性别:M:男 W:女")
+    private String gender;
 
     @ApiModelProperty("电话")
     private String phone;
@@ -51,12 +48,15 @@ public class HouseContactVO implements Serializable {
 
     @ApiModelProperty("关系类别:kinsman亲属  neighbor:邻居")
     private String relationType;
+
     @ApiModelProperty("关系描述")
     private String relationTypeDesc;
 
     @ApiModelProperty("联系级别")
     private Integer contactLevel;
 
+    @ApiModelProperty("地址")
+    private String addr;
 
     @ApiModelProperty("经度")
     private Double longitude;

+ 3 - 6
src/main/java/com/care/client/vo/MemberInfoVO.java

@@ -1,7 +1,6 @@
 package com.care.client.vo;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
+
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -22,10 +21,6 @@ public class MemberInfoVO implements Serializable {
     private Long id;
 
 
-    @ApiModelProperty("房屋")
-    private Long houseId;
-
-
     @ApiModelProperty("openId")
     private String openId;
 
@@ -64,4 +59,6 @@ public class MemberInfoVO implements Serializable {
     @ApiModelProperty("年龄")
     private Integer age;
 
+    @ApiModelProperty("地址")
+    private String addr;
 }

+ 3 - 1
src/main/java/com/care/client/vo/OlderVO.java

@@ -1,7 +1,6 @@
 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;
@@ -27,6 +26,9 @@ public class OlderVO {
     @ApiModelProperty("服务站ID")
     private Long stationId;
 
+    @ApiModelProperty("频安宝用户ID")
+    private Long memberId;
+
 
     @ApiModelProperty("姓名")
     private String name;

+ 36 - 1
src/main/java/com/care/common/entity/CareDevice.java

@@ -46,6 +46,17 @@ public class CareDevice implements Serializable {
     @TableField("HOUSE_ID")
     private Long houseId;
 
+    @ApiModelProperty("管家ID")
+    @TableField("CHAMB_ID")
+    private Long chambId;
+
+    @ApiModelProperty("关联用户ID")
+    @TableField("MEMBER_ID")
+    private Long memberId;
+
+    @ApiModelProperty("关联用户号码")
+    @TableField("MEMBER_PHONE")
+    private String memberPhone;
 
     @ApiModelProperty("设备名称")
     @TableField("DEV_NAME")
@@ -62,10 +73,17 @@ public class CareDevice implements Serializable {
     private String devType;
 
 
+    @ApiModelProperty("设备场景:1客厅,2卫生间,3卧室,4其他")
+    @TableField("DEV_SCENE")
+    private String devScene;
+
     @ApiModelProperty("状态:1在线;2:离线")
     @TableField("STATUS")
     private String status;
 
+    @ApiModelProperty("激活状态:0未激活,1已激活")
+    @TableField("ACTIVE_STATUS")
+    private String activeStatus;
 
     @ApiModelProperty("经度")
     @TableField("LONGITUDE")
@@ -76,6 +94,21 @@ public class CareDevice implements Serializable {
     @TableField("LATITUDE")
     private Double latitude;
 
+    @ApiModelProperty("跌到响应时间(分)")
+    @TableField("FALL_RESPONSE_TIME")
+    private Integer fallResponseTime;
+
+    @ApiModelProperty("久滞响应时间(分)")
+    @TableField("LONGLAG_RESPONSE_TIME")
+    private Integer longlagResponseTime;
+
+    @ApiModelProperty("坠床响应时间(分)")
+    @TableField("FALLINGBED_RESPONSE_TIME")
+    private Integer fallingbedResponseTime;
+
+    @ApiModelProperty("激活时间")
+    @TableField("ACTIVE_TIME")
+    private Date activeTime;
 
     @ApiModelProperty("createTime")
     @TableField("CREATE_TIME")
@@ -106,5 +139,7 @@ public class CareDevice implements Serializable {
     @TableField("CLIENT_ID")
     private String clientId;
 
-
+    @ApiModelProperty("备注")
+    @TableField("REMARK")
+    private String remark;
 }

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

@@ -61,6 +61,10 @@ public class CareEventOrder implements Serializable {
     @TableField("HOUSE_NAME")
     private String houseName;
 
+    @ApiModelProperty("频安宝用户ID")
+    @TableField("MEMBER_ID")
+    private Long memberId;
+
 
     @ApiModelProperty("设备ID")
     @TableField("DEV_ID")
@@ -72,12 +76,12 @@ public class CareEventOrder implements Serializable {
     private String devName;
 
 
-    @ApiModelProperty("被监护人ID")
+    @ApiModelProperty("被监护人ID,多个逗号分隔")
     @TableField("OLDER_ID")
     private Long olderId;
 
 
-    @ApiModelProperty("被监护人姓名")
+    @ApiModelProperty("被监护人姓名,多个逗号分隔")
     @TableField("OLDER_NAME")
     private String olderName;
 

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

@@ -71,15 +71,18 @@ public class CareHouse implements Serializable {
     @TableField("LATITUDE")
     private Double latitude;
 
+    @ApiModelProperty("频安宝用户ID")
+    @TableField("MEMBER_ID")
+    private Long memberId;
 
-    @ApiModelProperty("管理者电话")
-    @TableField("MANAGE_PHONE")
-    private String managePhone;
-
-
-    @ApiModelProperty("管理者姓名")
-    @TableField("MANAGE_NAME")
-    private String manageName;
+//    @ApiModelProperty("管理者电话")
+//    @TableField("MANAGE_PHONE")
+//    private String managePhone;
+//
+//
+//    @ApiModelProperty("管理者姓名")
+//    @TableField("MANAGE_NAME")
+//    private String manageName;
 
 
     @ApiModelProperty("createTime")
@@ -92,14 +95,14 @@ public class CareHouse implements Serializable {
     private Date modifyTime;
 
 
-    @ApiModelProperty("管家ID")
-    @TableField("CHAMB_ID")
-    private Long chambId;
-
-
-    @ApiModelProperty("管家姓名")
-    @TableField("CHAMB_NAME")
-    private String chambName;
+//    @ApiModelProperty("管家ID")
+//    @TableField("CHAMB_ID")
+//    private Long chambId;
+//
+//
+//    @ApiModelProperty("管家姓名")
+//    @TableField("CHAMB_NAME")
+//    private String chambName;
 
 
 }

+ 10 - 4
src/main/java/com/care/common/entity/CareHouseContact.java

@@ -42,15 +42,17 @@ public class CareHouseContact implements Serializable {
     private Long stationId;
 
 
-    @ApiModelProperty("房屋ID")
-    @TableField("HOUSE_ID")
-    private Long houseId;
-
+    @ApiModelProperty("频安宝用户ID")
+    @TableField("MEMBER_ID")
+    private Long memberId;
 
     @ApiModelProperty("姓名")
     @TableField("NAME")
     private String name;
 
+    @ApiModelProperty("性别:M:男 W:女")
+    @TableField("GENDER")
+    private String gender;
 
     @ApiModelProperty("电话")
     @TableField("PHONE")
@@ -67,6 +69,10 @@ public class CareHouseContact implements Serializable {
     private Integer contactLevel;
 
 
+    @ApiModelProperty("地址")
+    @TableField("ADDR")
+    private String addr;
+
     @ApiModelProperty("经度")
     @TableField("LONGITUDE")
     private Double longitude;

+ 44 - 0
src/main/java/com/care/common/entity/CareHouseContactRel.java

@@ -0,0 +1,44 @@
+package com.care.common.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 房屋-联系人关系表(CareHouseContactRel)实体类
+ *
+ * @author makejava
+ * @since 2021-06-02 21:54:55
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("care_house_contact_rel")
+@ApiModel(value = "房屋-联系人关系表", description = "")
+public class CareHouseContactRel implements Serializable {
+    private static final long serialVersionUID = -90072609726445263L;
+
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+
+    @ApiModelProperty("房屋ID")
+    @TableField("HOUSE_ID")
+    private Long houseId;
+
+
+    @ApiModelProperty("联系人ID")
+    @TableField("CONTACT_ID")
+    private Long contactId;
+
+
+}

+ 44 - 0
src/main/java/com/care/common/entity/CareHouseOlderRel.java

@@ -0,0 +1,44 @@
+package com.care.common.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 房屋-被监护人关系表(CareHouseOlderRelService)实体类
+ *
+ * @author makejava
+ * @since 2021-06-02 21:54:55
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("care_house_older_rel")
+@ApiModel(value = "房屋-被监护人关系表", description = "")
+public class CareHouseOlderRel implements Serializable {
+    private static final long serialVersionUID = -90072609726445263L;
+
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+
+    @ApiModelProperty("房屋ID")
+    @TableField("HOUSE_ID")
+    private Long houseId;
+
+
+    @ApiModelProperty("被监护人ID")
+    @TableField("OLDER_ID")
+    private Long olderId;
+
+
+}

+ 5 - 13
src/main/java/com/care/common/entity/CareMemberInfo.java

@@ -24,7 +24,7 @@ import java.util.Date;
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
 @TableName("care_member_info")
-@ApiModel(value = "用户登录信息", description = "")
+@ApiModel(value = "频安宝用户信息", description = "")
 public class CareMemberInfo implements Serializable {
     private static final long serialVersionUID = 806178869535928669L;
 
@@ -32,16 +32,6 @@ public class CareMemberInfo implements Serializable {
     private Long id;
 
 
-    @ApiModelProperty("房屋")
-    @TableField("HOUSE_ID")
-    private Long houseId;
-
-
-    @ApiModelProperty("老人ID")
-    @TableField("OLDER_ID")
-    private Long olderId;
-
-
     @ApiModelProperty("openId")
     @TableField("OPEN_ID")
     private String openId;
@@ -87,7 +77,7 @@ public class CareMemberInfo implements Serializable {
     private String shareCode;
 
 
-    @ApiModelProperty("状态")
+    @ApiModelProperty("状态:0可用,1禁用")
     @TableField("STATUS")
     private String status;
 
@@ -106,5 +96,7 @@ public class CareMemberInfo implements Serializable {
     @TableField("BIRTHDAY")
     private Date birthday;
 
-
+    @ApiModelProperty("地址")
+    @TableField("ADDR")
+    private String addr;
 }

+ 3 - 3
src/main/java/com/care/common/entity/CareOlder.java

@@ -42,9 +42,9 @@ public class CareOlder implements Serializable {
     private Long stationId;
 
 
-    @ApiModelProperty("房屋ID")
-    @TableField("HOUSE_ID")
-    private Long houseId;
+    @ApiModelProperty("频安宝用户ID")
+    @TableField("MEMBER_ID")
+    private Long memberId;
 
 
     @ApiModelProperty("姓名")

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

@@ -62,7 +62,7 @@ public class CareSysUser implements Serializable {
     private String gender;
 
 
-    @ApiModelProperty("状态:1正常;2:休假")
+    @ApiModelProperty("状态:1空闲;2:休假;3忙碌")
     @TableField("STATUS")
     private String status;
 
@@ -101,5 +101,7 @@ public class CareSysUser implements Serializable {
     @TableField("PROFILE")
     private String profile;
 
-
+    @ApiModelProperty("服务入职时间")
+    @TableField("HIREDATE")
+    private Date hiredate;
 }

+ 42 - 0
src/main/java/com/care/common/enums/ChambStatusEnum.java

@@ -0,0 +1,42 @@
+package com.care.common.enums;
+
+
+import cn.hutool.core.util.StrUtil;
+
+/**
+ * @Author:java
+ * @Date: 2021/05/27
+ */
+public enum ChambStatusEnum {
+
+    /**
+     *
+     */
+    FREE("1","空闲"),
+    HOLIDAY("2","休假"),
+    BUSY("3","忙碌");
+    private String value;
+    private String name;
+    ChambStatusEnum(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 (FREE.getValue().equals(code)){
+            return  FREE.name;
+        }else if (HOLIDAY.getValue().equals(code)){
+            return HOLIDAY.name;
+        }else if (BUSY.getValue().equals(code)){
+            return BUSY.name;
+        }
+
+        return null;
+    }
+}

+ 45 - 0
src/main/java/com/care/common/enums/ChambSubStatusEnum.java

@@ -0,0 +1,45 @@
+package com.care.common.enums;
+
+
+import cn.hutool.core.util.StrUtil;
+
+/**
+ * @Author:java
+ * @Date: 2021/05/27
+ */
+public enum ChambSubStatusEnum {
+
+    /**
+     *
+     */
+    FREE("1","空闲"),
+    HOLIDAY("2","休假"),
+    BUSY("3","忙碌"),
+    DOING("4","处理中");
+    private String value;
+    private String name;
+    ChambSubStatusEnum(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 (FREE.getValue().equals(code)){
+            return  FREE.name;
+        }else if (HOLIDAY.getValue().equals(code)){
+            return HOLIDAY.name;
+        } else if (BUSY.getValue().equals(code)){
+            return BUSY.name;
+        } else if (DOING.getValue().equals(code)){
+            return DOING.name;
+        }
+
+        return null;
+    }
+}

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

@@ -0,0 +1,38 @@
+package com.care.common.enums;
+
+
+import cn.hutool.core.util.StrUtil;
+
+/**
+ * @Author:java
+ * @Date: 2021/05/27
+ */
+public enum DeviceActiveStatusEnum {
+    /**
+     * 设备激活状态
+     */
+    NOACTIVE("0","未激活"),
+    ACTIVE("1","已激活");
+    private String value;
+    private String name;
+    DeviceActiveStatusEnum(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 (NOACTIVE.getValue().equals(code)){
+            return  NOACTIVE.name;
+        }else if (ACTIVE.getValue().equals(code)){
+            return  ACTIVE.name;
+        }
+
+        return null;
+    }
+}

+ 44 - 0
src/main/java/com/care/common/enums/DeviceSceneEnum.java

@@ -0,0 +1,44 @@
+package com.care.common.enums;
+
+
+import cn.hutool.core.util.StrUtil;
+
+/**
+ * @Author:java
+ * @Date: 2021/05/27
+ */
+public enum DeviceSceneEnum {
+    /**
+     * 设备场景
+     */
+    PARLOR("1","客厅"),
+    TOILET("2","卫生间"),
+    BEDROOM("3","卧室"),
+    OTHER("4","其他");
+    private String value;
+    private String name;
+    DeviceSceneEnum(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 (PARLOR.getValue().equals(code)){
+            return  PARLOR.name;
+        }else if (TOILET.getValue().equals(code)){
+            return  TOILET.name;
+        }else if (BEDROOM.getValue().equals(code)){
+            return  BEDROOM.name;
+        }else if (OTHER.getValue().equals(code)){
+            return  OTHER.name;
+        }
+
+        return null;
+    }
+}

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

@@ -9,7 +9,7 @@ import cn.hutool.core.util.StrUtil;
  */
 public enum DeviceStatusEnum {
     /**
-     * 钥匙托管类型
+     * 设备运行状态
      */
     ONLINE("1","在线"),
     OFFLINE("2","离线");

+ 44 - 0
src/main/java/com/care/common/enums/OlderLiveTypeEnum.java

@@ -0,0 +1,44 @@
+package com.care.common.enums;
+
+
+import cn.hutool.core.util.StrUtil;
+
+/**
+ * @Author:java
+ * @Date: 2021/05/27
+ */
+public enum OlderLiveTypeEnum {
+    /**
+     * 居住类别
+     */
+    ONESELF("1","独居"),
+    NOONESELF("2","非独居"),
+    CONCENTRATE("3","集中居住"),
+    OTHER("4","其他");
+    private String value;
+    private String name;
+    OlderLiveTypeEnum(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 (ONESELF.getValue().equals(code)){
+            return  ONESELF.name;
+        }else if (NOONESELF.getValue().equals(code)){
+            return  NOONESELF.name;
+        }else if (CONCENTRATE.getValue().equals(code)){
+            return  CONCENTRATE.name;
+        }else if (OTHER.getValue().equals(code)){
+            return  OTHER.name;
+        }
+
+        return null;
+    }
+}

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

@@ -0,0 +1,38 @@
+package com.care.common.enums;
+
+
+import cn.hutool.core.util.StrUtil;
+
+/**
+ * @Author:java
+ * @Date: 2021/05/27
+ */
+public enum TrueFalseEnum {
+    /**
+     * 真假
+     */
+    TRUE("T","真"),
+    FALSE("F","假");
+    private String value;
+    private String name;
+    TrueFalseEnum(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 (TRUE.getValue().equals(code)){
+            return  TRUE.name;
+        }else if (FALSE.getValue().equals(code)){
+            return  FALSE.name;
+        }
+
+        return null;
+    }
+}

+ 8 - 1
src/main/java/com/care/common/mapper/CareDeviceMapper.java

@@ -19,10 +19,17 @@ 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("devCode") String devCode,
+                              @Param("activeStatus") String activeStatus,
+                              @Param("chambName") String chambName,
                               @Param("status") String status,
                               @Param("houseAddr") String houseAddr,
-                              @Param("devCode") String devCode,
+                              @Param("chambId") Long chambId,
+                              @Param("memberId") Long memberId,
                               @Param("userStationId") Long userStationId,
                               @Param("userOrgId") Long userOrgId);
+
+    void updateDevChamb(@Param("id") Long id);
 }

+ 15 - 0
src/main/java/com/care/common/mapper/CareHouseContactRelMapper.java

@@ -0,0 +1,15 @@
+package com.care.common.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.care.common.entity.CareHouseContactRel;
+
+
+/**
+ * 房屋-联系人关系表(CareHouseContactRel)数据库访问层
+ *
+ * @author makejava
+ * @since 2021-06-02 21:42:59
+ */
+public interface CareHouseContactRelMapper extends BaseMapper<CareHouseContactRel> {
+
+}

+ 15 - 0
src/main/java/com/care/common/mapper/CareHouseOlderRelMapper.java

@@ -0,0 +1,15 @@
+package com.care.common.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.care.common.entity.CareHouseOlderRel;
+
+
+/**
+ * 房屋-被监护人关系表(CareHouseOlderRelService)数据库访问层
+ *
+ * @author makejava
+ * @since 2021-06-02 21:42:59
+ */
+public interface CareHouseOlderRelMapper extends BaseMapper<CareHouseOlderRel> {
+
+}

+ 3 - 2
src/main/java/com/care/common/service/CareDeviceService.java

@@ -25,7 +25,8 @@ public interface CareDeviceService extends IService<CareDevice> {
      */
     List<DeviceVO> queryListByHouseId(Long houseId);
 
-    IPage<DeviceVO> queryList(PageReqVO pageReqVo, Long stationId, String status, String houseAddr, String devCode, UserLogindConvertVO loginUser);
-
+    IPage<DeviceVO> queryList(PageReqVO pageReqVo, Long stationId, String devCode, String activeStatus,String chambName, String status,String houseAddr, Long chambId,Long memberId,UserLogindConvertVO loginUser);
     Map<String,String> get3dUrl(Long deviceId);
+
+    void updateDevChamb(Long id);
 }

+ 14 - 0
src/main/java/com/care/common/service/CareHouseContactRelService.java

@@ -0,0 +1,14 @@
+package com.care.common.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.care.common.entity.CareHouseContactRel;
+
+/**
+ * 房屋-联系人关系表(CareHouseContactRel)表服务接口
+ *
+ * @author makejava
+ * @since 2021-05-21 00:08:32
+ */
+public interface CareHouseContactRelService extends IService<CareHouseContactRel> {
+
+}

+ 14 - 0
src/main/java/com/care/common/service/CareHouseOlderRelService.java

@@ -0,0 +1,14 @@
+package com.care.common.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.care.common.entity.CareHouseOlderRel;
+
+/**
+ * 房屋-被监护人关系表(CareHouseOlderRel)表服务接口
+ *
+ * @author makejava
+ * @since 2021-05-21 00:08:32
+ */
+public interface CareHouseOlderRelService extends IService<CareHouseOlderRel> {
+
+}

+ 8 - 3
src/main/java/com/care/common/service/impl/CareDeviceServiceImpl.java

@@ -8,6 +8,7 @@ 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.DeviceActiveStatusEnum;
 import com.care.common.enums.DeviceStatusEnum;
 import com.care.common.mapper.CareDeviceMapper;
 import com.care.common.service.CareDeviceService;
@@ -64,18 +65,22 @@ public class CareDeviceServiceImpl extends ServiceImpl<CareDeviceMapper, CareDev
     }
 
     @Override
-    public IPage<DeviceVO> queryList(PageReqVO pageReqVo, Long stationId, String status, String houseAddr, String devCode, UserLogindConvertVO loginUser) {
+    public IPage<DeviceVO> queryList(PageReqVO pageReqVo, Long stationId, String devCode, String activeStatus,String chambName, String status, String houseAddr,Long chambId, Long memberId,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());
+        IPage<DeviceVO> pageRes = this.baseMapper.queryList(page, stationId,devCode,activeStatus,chambName,status,houseAddr,chambId,memberId,loginUser.getOrgId(),loginUser.getStationId());
         if(CollUtil.isNotEmpty(pageRes.getRecords())){
             pageRes.getRecords().forEach(item -> {
                 item.setStatusName(DeviceStatusEnum.getCodeToName(item.getStatus()));
+                item.setActiveStatusName(DeviceActiveStatusEnum.getCodeToName(item.getActiveStatus()));
             });
         }
         return pageRes;
     }
 
-
+    @Override
+    public void updateDevChamb(Long id) {
+        this.baseMapper.updateDevChamb(id);
+    }
 
     public static void main(String[] args) throws UnsupportedEncodingException {
         System.out.println(java.net.URLEncoder.encode("5JPD/monitor/f1/event","UTF-8"));

+ 107 - 57
src/main/java/com/care/common/service/impl/CareEventOrderServiceImpl.java

@@ -3,8 +3,10 @@ package com.care.common.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.care.bigscreen.service.BigScreenService;
 import com.care.common.cache.RedisKeyConstant;
 import com.care.common.cache.RedisUtil;
 import com.care.common.entity.*;
@@ -42,6 +44,8 @@ public class CareEventOrderServiceImpl extends ServiceImpl<CareEventOrderMapper,
     private CareEventOrderContactStatusService careEventOrderContactStatusService;
     @Resource
     private CareHouseService careHouseService;
+    @Resource
+    private CareDeviceService careDeviceService;
 
     @Resource
     private CareSysUserService careSysUserService;
@@ -49,6 +53,11 @@ public class CareEventOrderServiceImpl extends ServiceImpl<CareEventOrderMapper,
     private RedisUtil redisUtil;
     @Resource
     private SmsSendService smsSendService;
+    @Resource
+    private BigScreenService bigScreenService;
+    @Resource
+    private CareHouseOlderRelService careHouseOlderRelService;
+
     /**
      * 统计事件数量
      *
@@ -64,54 +73,94 @@ public class CareEventOrderServiceImpl extends ServiceImpl<CareEventOrderMapper,
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean saveOrder(CareEventOrder order){
-        this.baseMapper.insert(order);
-        CareEventOrderHandleHis his = new CareEventOrderHandleHis();
-        his.setOrgId(order.getOrgId());
-        his.setStationId(order.getStationId());
-        his.setOrderId(order.getId());
-        his.setHouseId(order.getHouseId());
-        if (OrderTypeEnum.ZHU_DONG_HU_JIAO.getValue().equals(order.getOrderType()) || OrderTypeEnum.HU_WAI_HU_JIAO.getValue().equals(order.getOrderType())){
-            his.setLogType(LogTypeEnum.OLDER_EVENT.getValue());
-            his.setLogObjectId(order.getOlderId());
-            his.setLogObjectName(order.getOlderName());
-            his.setLogResult(OrderTypeEnum.getCodeToName(order.getOrderType()));
-            his.setRelationTypeDesc(RelationTypeEnum.OLDER.getName());
-        }else{
-            his.setLogType(LogTypeEnum.DEV_EVENT.getValue());
-            his.setLogObjectId(order.getDevId());
-            his.setLogObjectName(order.getDevName());
-            his.setLogResult("发生"+OrderTypeEnum.getCodeToName(order.getOrderType()));
-            his.setRelationTypeDesc(RelationTypeEnum.HOUSE.getName());
-        }
-        his.setCreateTime(DateUtil.date());
-        addOlderToOrderOlder(order);
-        addChamberlainToOrder(order);
-        List<CareEventOrderContactStatus> contacts = addContactToOrderContact(order);
-        Object switchSms = redisUtil.get(RedisKeyConstant.SWITCH_SMS);
-        if (switchSms != null){
-            //给联系人发送短信
-            if (CollUtil.isNotEmpty(contacts)){
-                CareHouse house = this.careHouseService.getById(order.getHouseId());
-                contacts.forEach(item ->{
-                    boolean smsResult = smsSendService.sendSmsToLianxiren(order.getOrderType(),item.getContactPhone(),house.getName());
-                    if (smsResult){
-                        CareEventOrderHandleHis his2 = new CareEventOrderHandleHis();
-                        his2.setOrgId(item.getOrgId());
-                        his2.setStationId(item.getStationId());
-                        his2.setOrderId(item.getOrderId());
-                        his2.setLogType(LogTypeEnum.SMS.getValue());
-                        his2.setLogObjectId(item.getContactId());
-                        his2.setLogObjectName(item.getContactName());
-                        his2.setLogResult("短信通知");
-                        his2.setOpUserRole(UserRoleEnum.SEAT.getValue());
-                        his2.setCreateTime(DateUtil.date());
-                        his2.setRelationTypeDesc(item.getRelationTypeDesc());
-                        this.careEventOrderHandleHisService.save(his);
-                    }
-                });
+
+        //判断房屋是否有未完成的告警事件
+        QueryWrapper<CareEventOrder> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CareEventOrder::getHouseId,order.getHouseId()).eq(CareEventOrder::getStatus, OrderStatusEnum.TODO.getValue()).or(i->
+                i.eq(CareEventOrder::getStatus,OrderStatusEnum.DOING.getValue())
+        );
+
+        List<CareEventOrder> listCareEventOrderDb = this.list(queryWrapper);
+
+        if(CollUtil.isNotEmpty(listCareEventOrderDb)){ //有,不再生成新的告警工单,只作为子事件插入到当前工单的历史记录中,并通知页面。
+            CareEventOrder careEventOrderDb = listCareEventOrderDb.get(0);
+            careEventOrderDb.setOrderType(order.getOrderType());
+            this.updateById(careEventOrderDb);//更新
+
+            CareEventOrderHandleHis his = new CareEventOrderHandleHis();
+            his.setOrgId(order.getOrgId());
+            his.setStationId(order.getStationId());
+            his.setOrderId(order.getId());//使用未完成的告警事件的ID
+            his.setHouseId(order.getHouseId());
+            if (OrderTypeEnum.ZHU_DONG_HU_JIAO.getValue().equals(order.getOrderType()) || OrderTypeEnum.HU_WAI_HU_JIAO.getValue().equals(order.getOrderType())){
+                his.setLogType(LogTypeEnum.OLDER_EVENT.getValue());
+                his.setLogObjectId(order.getOlderId());
+                his.setLogObjectName(order.getOlderName());
+                his.setLogResult(OrderTypeEnum.getCodeToName(order.getOrderType()));
+                his.setRelationTypeDesc(RelationTypeEnum.OLDER.getName());
+            }else{
+                his.setLogType(LogTypeEnum.DEV_EVENT.getValue());
+                his.setLogObjectId(order.getDevId());
+                his.setLogObjectName(order.getDevName());
+                his.setLogResult("发生"+OrderTypeEnum.getCodeToName(order.getOrderType()));
+                his.setRelationTypeDesc(RelationTypeEnum.HOUSE.getName());
             }
+            his.setCreateTime(DateUtil.date());
+            this.careEventOrderHandleHisService.save(his);
+            //通知页面
+            bigScreenService.pushRtEventFlag2();
+        } else { //无,生成新的告警事件工单
+            this.baseMapper.insert(order);
+            CareEventOrderHandleHis his = new CareEventOrderHandleHis();
+            his.setOrgId(order.getOrgId());
+            his.setStationId(order.getStationId());
+            his.setOrderId(order.getId());
+            his.setHouseId(order.getHouseId());
+            if (OrderTypeEnum.ZHU_DONG_HU_JIAO.getValue().equals(order.getOrderType()) || OrderTypeEnum.HU_WAI_HU_JIAO.getValue().equals(order.getOrderType())){
+                his.setLogType(LogTypeEnum.OLDER_EVENT.getValue());
+                his.setLogObjectId(order.getOlderId());
+                his.setLogObjectName(order.getOlderName());
+                his.setLogResult(OrderTypeEnum.getCodeToName(order.getOrderType()));
+                his.setRelationTypeDesc(RelationTypeEnum.OLDER.getName());
+            }else{
+                his.setLogType(LogTypeEnum.DEV_EVENT.getValue());
+                his.setLogObjectId(order.getDevId());
+                his.setLogObjectName(order.getDevName());
+                his.setLogResult("发生"+OrderTypeEnum.getCodeToName(order.getOrderType()));
+                his.setRelationTypeDesc(RelationTypeEnum.HOUSE.getName());
+            }
+            his.setCreateTime(DateUtil.date());
+
+            addOlderToOrderOlder(order);
+            addChamberlainToOrder(order);
+            List<CareEventOrderContactStatus> contacts = addContactToOrderContact(order);
+            Object switchSms = redisUtil.get(RedisKeyConstant.SWITCH_SMS);
+            if (switchSms != null){
+                //给联系人发送短信
+                if (CollUtil.isNotEmpty(contacts)){
+                    CareHouse house = this.careHouseService.getById(order.getHouseId());
+                    contacts.forEach(item ->{
+                        boolean smsResult = smsSendService.sendSmsToLianxiren(order.getOrderType(),item.getContactPhone(),house.getName());
+                        if (smsResult){
+                            CareEventOrderHandleHis his2 = new CareEventOrderHandleHis();
+                            his2.setOrgId(item.getOrgId());
+                            his2.setStationId(item.getStationId());
+                            his2.setOrderId(item.getOrderId());
+                            his2.setLogType(LogTypeEnum.SMS.getValue());
+                            his2.setLogObjectId(item.getContactId());
+                            his2.setLogObjectName(item.getContactName());
+                            his2.setLogResult("短信通知");
+                            his2.setOpUserRole(UserRoleEnum.SEAT.getValue());
+                            his2.setCreateTime(DateUtil.date());
+                            his2.setRelationTypeDesc(item.getRelationTypeDesc());
+                            this.careEventOrderHandleHisService.save(his2);
+                        }
+                    });
+                }
+            }
+            this.careEventOrderHandleHisService.save(his);
         }
-        this.careEventOrderHandleHisService.save(his);
+
         return true;
     }
 
@@ -120,14 +169,15 @@ public class CareEventOrderServiceImpl extends ServiceImpl<CareEventOrderMapper,
      * @param order
      */
     private void addOlderToOrderOlder(CareEventOrder order){
-        QueryWrapper<CareOlder> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(CareOlder::getHouseId,order.getHouseId());
-        List<CareOlder> olders = this.careOlderService.list(queryWrapper);
-        if (CollUtil.isNotEmpty(olders)){
+        QueryWrapper<CareHouseOlderRel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CareHouseOlderRel::getHouseId,order.getHouseId());
+        List<CareHouseOlderRel> olderRels = this.careHouseOlderRelService.list(queryWrapper);
+        if (CollUtil.isNotEmpty(olderRels)){
             List<CareEventOrderOlder>  ceoos = Lists.newArrayList();
-            olders.forEach(item -> {
+            olderRels.forEach(item -> {
+                CareOlder careOlder = this.careOlderService.getById(item.getOlderId());
                 CareEventOrderOlder ceoo = new CareEventOrderOlder();
-                BeanUtil.copyProperties(item,ceoo);
+                BeanUtil.copyProperties(careOlder,ceoo);
                 ceoo.setOrderId(order.getId());
                 ceoo.setOlderId(item.getId());
                 if (order.getOlderId() == item.getId()){
@@ -145,13 +195,13 @@ public class CareEventOrderServiceImpl extends ServiceImpl<CareEventOrderMapper,
     }
 
     /**
-     * 将管家加入到联系人当中
+     * 将管家加入到工单当中
      * @param order
      */
     private void addChamberlainToOrder(CareEventOrder order){
-        CareHouse house = this.careHouseService.getById(order.getHouseId());
-        if (house != null){
-            CareSysUser user = this.careSysUserService.getById(house.getChambId());
+        CareDevice dev = this.careDeviceService.getById(order.getDevId());
+        if (dev != null){
+            CareSysUser user = this.careSysUserService.getById(dev.getChambId());
             if (user != null){
                 CareEventOrderChamb chamb = new CareEventOrderChamb();
                 chamb.setOrgId(user.getOrgId());
@@ -161,7 +211,7 @@ public class CareEventOrderServiceImpl extends ServiceImpl<CareEventOrderMapper,
                 chamb.setChambName(user.getName());
                 chamb.setPhone(user.getPhone());
                 chamb.setStatus(ChambOrderStatusEnum.TODO.getValue());
-                chamb.setHouseId(house.getId());
+                chamb.setHouseId(dev.getHouseId());
                 chamb.setCreateTime(DateUtil.date());
                 chamb.setModifyTime(DateUtil.date());
                 this.careEventOrderChambService.save(chamb);

+ 18 - 0
src/main/java/com/care/common/service/impl/CareHouseContactRelServiceImpl.java

@@ -0,0 +1,18 @@
+package com.care.common.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.care.common.entity.CareHouseContactRel;
+import com.care.common.mapper.CareHouseContactRelMapper;
+import com.care.common.service.CareHouseContactRelService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 房屋-联系人关系表(CareHouseContactRel)表服务实现类
+ *
+ * @author makejava
+ * @since 2021-05-21 00:08:28
+ */
+@Service
+public class CareHouseContactRelServiceImpl extends ServiceImpl<CareHouseContactRelMapper, CareHouseContactRel> implements CareHouseContactRelService {
+
+}

+ 22 - 3
src/main/java/com/care/common/service/impl/CareHouseContactServiceImpl.java

@@ -1,12 +1,18 @@
 package com.care.common.service.impl;
 
+
+import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.care.common.entity.CareHouseContact;
+import com.care.common.entity.CareHouseContactRel;
 import com.care.common.mapper.CareHouseContactMapper;
+import com.care.common.service.CareHouseContactRelService;
 import com.care.common.service.CareHouseContactService;
+import org.apache.commons.compress.utils.Lists;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.util.List;
 
 /**
@@ -17,6 +23,8 @@ import java.util.List;
  */
 @Service
 public class CareHouseContactServiceImpl extends ServiceImpl<CareHouseContactMapper, CareHouseContact> implements CareHouseContactService {
+    @Resource
+    private CareHouseContactRelService careHouseContactRelService;
     /**
      * 查询老人-紧急联系人
      *
@@ -25,8 +33,19 @@ public class CareHouseContactServiceImpl extends ServiceImpl<CareHouseContactMap
      */
     @Override
     public List<CareHouseContact> queryContactByHouseId(Long houseId) {
-        QueryWrapper<CareHouseContact> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(CareHouseContact::getHouseId,houseId);
-        return this.list(queryWrapper);
+        List<CareHouseContact> list = Lists.newArrayList();
+        QueryWrapper<CareHouseContactRel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CareHouseContactRel::getHouseId, houseId);
+        List<CareHouseContactRel> contactRels = this.careHouseContactRelService.list(queryWrapper);
+
+        if (CollUtil.isNotEmpty(contactRels)){
+            contactRels.forEach(item -> {
+                CareHouseContact careHouseContact = this.getById(item.getContactId());
+                list.add(careHouseContact);
+            });
+        }
+        List<CareHouseContact> listNew = CollUtil.sortByProperty(list,"contactLevel");
+        return listNew;
+
     }
 }

+ 18 - 0
src/main/java/com/care/common/service/impl/CareHouseOlderRelServiceImpl.java

@@ -0,0 +1,18 @@
+package com.care.common.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.care.common.entity.CareHouseOlderRel;
+import com.care.common.mapper.CareHouseOlderRelMapper;
+import com.care.common.service.CareHouseOlderRelService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 房屋-被监护人关系表(CareHouseOlderRel)表服务实现类
+ *
+ * @author makejava
+ * @since 2021-05-21 00:08:28
+ */
+@Service
+public class CareHouseOlderRelServiceImpl extends ServiceImpl<CareHouseOlderRelMapper, CareHouseOlderRel> implements CareHouseOlderRelService {
+
+}

+ 58 - 0
src/main/java/com/care/common/util/MyBeanUtils.java

@@ -0,0 +1,58 @@
+package com.care.common.util;
+
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.FatalBeanException;
+import org.springframework.util.Assert;
+import org.springframework.util.ClassUtils;
+
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+
+/**
+ * BeanUtils 可以实现copyProperties 拷贝对象的 null 不复制。
+ * @author Fate
+ * @version 1.0
+ * @date 2020/7/15 22:52
+ */
+public class MyBeanUtils extends BeanUtils {
+
+    public static void copyProperties(Object source, Object target) throws BeansException {
+        Assert.notNull(source, "Source must not be null");
+        Assert.notNull(target, "Target must not be null");
+        Class<?> actualEditable = target.getClass();
+
+        PropertyDescriptor[] targetPds = getPropertyDescriptors(actualEditable);
+        PropertyDescriptor[] var7 = targetPds;
+        int var8 = targetPds.length;
+
+        for (int var9 = 0; var9 < var8; ++var9) {
+            PropertyDescriptor targetPd = var7[var9];
+            Method writeMethod = targetPd.getWriteMethod();
+            if (writeMethod != null) {
+                PropertyDescriptor sourcePd = getPropertyDescriptor(source.getClass(), targetPd.getName());
+                if (sourcePd != null) {
+                    Method readMethod = sourcePd.getReadMethod();
+                    if (readMethod != null && ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) {
+                        try {
+                            if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) {
+                                readMethod.setAccessible(true);
+                            }
+                            Object value = readMethod.invoke(source);
+                            // 判断value是否为空
+                            if (value != null) {
+                                if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) {
+                                    writeMethod.setAccessible(true);
+                                }
+                                writeMethod.invoke(target, value);
+                            }
+                        } catch (Throwable var15) {
+                            throw new FatalBeanException("Could not copy property '" + targetPd.getName() + "' from source to target", var15);
+                        }
+                    }
+                }
+            }
+        }
+    }
+}

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

@@ -1,10 +1,13 @@
 package com.care.common.vo.device;
 
+import com.care.common.vo.order.OrderContactorVO;
+import com.care.common.vo.order.OrderOlderVO;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * @Author: lilt
@@ -26,29 +29,43 @@ public class DeviceVO {
 
     private String stationName;
 
-
     @ApiModelProperty("房屋ID")
     private Long houseId;
+    @ApiModelProperty("房屋地址")
     private String houseAddr;
 
+    @ApiModelProperty("关联管家ID")
+    private Long chambId;
+
+    @ApiModelProperty("关联管家号码")
+    private String chambPhone;
+
+    @ApiModelProperty("关联管家姓名")
+    private String chambName;
 
     @ApiModelProperty("设备名称")
     private String devName;
 
-
     @ApiModelProperty("设备编码")
     private String devCode;
 
-
     @ApiModelProperty("设备类别: 1:室内 2:户外")
     private String devType;
 
+    @ApiModelProperty("设备场景:1客厅,2卫生间,3卧室,4其他")
+    private String devScene;
+
+    private String devSceneName;
 
     @ApiModelProperty("状态:1在线;2:离线")
     private String status;
 
     private String statusName;
 
+    @ApiModelProperty("激活状态:0未激活,1已激活")
+    private String activeStatus;
+
+    private String activeStatusName;
 
     @ApiModelProperty("经度")
     private Double longitude;
@@ -57,6 +74,18 @@ public class DeviceVO {
     @ApiModelProperty("纬度")
     private Double latitude;
 
+    @ApiModelProperty("跌到响应时间(分)")
+    private Integer fallResponseTime;
+
+    @ApiModelProperty("久滞响应时间(分)")
+    private Integer longlagResponseTime;
+
+    @ApiModelProperty("坠床响应时间(分)")
+    private Integer fallingbedResponseTime;
+
+    @ApiModelProperty("激活时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date activeTime;
 
     @ApiModelProperty("createTime")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@@ -83,7 +112,24 @@ public class DeviceVO {
     @ApiModelProperty("设备mqtt消息客户端ID")
     private String clientId;
 
+    @ApiModelProperty("备注")
+    private String remark;
+
+    @ApiModelProperty("关联用户ID")
+    private Long memberId;
+
+    @ApiModelProperty("关联用户号码")
+    private String memberPhone;
+
+    @ApiModelProperty("被监护人信息列表")
+    private List<OrderOlderVO> orderOlderVOList;
+
+    @ApiModelProperty("紧急联系人信息列表")
+    private List<OrderContactorVO> orderContactorVOList;
+
     public Long getDevId(){
         return this.id;
     }
+
+
 }

+ 15 - 13
src/main/java/com/care/common/vo/device/HouseVO.java

@@ -54,13 +54,15 @@ public class HouseVO implements Serializable {
     @ApiModelProperty("纬度")
     private Double latitude;
 
+    @ApiModelProperty("频安宝用户ID")
+    private Long memberId;
 
-    @ApiModelProperty("管理者电话")
-    private String managePhone;
-
-
-    @ApiModelProperty("管理者姓名")
-    private String manageName;
+//    @ApiModelProperty("管理者电话")
+//    private String managePhone;
+//
+//
+//    @ApiModelProperty("管理者姓名")
+//    private String manageName;
 
 
     @ApiModelProperty("createTime")
@@ -72,13 +74,13 @@ public class HouseVO implements Serializable {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date modifyTime;
 
-
-    @ApiModelProperty("管家ID")
-    private Long chambId;
-
-
-    @ApiModelProperty("管家姓名")
-    private String chambName;
+//
+//    @ApiModelProperty("管家ID")
+//    private Long chambId;
+//
+//
+//    @ApiModelProperty("管家姓名")
+//    private String chambName;
 
 
 }

+ 79 - 0
src/main/java/com/care/common/vo/memberinfo/MemberInfoVO.java

@@ -0,0 +1,79 @@
+package com.care.common.vo.memberinfo;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 用户登录信息(CareMemberInfo)实体类
+ *
+ * @author makejava
+ * @since 2021-06-10 01:07:14
+ */
+
+@Data
+public class MemberInfoVO implements Serializable {
+    private static final long serialVersionUID = 806178869535928669L;
+
+    private Long id;
+
+
+    @ApiModelProperty("openId")
+    private String openId;
+
+
+    @ApiModelProperty("姓名")
+    private String name;
+
+
+    @ApiModelProperty("昵称")
+    private String nickname;
+
+
+    @ApiModelProperty("电话")
+    private String phone;
+
+
+    @ApiModelProperty("密码")
+    private String password;
+
+
+    @ApiModelProperty("头像")
+    private String profile;
+
+
+    @ApiModelProperty("邮箱")
+    private String email;
+
+
+    @ApiModelProperty("性别")
+    private String gender;
+
+
+    @ApiModelProperty("分享码")
+    private String shareCode;
+
+
+    @ApiModelProperty("状态:0可用,1禁用")
+    private String status;
+
+    @ApiModelProperty("createTime")
+    private Date createTime;
+
+
+    @ApiModelProperty("modifyTime")
+    private Date modifyTime;
+
+
+    @ApiModelProperty("生日")
+    private Date birthday;
+
+    @ApiModelProperty("地址")
+    private String addr;
+
+    @ApiModelProperty("绑定设备数量")
+    private Integer devCount;
+}

+ 15 - 15
src/main/java/com/care/common/vo/order/CareHouseVO.java

@@ -56,12 +56,12 @@ public class CareHouseVO implements Serializable {
     private Double latitude;
 
 
-    @ApiModelProperty("管理者电话")
-    private String managePhone;
-
-
-    @ApiModelProperty("管理者姓名")
-    private String manageName;
+//    @ApiModelProperty("管理者电话")
+//    private String managePhone;
+//
+//
+//    @ApiModelProperty("管理者姓名")
+//    private String manageName;
 
 
     @ApiModelProperty("createTime")
@@ -72,14 +72,14 @@ public class CareHouseVO implements Serializable {
     private Date modifyTime;
 
 
-    @ApiModelProperty("管家ID")
-    private Long chambId;
-
-
-    @ApiModelProperty("管家姓名")
-    private String chambName;
-
-    @ApiModelProperty("关系类别描述")
-    private String relationTypeDesc;
+//    @ApiModelProperty("管家ID")
+//    private Long chambId;
+//
+//
+//    @ApiModelProperty("管家姓名")
+//    private String chambName;
+//
+//    @ApiModelProperty("关系类别描述")
+//    private String relationTypeDesc;
 
 }

+ 13 - 1
src/main/java/com/care/common/vo/order/ChamberlainVO.java

@@ -29,6 +29,18 @@ public class ChamberlainVO {
     @ApiModelProperty("纬度")
     private Double latitude;
 
-    @ApiModelProperty("状态:1正常;2:休假 3忙碌")
+    @ApiModelProperty("状态:1空闲;2:休假;3忙碌")
     private String status;
+
+    @ApiModelProperty("状态描述")
+    private String statusDesc;
+
+    @ApiModelProperty("子状态:1空闲;2:休假;3忙碌; 4处理中")
+    private String subStatus;
+
+    @ApiModelProperty("子状态描述")
+    private String subStatusDesc;
+
+    @ApiModelProperty("主管家:T 是,F 不是")
+    private String isMain;
 }

+ 5 - 2
src/main/java/com/care/common/vo/order/EventOrderVO.java

@@ -48,11 +48,14 @@ public class EventOrderVO implements Serializable {
     @ApiModelProperty("房屋名称")
     private String houseName;
 
-    @ApiModelProperty("被监护人ID")
+    @ApiModelProperty("频安宝用户ID")
+    private Long memberId;
+
+    @ApiModelProperty("被监护人ID,多个逗号分隔")
     private Long olderId;
 
 
-    @ApiModelProperty("被监护人姓名")
+    @ApiModelProperty("被监护人姓名,多个逗号分隔")
     private String olderName;
 
 

+ 10 - 0
src/main/java/com/care/common/vo/order/OrderContactorVO.java

@@ -37,6 +37,8 @@ public class OrderContactorVO implements Serializable {
     @ApiModelProperty("工单ID")
     private Long orderId;
 
+    @ApiModelProperty("频安宝用户ID")
+    private Long memberId;
 
     @ApiModelProperty("联系角色 chanmb管家 contact紧联系人 older 老人")
     private String contactRole;
@@ -56,10 +58,15 @@ public class OrderContactorVO implements Serializable {
     @ApiModelProperty("联系人姓名")
     private String contactName;
 
+    @ApiModelProperty("性别:M:男 W:女")
+    private String gender;
 
     @ApiModelProperty("联系电话")
     private String contactPhone;
 
+    @ApiModelProperty("关系类别:kinsman亲属  neighbor:邻居")
+    private String relationType;
+
     @ApiModelProperty("关系类别描述")
     private String relationTypeDesc;
 
@@ -67,6 +74,9 @@ public class OrderContactorVO implements Serializable {
     @ApiModelProperty("联系级别")
     private Integer contactLevel;
 
+    @ApiModelProperty("地址")
+    private String addr;
+
 
     @ApiModelProperty("经度")
     private Double longitude;

+ 6 - 1
src/main/java/com/care/common/vo/order/OrderOlderVO.java

@@ -1,6 +1,7 @@
 package com.care.common.vo.order;
 
 import cn.hutool.core.date.DateUtil;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -26,6 +27,8 @@ public class OrderOlderVO  {
     @ApiModelProperty("服务站ID")
     private Long stationId;
 
+    @ApiModelProperty("频安宝用户ID")
+    private Long memberId;
 
     @ApiModelProperty("姓名")
     private String name;
@@ -40,12 +43,14 @@ public class OrderOlderVO  {
 
 
     @ApiModelProperty("生日")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
     private Date birthday;
 
-
     @ApiModelProperty("居住类别:1:独居 2:非独居 3:集中居住 4:其他")
     private String liveType;
 
+    @ApiModelProperty("居住类别描述")
+    private String liveTypeDesc;
 
     @ApiModelProperty("床号或者门牌号")
     private String bedNumber;

+ 25 - 10
src/main/java/com/care/common/vo/sysuser/CareSysUserVO.java

@@ -1,17 +1,16 @@
 package com.care.common.vo.sysuser;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
+
+
+import com.care.common.vo.device.DeviceVO;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
+
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 安全管家表(CareSysUser)实体类
@@ -31,9 +30,11 @@ public class CareSysUserVO implements Serializable {
     private Long orgId;
 
 
-    @ApiModelProperty("服务站ID,角色未坐席时,该字段可能未空")
+    @ApiModelProperty("服务站ID,角色为坐席时,该字段可能为空")
     private Long stationId;
 
+    @ApiModelProperty("服务站名称")
+    private String stationName;
 
     @ApiModelProperty("姓名")
     private String name;
@@ -62,11 +63,11 @@ public class CareSysUserVO implements Serializable {
     @ApiModelProperty("纬度")
     private Double latitude;
 
-
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     @ApiModelProperty("createTime")
     private Date createTime;
 
-
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     @ApiModelProperty("modifyTime")
     private Date modifyTime;
 
@@ -74,5 +75,19 @@ public class CareSysUserVO implements Serializable {
     @ApiModelProperty("1:坐席 2:管家")
     private String role;
 
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    @ApiModelProperty("服务入职时间")
+    private Date hiredate;
+
+    @ApiModelProperty("服务设备数量")
+    private Integer devCount;
+
+    @ApiModelProperty("服务次数")
+    private Integer serveCount;
+
+    @ApiModelProperty("拥有的设备列表")
+    private List<DeviceVO> hasDeviceVOList;
 
+    @ApiModelProperty("空闲设备列表")
+    private List<DeviceVO> freeDeviceVOList;
 }

+ 24 - 9
src/main/java/com/care/keeper/service/KeeperApiService.java

@@ -57,9 +57,10 @@ public class KeeperApiService {
     private CareEventOrderChambService careEventOrderChambService;
     @Resource
     private CareEventOrderOlderService careEventOrderOlderService;
-
     @Resource
     private CareEventOrderKeyApplyService careEventOrderKeyApplyService;
+    @Resource
+    private CareHouseContactRelService careHouseContactRelService;
 
     @Resource
     RedisUtil redisUtil;
@@ -154,19 +155,21 @@ public class KeeperApiService {
     public List<HouseContactVO> queryContactByOrderId(Long orderId){
         List<HouseContactVO> vos = Lists.newArrayList();
         CareEventOrder order = this.careEventOrderService.getById(orderId);
-        QueryWrapper<CareHouseContact> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(CareHouseContact::getHouseId, order.getHouseId())
-                .orderByAsc(CareHouseContact::getContactLevel);
-        List<CareHouseContact> contacts = this.careHouseContactService.list(queryWrapper);
-        if (CollUtil.isNotEmpty(contacts)){
-            contacts.forEach(item -> {
+        QueryWrapper<CareHouseContactRel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(CareHouseContactRel::getHouseId, order.getHouseId());
+        List<CareHouseContactRel> contactRelss = this.careHouseContactRelService.list(queryWrapper);
+
+        if (CollUtil.isNotEmpty(contactRelss)){
+            contactRelss.forEach(item -> {
+                CareHouseContact careHouseContact = careHouseContactService.getById(item.getContactId());
                 HouseContactVO vo = new HouseContactVO();
-                BeanUtil.copyProperties(item,vo);
+                BeanUtil.copyProperties(careHouseContact,vo);
                 vo.setRelationTypeDesc(RelationTypeEnum.getCodeToName(vo.getRelationType()));
                 vos.add(vo);
             });
         }
-        return vos;
+        List<HouseContactVO> vosNew = CollUtil.sortByProperty(vos,"contactLevel");
+        return vosNew;
     }
 
     /**
@@ -257,6 +260,12 @@ public class KeeperApiService {
                 .set(CareEventOrderChamb::getModifyTime,date);
         flag = this.careEventOrderChambService.update(updateWrapper);
         if (flag){
+            UpdateWrapper<CareSysUser> updateWrapper2 = new UpdateWrapper<>();
+            updateWrapper2.lambda().eq(CareSysUser::getId,orderChamb.getChambId())
+                    .set(CareSysUser::getStatus,ChambStatusEnum.BUSY.getValue())
+                    .set(CareSysUser::getModifyTime,date);
+            this.careSysUserService.update(updateWrapper2);
+
             //保存日志
             CareEventOrderHandleHis his = new CareEventOrderHandleHis();
             his.setOrgId(orderChamb.getOrgId());
@@ -294,6 +303,12 @@ public class KeeperApiService {
                 .set(CareEventOrderChamb::getModifyTime,date);
         flag = this.careEventOrderChambService.update(updateWrapper);
         if (flag){
+            UpdateWrapper<CareSysUser> updateWrapper2 = new UpdateWrapper<>();
+            updateWrapper2.lambda().eq(CareSysUser::getId,orderChamb.getChambId())
+                    .set(CareSysUser::getStatus,ChambStatusEnum.FREE.getValue())
+                    .set(CareSysUser::getModifyTime,date);
+            this.careSysUserService.update(updateWrapper2);
+
             //保存日志
             CareEventOrderHandleHis his = new CareEventOrderHandleHis();
             his.setOrgId(orderChamb.getOrgId());

+ 2 - 7
src/main/java/com/care/keeper/vo/HouseContactVO.java

@@ -24,23 +24,18 @@ public class HouseContactVO implements Serializable {
     @TableId(value = "ID", type = IdType.AUTO)
     private Long id;
 
-
     @ApiModelProperty("机构ID")
     private Long orgId;
 
-
     @ApiModelProperty("服务站ID")
     private Long stationId;
 
-
-    @ApiModelProperty("房屋ID")
-    private Long houseId;
-
+    @ApiModelProperty("频安宝用户ID")
+    private Long memberId;
 
     @ApiModelProperty("姓名")
     private String name;
 
-
     @ApiModelProperty("电话")
     private String phone;
 

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

@@ -2,11 +2,11 @@
 
 ## 数据源 配置
 # 数据库连接URL
-spring.datasource.url=jdbc:mysql://localhost:3306/rfcare?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
+spring.datasource.url=jdbc:mysql://localhost:3306/pian?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
 # 数据库登录名
 spring.datasource.username=root
 # 数据库登录密码
-spring.datasource.auth=care#476^
+spring.datasource.auth=root
 
 ## mybatis-plus 配置
 # 将 SQL 语句输出到控制台(生产环境关闭)

+ 1 - 1
src/main/resources/application.properties

@@ -1,5 +1,5 @@
 # 激活指定环境配置文件
-spring.profiles.active=dev
+spring.profiles.active=prod
 
 # 配置服务端口号
 server.port=8889

+ 1 - 1
src/main/resources/common.properties

@@ -14,4 +14,4 @@ mqtt.port=8083
 mqtt.username=test
 mqtt.password=public
 #是否开启mqtt消息接受服务,开启:1,不开启:0
-mqtt.on=1
+mqtt.on=0

+ 4 - 2
src/main/resources/mybatis/BigSreenMapper.xml

@@ -251,8 +251,10 @@
           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_house_contact d on d.house_id = a.id
-        left join care_house ch on ch.id=a.house_id
+        FROM care_older a left join care_house_older_rel chor on chor.older_id = a.id
+        left join care_house_contact_rel chcr on chcr.house_id=chor.house_id
+        left join care_house_contact d on d.id = chcr.contact_id
+        left join care_house ch on ch.id=chcr.house_id
         where a.id = #{olderId}
         order by a.id,d.contact_level
     </select>

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

@@ -13,10 +13,13 @@
         select
             ceoc.*,
             ceo.addr as houseAddr,
-            cs.name as stationName
+            cs.name as stationName,
+            csu.phone as chambPhone,
+            csu.name as chambName
         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
+        left join care_sys_user csu on ceoc.chamb_id = csu.id
         <where>
             <if test="userOrgId != null">
                 AND ceoc.org_id = #{userOrgId}
@@ -27,6 +30,12 @@
            <if test="stationId != null">
                 AND ceoc.station_id = #{stationId}
             </if>
+            <if test="activeStatus != null and activeStatus != ''">
+                AND ceoc.active_status = #{activeStatus}
+            </if>
+            <if test="chambName != null and chambName != ''">
+                AND csu.name like CONCAT('%',#{chambName},'%')
+            </if>
             <if test="status != null and status != ''">
                 AND ceoc.status = #{status}
             </if>
@@ -36,7 +45,16 @@
             <if test="devCode != null and devCode != ''">
                 AND ceoc.dev_code like CONCAT('%',#{devCode},'%')
             </if>
+            <if test="chambId != null">
+                AND ceoc.chamb_id = #{chambId}
+            </if>
+            <if test="memberId != null">
+                AND ceoc.member_id = #{memberId}
+            </if>
         </where>
         order by ceoc.dev_code asc
     </select>
+     <update id="updateDevChamb">
+        update care_device set chamb_id=null where id=#{id}
+     </update>
 </mapper>

+ 17 - 0
unnamed.patch

@@ -0,0 +1,17 @@
+Index: src/main/resources/mybatis/StStationMapper.xml
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+--- src/main/resources/mybatis/StStationMapper.xml	(revision 8cea4e85549a31012dfcb94a9599edcacffa041f)
++++ src/main/resources/mybatis/StStationMapper.xml	(revision )
+@@ -17,7 +17,8 @@
+         (select count(1) from care_older a where a.station_id = t.id and a.safe_level = '1') oneLevelAmount,
+         (select count(1) from care_older a where a.station_id = t.id and a.safe_level = '1') twoLevelAmount,
+         (select count(1) from care_older a where a.station_id = t.id and a.safe_level = '1') threeLevelAmount,
+-        (select count(1) from care_sys_user b where b.role = 'chanmb' ) chamberlainAmount,
++        (select count(1) from care_sys_user b where b.station_id = t.id  and  b.role = 'chanmb' ) chamberlainAmount,
++        (select count(DISTINCT chamb_id) from care_event_order_chamb b where  b.station_id = t.id  and  b.status != '3' ) chamberlainInServiceAmount,
+         (select count(1) from care_event_order c where c.station_id = t.id ) serveAmount,
+         (select count(1) from care_event_order c where c.station_id = t.id and c.create_time >= CURDATE()) serveTodayAmount,
+         (select count(1) from care_device d where d.station_id = t.id ) deviceAmount,