浏览代码

Merge branch 'server-165' of uskycloud/usky-modules into master

gez 1 年之前
父节点
当前提交
cb90c5c75c
共有 100 个文件被更改,包括 5023 次插入3 次删除
  1. 4 0
      pom.xml
  2. 59 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/DataJinganAnalysisController.java
  3. 64 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/DataJinganPersonController.java
  4. 58 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/PatrolInspectionAttendanceController.java
  5. 8 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/PatrolInspectionPersonnelController.java
  6. 59 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/PatrolInspectionTypeController.java
  7. 163 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/DataJinganAnalysis.java
  8. 131 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/DataJinganPerson.java
  9. 100 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/PatrolInspectionAttendance.java
  10. 75 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/PatrolInspectionPersonnel.java
  11. 60 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/PatrolInspectionType.java
  12. 16 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/DataJinganAnalysisMapper.java
  13. 16 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/DataJinganPersonMapper.java
  14. 16 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/PatrolInspectionAttendanceMapper.java
  15. 2 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/PatrolInspectionPersonnelMapper.java
  16. 16 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/PatrolInspectionTypeMapper.java
  17. 34 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/DataJinganAnalysisService.java
  18. 32 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/DataJinganPersonService.java
  19. 25 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/PatrolInspectionAttendanceService.java
  20. 4 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/PatrolInspectionPersonnelService.java
  21. 24 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/PatrolInspectionTypeService.java
  22. 55 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/DataJinganAnalysisServiceImpl.java
  23. 51 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/DataJinganPersonServiceImpl.java
  24. 150 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionAttendanceServiceImpl.java
  25. 41 3
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionPersonnelServiceImpl.java
  26. 85 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionTypeServiceImpl.java
  27. 70 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/PatrolInspectionPersonnelVo.java
  28. 37 0
      service-fire/service-fire-biz/src/main/resources/mapper/fire/DataJinganAnalysisMapper.xml
  29. 30 0
      service-fire/service-fire-biz/src/main/resources/mapper/fire/DataJinganPersonMapper.xml
  30. 23 0
      service-fire/service-fire-biz/src/main/resources/mapper/fire/PatrolInspectionAttendanceMapper.xml
  31. 15 0
      service-fire/service-fire-biz/src/main/resources/mapper/fire/PatrolInspectionPersonnelMapper.xml
  32. 16 0
      service-fire/service-fire-biz/src/main/resources/mapper/fire/PatrolInspectionTypeMapper.xml
  33. 5 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpDeviceInfo.java
  34. 1 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceInfoServiceImpl.java
  35. 17 0
      service-meeting/pom.xml
  36. 29 0
      service-meeting/service-meeting-api/pom.xml
  37. 28 0
      service-meeting/service-meeting-api/src/main/java/com/usky/demo/RemoteUserService.java
  38. 105 0
      service-meeting/service-meeting-api/src/main/java/com/usky/demo/domain/SysUserVO.java
  39. 48 0
      service-meeting/service-meeting-api/src/main/java/com/usky/demo/factory/RemoteUserFallbackFactory.java
  40. 137 0
      service-meeting/service-meeting-biz/pom.xml
  41. 48 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/ApplicationRun.java
  42. 107 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/MybatisGenerator.java
  43. 10 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/annotation/FaceLog.java
  44. 39 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/annotation/aspect/FaceAspect.java
  45. 21 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingApproveController.java
  46. 21 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingApproveUserController.java
  47. 21 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingAttendeeController.java
  48. 75 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingDeviceController.java
  49. 91 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingFaceController.java
  50. 60 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingFaceVefLogController.java
  51. 21 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingFileController.java
  52. 75 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingFloorController.java
  53. 21 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingInfoController.java
  54. 53 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingRoomController.java
  55. 65 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingApprove.java
  56. 47 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingApproveUser.java
  57. 73 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingAttendee.java
  58. 110 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingDevice.java
  59. 86 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingFace.java
  60. 61 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingFaceVefLog.java
  61. 68 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingFile.java
  62. 85 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingFloor.java
  63. 175 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingInfo.java
  64. 150 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingRoom.java
  65. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingApproveMapper.java
  66. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingApproveUserMapper.java
  67. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingAttendeeMapper.java
  68. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingDeviceMapper.java
  69. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingFaceMapper.java
  70. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingFaceVefLogMapper.java
  71. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingFileMapper.java
  72. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingFloorMapper.java
  73. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingInfoMapper.java
  74. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingRoomMapper.java
  75. 46 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/repository/MeetingApproveRepository.java
  76. 12 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/repository/MeetingApproveUserRepository.java
  77. 14 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/repository/MeetingAttendeeRepository.java
  78. 41 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/repository/MeetingDeviceRepository.java
  79. 29 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/repository/MeetingFileRepository.java
  80. 503 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/repository/MeetingInfoRepository.java
  81. 118 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/repository/MeetingRoomRepository.java
  82. 55 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/server/FaceContrastServer.java
  83. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingApproveService.java
  84. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingApproveUserService.java
  85. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingAttendeeService.java
  86. 27 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingDeviceService.java
  87. 23 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingFaceService.java
  88. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingFaceVefLogService.java
  89. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingFileService.java
  90. 26 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingFloorService.java
  91. 29 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingInfoService.java
  92. 24 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingRoomService.java
  93. 19 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/dto/ApproveResults.java
  94. 85 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/dto/DeptDto.java
  95. 57 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/dto/DeptQueryCriteria.java
  96. 36 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/dto/DeptSmallDto.java
  97. 31 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/dto/DeptUser.java
  98. 41 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/dto/DictDetailDto.java
  99. 36 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/dto/DictDetailQueryCriteria.java
  100. 39 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/dto/DictDto.java

+ 4 - 0
pom.xml

@@ -75,6 +75,10 @@
 
     <module>service-issue</module>
 
+
+
+    <module>service-meeting</module>
+
   </modules>
           
   

+ 59 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/DataJinganAnalysisController.java

@@ -0,0 +1,59 @@
+package com.usky.fire.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.fire.domain.DataJinganAnalysis;
+import com.usky.fire.service.DataJinganAnalysisService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ * 静安电子督察单数据 前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-07
+ */
+@RestController
+@RequestMapping("/dataJinganAnalysis")
+public class DataJinganAnalysisController {
+    @Autowired
+    private DataJinganAnalysisService dataJinganAnalysisService;
+
+    /**
+     * 电子督察单管理-电子督察单列表查询
+     *
+     * @param startTime  开始时间
+     * @param endTime  结束时间
+     * @param superviseCode  督察单编号
+     * @param id  主键ID
+     * @param handleStatus  处理状态
+     * @param pageNum      当前页
+     * @param pageSize     每页条数
+     * @return
+     */
+    @GetMapping("analysisList")
+    public ApiResult<CommonPage<DataJinganAnalysis>> analysisList(@RequestParam(value = "startTime", required = false) String startTime,
+                                                                  @RequestParam(value = "endTime", required = false) String endTime,
+                                                                  @RequestParam(value = "superviseCode", required = false) String superviseCode,
+                                                                  @RequestParam(value = "id", required = false) Integer id,
+                                                                  @RequestParam(value = "handleStatus", required = false) Integer handleStatus,
+                                                                  @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
+                                                                  @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
+        return ApiResult.success(dataJinganAnalysisService.analysisList(startTime,endTime,superviseCode,id, handleStatus,pageNum, pageSize));
+    }
+
+    /**
+     * 修改
+     * @param dataJinganAnalysis
+     * @return
+     */
+    @PutMapping
+    public ApiResult<Void> update(@RequestBody DataJinganAnalysis dataJinganAnalysis){
+        dataJinganAnalysisService.update(dataJinganAnalysis);
+        return ApiResult.success();
+    }
+}
+

+ 64 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/DataJinganPersonController.java

@@ -0,0 +1,64 @@
+package com.usky.fire.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.fire.domain.DataJinganAnalysis;
+import com.usky.fire.domain.DataJinganPerson;
+import com.usky.fire.service.DataJinganAnalysisService;
+import com.usky.fire.service.DataJinganPersonService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-07
+ */
+@RestController
+@RequestMapping("/dataJinganPerson")
+public class DataJinganPersonController {
+    @Autowired
+    private DataJinganPersonService dataJinganPersonService;
+
+    /**
+     * 人工督察单管理-人工督察单列表查询
+     *
+     * @param startTime  开始时间
+     * @param endTime  结束时间
+     * @param artificialCode  督察单编号
+     * @param id  主键ID
+     * @param handleStatus  处理状态
+     * @param pageNum      当前页
+     * @param pageSize     每页条数
+     * @return
+     */
+    @GetMapping("personList")
+    public ApiResult<CommonPage<DataJinganPerson>> personList(@RequestParam(value = "startTime", required = false) String startTime,
+                                                              @RequestParam(value = "endTime", required = false) String endTime,
+                                                              @RequestParam(value = "artificialCode", required = false) String artificialCode,
+                                                              @RequestParam(value = "id", required = false) Integer id,
+                                                              @RequestParam(value = "handleStatus", required = false) Integer handleStatus,
+                                                              @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
+                                                              @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
+        return ApiResult.success(dataJinganPersonService.personList(startTime,endTime,artificialCode,id,handleStatus,
+                pageNum, pageSize));
+    }
+
+    /**
+     * 修改
+     * @param dataJinganPerson
+     * @return
+     */
+    @PutMapping
+    public ApiResult<Void> update(@RequestBody DataJinganPerson dataJinganPerson){
+        dataJinganPersonService.update(dataJinganPerson);
+        return ApiResult.success();
+    }
+}
+

+ 58 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/PatrolInspectionAttendanceController.java

@@ -0,0 +1,58 @@
+package com.usky.fire.controller.web;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.util.StringUtils;
+import com.usky.fire.domain.PatrolInspectionAttendance;
+import com.usky.fire.service.PatrolInspectionAttendanceService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Map;
+
+
+/**
+ * <p>
+ * 签到、签退信息记录表 前端控制器
+ * </p>
+ *
+ * @author fu
+ * @since 2024-02-05
+ */
+@RestController
+@RequestMapping("/patrolInspectionAttendance")
+public class PatrolInspectionAttendanceController {
+    @Autowired
+    private PatrolInspectionAttendanceService patrolInspectionAttendanceService;
+    /**
+     * 分页查询签到记录
+     * @param
+     * @param
+     * @return
+     */
+    @GetMapping("/pageQuery")
+    public ApiResult<IPage<Map<String, Object>>> pageQuery(@RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
+                                                           @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize,
+                                                           @RequestParam(value = "operateCode", required = false, defaultValue = "") String operateCode,
+                                                           @RequestParam(value = "operator", required = false, defaultValue = "") String operator,
+                                                           @RequestParam(value = "startTime", required = false ) LocalDateTime startTime,
+                                                           @RequestParam(value = "endTime", required = false, defaultValue = "#{T(java.time.LocalDateTime).now()}") LocalDateTime endTime) {
+        return ApiResult.success(patrolInspectionAttendanceService.pageList(pageNum, pageSize, operateCode, operator, startTime, endTime));
+    }
+
+    /**
+     * 新增
+     * @param patrolInspectionAttendance
+     * @return
+     */
+    @PostMapping("/add")
+    public ApiResult<Void> add(@RequestBody PatrolInspectionAttendance patrolInspectionAttendance){
+        patrolInspectionAttendanceService.add(patrolInspectionAttendance);
+        return ApiResult.success();
+    }
+}
+
+

+ 8 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/PatrolInspectionPersonnelController.java

@@ -102,5 +102,13 @@ public class PatrolInspectionPersonnelController {
     public ApiResult<List<PatrolInspectionPersonnelVo>> patrolInspectionPersonnelSelect(@RequestParam(value = "areaId", required = false) Integer areaId) {
         return ApiResult.success(patrolInspectionPersonnelService.patrolInspectionPersonnelSelect(areaId));
     }
+
+    /**
+     * 人员状态查询(0:签到,1:签退)
+     */
+    @GetMapping("getStatus")
+    public ApiResult<PatrolInspectionPersonnel> getStatus(){
+        return ApiResult.success(patrolInspectionPersonnelService.getStatus());
+    }
 }
 

+ 59 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/PatrolInspectionTypeController.java

@@ -0,0 +1,59 @@
+package com.usky.fire.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.fire.domain.PatrolInspectionType;
+import com.usky.fire.service.PatrolInspectionTypeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ * 类型表 前端控制器
+ * </p>
+ *
+ * @author fu
+ * @since 2024-02-05
+ */
+@RestController
+@RequestMapping("/patrolInspectionType")
+public class PatrolInspectionTypeController {
+    @Autowired
+    private PatrolInspectionTypeService patrolInspectionTypeService;
+    /**
+     * 操作类型分页查询
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    @GetMapping("/pageQuery")
+    public ApiResult<CommonPage<PatrolInspectionType>> pageQuery(
+            @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
+            @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) {
+        return ApiResult.success(patrolInspectionTypeService.pageList( pageNum, pageSize));
+    }
+
+    /**
+     * 新增
+     * @param patrolInspectionType
+     * @return
+     */
+    @PostMapping("/add")
+    public ApiResult<Void> add(@RequestBody PatrolInspectionType patrolInspectionType){
+        patrolInspectionTypeService.add(patrolInspectionType);
+        return ApiResult.success();
+    }
+
+    /**
+     * 删除
+     * @param deleteType
+     * @return
+     */
+    @GetMapping("/delete")
+    public ApiResult<Void> delete(@RequestBody PatrolInspectionType deleteType){
+        patrolInspectionTypeService.softDelete(deleteType);
+        return ApiResult.success();
+    }
+}
+

+ 163 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/DataJinganAnalysis.java

@@ -0,0 +1,163 @@
+package com.usky.fire.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 静安电子督察单数据
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class DataJinganAnalysis implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 一级平台密钥
+     */
+    private String appKey;
+
+    /**
+     * 时间
+     */
+    private LocalDateTime timestamp;
+
+    /**
+     * 数据格式
+     */
+    private String format;
+
+    /**
+     * 版本号
+     */
+    private String v;
+
+    /**
+     * 签名加密方式
+     */
+    private String signMethod;
+
+    /**
+     * 建筑物群id
+     */
+    private String pid;
+
+    /**
+     * 建筑物ID
+     */
+    private String bid;
+
+    /**
+     * 楼层ID
+     */
+    private String fid;
+
+    /**
+     * 督察单id
+     */
+    private String superviseId;
+
+    /**
+     * 督查单编号
+     */
+    private String superviseCode;
+
+    /**
+     * 处理状态(0未处理,1处理成功)
+     */
+    private Integer status;
+
+    /**
+     * 督察单内容
+     */
+    private String content;
+
+    /**
+     * 类型(1火警,2故障,3屏蔽,4隐患 (当type的值是隐患4时只有device_id,aid, 当type的值是1,2,3时只有mainframe_id, loop_number, position_number))
+     */
+    private Integer type;
+
+    /**
+     * 二级平台设备id
+     */
+    private String deviceId;
+
+    /**
+     * 一级平台属性id
+     */
+    private String aid;
+
+    /**
+     * 二级平台回路编号(部件区号)
+     */
+    private String loopNumber;
+
+    /**
+     * 二级平台点位编号(部件位号)
+     */
+    private String positionNumber;
+
+    /**
+     * 二级平台主机id
+     */
+    private String mainframeId;
+
+    /**
+     * 签名
+     */
+    private String sign;
+
+    /**
+     * 单位编号
+     */
+    private String companyCode;
+
+    /**
+     * 处理人
+     */
+    private String handleBy;
+
+    /**
+     * 处理时间
+     */
+    private LocalDateTime handleTime;
+
+    /**
+     * 处理内容
+     */
+    private String handleContent;
+
+    /**
+     * 处理人电话
+     */
+    private String handlePhone;
+
+    /**
+     * 处理状态;0 未处理,1 已处理
+     */
+    private Integer handleStatus;
+
+    /**
+     * 组织结构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 131 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/DataJinganPerson.java

@@ -0,0 +1,131 @@
+package com.usky.fire.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class DataJinganPerson implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 人工督查单解析后ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 物联网服务商接入平台给服务商分配的app_key
+     */
+    private String appKey;
+
+    /**
+     * 时间
+     */
+    private LocalDateTime timestamp;
+
+    /**
+     * 响应格式 : json
+     */
+    private String format;
+
+    /**
+     * API协议版本: 1.0
+     */
+    private String version;
+
+    /**
+     * 签名的摘要算法: md5
+     */
+    private String signMethod;
+
+    /**
+     * 一级平台的人工督察单id
+     */
+    private String artificialId;
+
+    /**
+     * 一级平台的建筑群id
+     */
+    private String pid;
+
+    /**
+     * 人工督察单编号
+     */
+    private String artificialCode;
+
+    /**
+     * 一级平台单位id
+     */
+    private String companyId;
+
+    /**
+     * 督察单内容
+     */
+    private String content;
+
+    /**
+     * 告警处理状态:0未处理,1处理成功
+     */
+    private Integer status;
+
+    /**
+     * 签名值,二级平台根据这个签名值判断数据来源
+     */
+    private String sign;
+
+    /**
+     * 二级平台单位编号
+     */
+    private String companyCode;
+
+    /**
+     * 处理人
+     */
+    private String handleBy;
+
+    /**
+     * 处理时间
+     */
+    private LocalDateTime handleTime;
+
+    /**
+     * 处理内容
+     */
+    private String handleContent;
+
+    /**
+     * 处理人电话
+     */
+    private String handlePhone;
+
+    /**
+     * 处理状态;0 未处理,1 已处理
+     */
+    private Integer handleStatus;
+
+    /**
+     * 组织结构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 100 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/PatrolInspectionAttendance.java

@@ -0,0 +1,100 @@
+package com.usky.fire.domain;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 签到、签退信息记录表
+ * </p>
+ *
+ * @author fu
+ * @since 2024-02-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class PatrolInspectionAttendance implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 签到、签退信息记录表主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 组织机构ID
+     */
+    private Long deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+    /**
+     * 签到人
+     */
+    private String operator;
+
+    /**
+     * 签到人id
+     */
+    private Long operatorId;
+
+    /**
+     * 操作时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime operateDate;
+
+    /**
+     * 签到类型(0 签到,1 签退)
+     */
+    private Integer signInType;
+
+    /**
+     *
+     * 操作类型编码
+     */
+    private String operateCode;
+
+    /**
+     * 设备编号
+     */
+    private String deviceCode;
+
+    /**
+     * 图片路径
+     */
+    private String imagePath;
+
+    /**
+     * 经度
+     */
+    private BigDecimal longitude;
+
+    /**
+     * 维度
+     */
+    private BigDecimal latitude;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 身份编号
+     */
+    private String identificationNumber;
+
+}

+ 75 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/PatrolInspectionPersonnel.java

@@ -2,6 +2,8 @@ package com.usky.fire.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.io.Serializable;
 import lombok.Data;
@@ -64,5 +66,78 @@ public class PatrolInspectionPersonnel implements Serializable {
      */
     private Integer companyId;
 
+    /**
+     * 签到状态(0,签到;1,签退)
+     */
+    private Integer operateType;
+
+    /**
+     * 证件信息
+     */
+    private String documentInfo;
+
+    /**
+     * 民族
+     */
+    private String nation;
+
+    /**
+     * 文化程序(1、小学 2、初中 3、高中 4、大学 5、其他 )
+     */
+    private Integer eduLevel;
+
+    /**
+     * 户籍地址
+     */
+    private String registerResidence;
+
+    /**
+     * 居住地址
+     */
+    private String residence;
+
+    /**
+     * 物理卡号
+     */
+    private String physicsCard;
+
+    /**
+     * 身份证号
+     */
+    private String idCard;
+
+    /**
+     * 姓名
+     */
+    private String fullName;
+
+    /**
+     * 是否在职(0、不在职 1、在职)
+     */
+    private Integer whetherEmploy;
+
+    /**
+     * 出生日期
+     */
+    private LocalDate birthDate;
 
+    /**
+     * 用户性别(0男 1女 2未知)
+     */
+    private Integer sex;
+
+    /**
+     * 联系电话
+     */
+    private String phoneNumber;
+
+    /**
+     * 主要职务
+     */
+    private Integer mainPosition;
+
+    /**
+     * 服务内容
+     */
+    private String serviceContent;
 }

+ 60 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/PatrolInspectionType.java

@@ -0,0 +1,60 @@
+package com.usky.fire.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 类型表
+ * </p>
+ *
+ * @author fu
+ * @since 2024-02-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class PatrolInspectionType implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 类型表主键id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 类型编号
+     */
+    private String operateCode;
+
+    /**
+     * 类型名称
+     */
+    private String typeName;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+    /**
+     * 组织机构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 删除标识
+     */
+    private Integer deleteFlag;
+
+
+}

+ 16 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/DataJinganAnalysisMapper.java

@@ -0,0 +1,16 @@
+package com.usky.fire.mapper;
+
+import com.usky.fire.domain.DataJinganAnalysis;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 静安电子督察单数据 Mapper 接口
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-07
+ */
+public interface DataJinganAnalysisMapper extends CrudMapper<DataJinganAnalysis> {
+
+}

+ 16 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/DataJinganPersonMapper.java

@@ -0,0 +1,16 @@
+package com.usky.fire.mapper;
+
+import com.usky.fire.domain.DataJinganPerson;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-07
+ */
+public interface DataJinganPersonMapper extends CrudMapper<DataJinganPerson> {
+
+}

+ 16 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/PatrolInspectionAttendanceMapper.java

@@ -0,0 +1,16 @@
+package com.usky.fire.mapper;
+
+import com.usky.fire.domain.PatrolInspectionAttendance;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 签到、签退信息记录表 Mapper 接口
+ * </p>
+ *
+ * @author fu
+ * @since 2024-02-05
+ */
+public interface PatrolInspectionAttendanceMapper extends CrudMapper<PatrolInspectionAttendance> {
+
+}

+ 2 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/PatrolInspectionPersonnelMapper.java

@@ -2,6 +2,7 @@ package com.usky.fire.mapper;
 
 import com.usky.fire.domain.PatrolInspectionPersonnel;
 import com.usky.common.mybatis.core.CrudMapper;
+import org.springframework.stereotype.Repository;
 
 /**
  * <p>
@@ -11,6 +12,7 @@ import com.usky.common.mybatis.core.CrudMapper;
  * @author JCB
  * @since 2022-07-26
  */
+@Repository
 public interface PatrolInspectionPersonnelMapper extends CrudMapper<PatrolInspectionPersonnel> {
 
 }

+ 16 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/PatrolInspectionTypeMapper.java

@@ -0,0 +1,16 @@
+package com.usky.fire.mapper;
+
+import com.usky.fire.domain.PatrolInspectionType;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 类型表 Mapper 接口
+ * </p>
+ *
+ * @author fu
+ * @since 2024-02-05
+ */
+public interface PatrolInspectionTypeMapper extends CrudMapper<PatrolInspectionType> {
+
+}

+ 34 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/DataJinganAnalysisService.java

@@ -0,0 +1,34 @@
+package com.usky.fire.service;
+
+import com.usky.common.core.bean.CommonPage;
+import com.usky.fire.domain.DataJinganAnalysis;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * 静安电子督察单数据 服务类
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-07
+ */
+public interface DataJinganAnalysisService extends CrudService<DataJinganAnalysis> {
+
+    /**
+     * 电子督察单管理-电子督察单列表查询
+     *
+     * @param startTime  开始时间
+     * @param endTime  结束时间
+     * @param superviseCode  督察单编号
+     * @param id  主键ID
+     * @param handleStatus  处理状态
+     * @param pageNum      当前页
+     * @param pageSize     每页条数
+     * @return
+     */
+    CommonPage<DataJinganAnalysis> analysisList(String startTime, String endTime,String superviseCode,Integer id,
+                                                Integer handleStatus, Integer pageNum, Integer pageSize);
+
+    void update(DataJinganAnalysis dataJinganAnalysis);
+
+}

+ 32 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/DataJinganPersonService.java

@@ -0,0 +1,32 @@
+package com.usky.fire.service;
+
+import com.usky.common.core.bean.CommonPage;
+import com.usky.fire.domain.DataJinganAnalysis;
+import com.usky.fire.domain.DataJinganPerson;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-07
+ */
+public interface DataJinganPersonService extends CrudService<DataJinganPerson> {
+    /**
+     * 人工督察单管理-人工督察单列表查询
+     *
+     * @param startTime  开始时间
+     * @param endTime  结束时间
+     * @param artificialCode  督察单编号
+     * @param id  主键ID
+     * @param handleStatus  处理状态
+     * @param pageNum      当前页
+     * @param pageSize     每页条数
+     * @return
+     */
+    CommonPage<DataJinganPerson> personList(String startTime, String endTime,String artificialCode,Integer id, Integer handleStatus, Integer pageNum, Integer pageSize);
+
+    void update(DataJinganPerson dataJinganPerson);
+}

+ 25 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/PatrolInspectionAttendanceService.java

@@ -0,0 +1,25 @@
+package com.usky.fire.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.usky.fire.domain.PatrolInspectionAttendance;
+import com.usky.common.mybatis.core.CrudService;
+
+import java.time.LocalDateTime;
+import java.util.Map;
+
+/**
+ * <p>
+ * 签到、签退信息记录表 服务类
+ * </p>
+ *
+ * @author fu
+ * @since 2024-02-05
+ */
+public interface PatrolInspectionAttendanceService extends CrudService<PatrolInspectionAttendance> {
+
+    IPage<Map<String, Object>> pageList(Integer pageNum, Integer pageSize, String operateCode, String operator, LocalDateTime startTime, LocalDateTime endTime);
+
+    void add(PatrolInspectionAttendance patrolInspectionAttendance);
+
+    String getDeptName(Integer id);
+}

+ 4 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/PatrolInspectionPersonnelService.java

@@ -30,4 +30,8 @@ public interface PatrolInspectionPersonnelService extends CrudService<PatrolInsp
 
     List<PatrolInspectionAreaVo> personnelLeftList();
 
+    void updateSignStatus(Integer status);
+
+    PatrolInspectionPersonnel getStatus();
+
 }

+ 24 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/PatrolInspectionTypeService.java

@@ -0,0 +1,24 @@
+package com.usky.fire.service;
+
+import com.usky.common.core.bean.CommonPage;
+import com.usky.fire.domain.PatrolInspectionType;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * 类型表 服务类
+ * </p>
+ *
+ * @author fu
+ * @since 2024-02-05
+ */
+public interface PatrolInspectionTypeService extends CrudService<PatrolInspectionType> {
+
+    CommonPage<PatrolInspectionType> pageList(Integer pageNum, Integer pageSize);
+
+    void add(PatrolInspectionType patrolInspectionType);
+
+    void softDelete(PatrolInspectionType deleteType);
+
+    String getName(String code);
+}

+ 55 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/DataJinganAnalysisServiceImpl.java

@@ -0,0 +1,55 @@
+package com.usky.fire.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.fire.domain.AlarmFire;
+import com.usky.fire.domain.DataJinganAnalysis;
+import com.usky.fire.mapper.DataJinganAnalysisMapper;
+import com.usky.fire.service.DataJinganAnalysisService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 静安电子督察单数据 服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-07
+ */
+@Service
+public class DataJinganAnalysisServiceImpl extends AbstractCrudService<DataJinganAnalysisMapper, DataJinganAnalysis> implements DataJinganAnalysisService {
+
+    @Override
+    public CommonPage<DataJinganAnalysis> analysisList(String startTime, String endTime, String superviseCode,Integer id,
+                                                       Integer handleStatus, Integer pageNum, Integer pageSize) {
+        IPage<DataJinganAnalysis> page = new Page<>(pageNum, pageSize);
+        LambdaQueryWrapper<DataJinganAnalysis> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(DataJinganAnalysis::getTenantId, SecurityUtils.getTenantId())
+                .eq(null != handleStatus,DataJinganAnalysis::getHandleStatus, handleStatus)
+                .eq(null != id,DataJinganAnalysis::getId, id)
+                .like(StringUtils.isNotBlank(superviseCode),DataJinganAnalysis::getSuperviseCode,superviseCode)
+                .between(StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime),
+                        DataJinganAnalysis::getTimestamp, startTime, endTime)
+                .orderByDesc(DataJinganAnalysis::getId);
+        page = this.page(page,queryWrapper);
+        return new CommonPage<>(page.getRecords(),page.getTotal(),page.getCurrent(),page.getSize());
+    }
+
+    public void update(DataJinganAnalysis dataJinganAnalysis){
+        dataJinganAnalysis.setHandleStatus(1);
+        dataJinganAnalysis.setHandleBy(SecurityUtils.getUsername());
+        dataJinganAnalysis.setHandleTime(LocalDateTime.now());
+        dataJinganAnalysis.setHandlePhone(SecurityUtils.getLoginUser().getSysUser().getPhonenumber());
+        this.updateById(dataJinganAnalysis);
+    }
+}

+ 51 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/DataJinganPersonServiceImpl.java

@@ -0,0 +1,51 @@
+package com.usky.fire.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.fire.domain.DataJinganAnalysis;
+import com.usky.fire.domain.DataJinganPerson;
+import com.usky.fire.mapper.DataJinganPersonMapper;
+import com.usky.fire.service.DataJinganPersonService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2024-03-07
+ */
+@Service
+public class DataJinganPersonServiceImpl extends AbstractCrudService<DataJinganPersonMapper, DataJinganPerson> implements DataJinganPersonService {
+    @Override
+    public CommonPage<DataJinganPerson> personList(String startTime, String endTime,String artificialCode,Integer id, Integer handleStatus, Integer pageNum, Integer pageSize) {
+        IPage<DataJinganPerson> page = new Page<>(pageNum, pageSize);
+        LambdaQueryWrapper<DataJinganPerson> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(DataJinganPerson::getTenantId, SecurityUtils.getTenantId())
+                .eq(null != handleStatus,DataJinganPerson::getHandleStatus, handleStatus)
+                .eq(null != id,DataJinganPerson::getId, id)
+                .like(StringUtils.isNotBlank(artificialCode),DataJinganPerson::getArtificialCode,artificialCode)
+                .between(StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime),
+                        DataJinganPerson::getTimestamp, startTime, endTime)
+                .orderByDesc(DataJinganPerson::getId);
+        page = this.page(page,queryWrapper);
+        return new CommonPage<>(page.getRecords(),page.getTotal(),page.getCurrent(),page.getSize());
+    }
+
+    public void update(DataJinganPerson dataJinganPerson){
+        dataJinganPerson.setHandleStatus(1);
+        dataJinganPerson.setHandleBy(SecurityUtils.getUsername());
+        dataJinganPerson.setHandleTime(LocalDateTime.now());
+        dataJinganPerson.setHandlePhone(SecurityUtils.getLoginUser().getSysUser().getPhonenumber());
+        this.updateById(dataJinganPerson);
+    }
+}

+ 150 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionAttendanceServiceImpl.java

@@ -0,0 +1,150 @@
+package com.usky.fire.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+
+import com.usky.common.core.exception.BusinessException;
+import com.usky.common.core.util.StringUtils;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.fire.domain.PatrolInspectionAttendance;
+import com.usky.fire.domain.PatrolInspectionPersonnel;
+import com.usky.fire.mapper.PatrolInspectionAttendanceMapper;
+import com.usky.fire.mapper.PatrolInspectionPersonnelMapper;
+import com.usky.fire.service.PatrolInspectionAttendanceService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.fire.service.PatrolInspectionPersonnelService;
+import com.usky.fire.service.PatrolInspectionTypeService;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.usky.system.RemoteDeptService;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * <p>
+ * 签到、签退信息记录表 服务实现类
+ * </p>
+ *
+ * @author fu
+ * @since 2024-02-05
+ */
+@Service
+public class PatrolInspectionAttendanceServiceImpl extends AbstractCrudService<PatrolInspectionAttendanceMapper, PatrolInspectionAttendance> implements PatrolInspectionAttendanceService {
+    @Autowired
+    private PatrolInspectionTypeService patrolInspectionTypeService;
+
+    @Autowired
+    private RemoteDeptService remoteDeptService;
+
+    @Autowired
+    private PatrolInspectionPersonnelService patrolInspectionPersonnelService;
+
+    @Autowired
+    private PatrolInspectionPersonnelMapper patrolInspectionPersonnelMapper;
+    @Override
+    public IPage<Map<String, Object>> pageList(Integer pageNum, Integer pageSize, String operateCode, String operator, LocalDateTime startTime, LocalDateTime endTime) {
+        IPage<PatrolInspectionAttendance> page = new Page<>(pageNum, pageSize);
+        LambdaQueryWrapper<PatrolInspectionAttendance> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(PatrolInspectionAttendance::getTenantId, SecurityUtils.getTenantId());
+
+        if (StringUtils.isNotBlank(operateCode)) {
+            queryWrapper.eq(PatrolInspectionAttendance::getOperateCode, operateCode);
+        }
+
+        if (StringUtils.isNotBlank(operator)) {
+            queryWrapper.eq(PatrolInspectionAttendance::getOperator, operator);
+        }
+
+        if (startTime != null) {
+            queryWrapper.between(endTime!=null,PatrolInspectionAttendance::getOperateDate, startTime, endTime);
+        }else {
+            queryWrapper.le(endTime!=null,PatrolInspectionAttendance::getOperateDate, endTime);
+        }
+
+        queryWrapper.orderByDesc(PatrolInspectionAttendance::getId);
+
+        IPage<PatrolInspectionAttendance> attendancePage = baseMapper.selectPage(page, queryWrapper);
+
+        List<Map<String, Object>> resultList = new ArrayList<>();
+
+        for (PatrolInspectionAttendance attendance : attendancePage.getRecords()) {
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", attendance.getId());
+            Long deptId = attendance.getDeptId();
+            String deptName = deptId != null ? getDeptName(Math.toIntExact(deptId)) : "";
+            map.put("deptName", deptName);
+            map.put("tenantId", attendance.getTenantId());
+            map.put("operator", attendance.getOperator());
+            map.put("operatorId", attendance.getOperatorId());
+            map.put("operateDate", attendance.getOperateDate());
+            map.put("signInType", attendance.getSignInType());
+            map.put("operateName", patrolInspectionTypeService.getName(attendance.getOperateCode()));
+            map.put("deviceCode", attendance.getDeviceCode());
+            map.put("imagePath", attendance.getImagePath());
+            map.put("longitude", attendance.getLongitude());
+            map.put("latitude", attendance.getLatitude());
+            map.put("remarks", attendance.getRemarks());
+            map.put("identificationNumber", attendance.getIdentificationNumber());
+            resultList.add(map);
+        }
+        IPage<Map<String, Object>> resultPage = new Page<>();
+        resultPage.setRecords(resultList);
+        resultPage.setTotal(attendancePage.getTotal());
+        resultPage.setCurrent(attendancePage.getCurrent());
+        resultPage.setSize(attendancePage.getSize());
+        return resultPage;
+    }
+
+    @Override
+    public void add(PatrolInspectionAttendance patrolInspectionAttendance) {
+        LambdaQueryWrapper<PatrolInspectionPersonnel> wrapper = Wrappers.lambdaQuery();
+        wrapper.eq(PatrolInspectionPersonnel::getUserId,SecurityUtils.getUserId());
+        List<PatrolInspectionPersonnel> personnelList = patrolInspectionPersonnelMapper.selectList(wrapper);
+        if (personnelList.isEmpty()) {
+            throw new BusinessException("您不是巡检人员,不可进行此操作");
+        }
+        patrolInspectionAttendance.setTenantId(SecurityUtils.getTenantId());
+        patrolInspectionAttendance.setOperator(SecurityUtils.getUsername());
+        patrolInspectionAttendance.setOperatorId(SecurityUtils.getUserId());
+        patrolInspectionAttendance.setDeptId(SecurityUtils.getLoginUser().getSysUser().getDeptId());
+        patrolInspectionAttendance.setOperateDate(LocalDateTime.now());
+        patrolInspectionAttendance.setRemarks(patrolInspectionAttendance.getRemarks());
+        patrolInspectionAttendance.setSignInType(patrolInspectionAttendance.getSignInType());
+        patrolInspectionAttendance.setOperateCode(patrolInspectionAttendance.getOperateCode());
+        patrolInspectionAttendance.setImagePath(patrolInspectionAttendance.getImagePath());
+        patrolInspectionAttendance.setLatitude(patrolInspectionAttendance.getLatitude());
+        patrolInspectionAttendance.setLongitude(patrolInspectionAttendance.getLongitude());
+        patrolInspectionAttendance.setIdentificationNumber(SecurityUtils.getLoginUser().getSysUser().getPhonenumber());
+        patrolInspectionAttendance.setDeviceCode(patrolInspectionAttendance.getDeviceCode());
+        baseMapper.insert(patrolInspectionAttendance);
+        patrolInspectionPersonnelService.updateSignStatus(patrolInspectionAttendance.getSignInType());
+    }
+
+    /**
+     * 获取部门名
+     * @param id
+     * @return
+     */
+    @Override
+        public String getDeptName(Integer id) {
+            String name = "";
+            List<Map<String, Object>> deptList = remoteDeptService.getDeptList(SecurityUtils.getTenantId());
+            for (int i = 0; i < deptList.size(); i++) {
+                if (id.equals(deptList.get(i).get("dept_id"))){
+                    name = deptList.get(i).get("dept_name").toString();
+                }
+            }
+            return name;
+        }
+
+}
+

+ 41 - 3
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionPersonnelServiceImpl.java

@@ -1,6 +1,7 @@
 package com.usky.fire.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.usky.common.core.bean.ApiResult;
 import com.usky.common.core.bean.CommonPage;
@@ -54,11 +55,11 @@ public class PatrolInspectionPersonnelServiceImpl extends AbstractCrudService<Pa
     public void addPatrolInspectionPersonnel(PatrolInspectionPersonnel patrolInspectionPersonnel) {
         LambdaQueryWrapper<PatrolInspectionPersonnel> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.eq(PatrolInspectionPersonnel::getTenantId, SecurityUtils.getTenantId())
-                .eq(PatrolInspectionPersonnel::getAreaId, patrolInspectionPersonnel.getAreaId())
+//                .eq(PatrolInspectionPersonnel::getAreaId, patrolInspectionPersonnel.getAreaId())
                 .eq(PatrolInspectionPersonnel::getUserId, patrolInspectionPersonnel.getUserId());
         int count = this.count(queryWrapper);
         if (count>0){
-            throw new BusinessException("同区域人员不可重复添加");
+            throw new BusinessException("巡检人员只能绑定一个巡检区域");
         }
         patrolInspectionPersonnel.setCompanyId(0);
         patrolInspectionPersonnel.setTenantId(SecurityUtils.getTenantId());
@@ -78,7 +79,8 @@ public class PatrolInspectionPersonnelServiceImpl extends AbstractCrudService<Pa
         LambdaQueryWrapper<PatrolInspectionPersonnel> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.eq(PatrolInspectionPersonnel::getEnable, 1)
                 .eq(PatrolInspectionPersonnel::getUserId, patrolInspectionPersonnel.getUserId())
-                .eq(PatrolInspectionPersonnel::getAreaId, patrolInspectionPersonnel.getAreaId())
+//                .eq(PatrolInspectionPersonnel::getAreaId, patrolInspectionPersonnel.getAreaId())
+                .ne(PatrolInspectionPersonnel::getId,patrolInspectionPersonnel.getId())
                 .eq(PatrolInspectionPersonnel::getTenantId, SecurityUtils.getTenantId());
         if ("00".equals(userType)) {
             queryWrapper.eq(PatrolInspectionPersonnel::getCreator, SecurityUtils.getUsername());
@@ -142,6 +144,20 @@ public class PatrolInspectionPersonnelServiceImpl extends AbstractCrudService<Pa
                 patrolInspectionPersonnelVo.setTenantId(list.get(i).getTenantId());
                 patrolInspectionPersonnelVo.setAreaId(list.get(i).getAreaId());
                 patrolInspectionPersonnelVo.setUserId(list.get(i).getUserId());
+                patrolInspectionPersonnelVo.setDocumentInfo(list.get(i).getDocumentInfo());
+                patrolInspectionPersonnelVo.setNation(list.get(i).getNation());
+                patrolInspectionPersonnelVo.setEduLevel(list.get(i).getEduLevel());
+                patrolInspectionPersonnelVo.setRegisterResidence(list.get(i).getRegisterResidence());
+                patrolInspectionPersonnelVo.setResidence(list.get(i).getResidence());
+                patrolInspectionPersonnelVo.setPhysicsCard(list.get(i).getPhysicsCard());
+                patrolInspectionPersonnelVo.setIdCard(list.get(i).getIdCard());
+                patrolInspectionPersonnelVo.setFullName(list.get(i).getFullName());
+                patrolInspectionPersonnelVo.setWhetherEmploy(list.get(i).getWhetherEmploy());
+                patrolInspectionPersonnelVo.setBirthDate(list.get(i).getBirthDate());
+                patrolInspectionPersonnelVo.setSex(list.get(i).getSex());
+                patrolInspectionPersonnelVo.setPhoneNumber(list.get(i).getPhoneNumber());
+                patrolInspectionPersonnelVo.setMainPosition(list.get(i).getMainPosition());
+                patrolInspectionPersonnelVo.setServiceContent(list.get(i).getServiceContent());
                 for (int j = 0; j < userList.size(); j++) {
                     if (list.get(i).getUserId().longValue() == userList.get(j).getUserId()) {
                         patrolInspectionPersonnelVo.setName(userList.get(j).getNickName());
@@ -215,6 +231,28 @@ public class PatrolInspectionPersonnelServiceImpl extends AbstractCrudService<Pa
         return patrolInspectionAreaVoListOne;
     }
 
+    /**
+     * 签到状态更新
+     */
+    public void updateSignStatus(Integer status) {
+        LambdaUpdateWrapper<PatrolInspectionPersonnel> updateWrapper = Wrappers.lambdaUpdate();
+        updateWrapper.eq(PatrolInspectionPersonnel::getUserId, SecurityUtils.getUserId())
+                .set(PatrolInspectionPersonnel::getOperateType, status);
+
+        baseMapper.update(null, updateWrapper);
+    }
+
+    /**
+     * 签到状态查询
+     */
+    public PatrolInspectionPersonnel getStatus(){
+        LambdaQueryWrapper<PatrolInspectionPersonnel> wrapper = Wrappers.lambdaQuery();
+        wrapper.eq(PatrolInspectionPersonnel::getUserId,SecurityUtils.getUserId())
+                .last("LIMIT 1");
+        return baseMapper.selectOne(wrapper);
+    }
+
+
     @Override
     public List<PatrolInspectionPersonnelVo> patrolInspectionPersonnelSelect(Integer areaId) {
         LoginUser loginUser = SecurityUtils.getLoginUser();

+ 85 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionTypeServiceImpl.java

@@ -0,0 +1,85 @@
+package com.usky.fire.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.usky.common.core.bean.CommonPage;
+
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.fire.domain.PatrolInspectionType;
+import com.usky.fire.mapper.PatrolInspectionTypeMapper;
+import com.usky.fire.service.PatrolInspectionTypeService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * <p>
+ * 类型表 服务实现类
+ * </p>
+ *
+ * @author fu
+ * @since 2024-02-05
+ */
+@Service
+public class PatrolInspectionTypeServiceImpl extends AbstractCrudService<PatrolInspectionTypeMapper, PatrolInspectionType> implements PatrolInspectionTypeService {
+
+    /**
+     * 分页查询
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    @Override
+    public CommonPage<PatrolInspectionType> pageList(Integer pageNum, Integer pageSize) {
+        IPage<PatrolInspectionType> page = new Page<>(pageNum,pageSize);
+        LambdaQueryWrapper<PatrolInspectionType> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(PatrolInspectionType::getTenantId,SecurityUtils.getTenantId())
+                .eq(PatrolInspectionType::getDeleteFlag,0)
+                .orderByDesc(PatrolInspectionType::getId);
+        page = this.page(page,queryWrapper);
+        return new CommonPage<>(page.getRecords(),page.getTotal(),pageNum,pageSize);
+    }
+
+    /**
+     * 添加操作类型
+     * @param patrolInspectionType
+     */
+    @Override
+    public void add(PatrolInspectionType patrolInspectionType) {
+        DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+        Date date = new Date();
+        String timestamp = dateFormat.format(date);
+        patrolInspectionType.setOperateCode(patrolInspectionType.getOperateCode()+"-"+timestamp);
+        baseMapper.insert(patrolInspectionType);
+    }
+
+    /**
+     * 软删除
+     * @param deleteType
+     */
+    @Override
+    public void softDelete(PatrolInspectionType deleteType) {
+        deleteType.setDeleteFlag(1);
+        baseMapper.updateById(deleteType);
+    }
+
+    /**
+     * 查类型名字
+     */
+    @Override
+    public String getName(String code){
+        LambdaQueryWrapper<PatrolInspectionType> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.select(PatrolInspectionType::getTypeName)
+                .eq(PatrolInspectionType::getOperateCode,code);
+        PatrolInspectionType patrolInspectionType = baseMapper.selectOne(queryWrapper);
+        if (patrolInspectionType == null) {
+            return "";
+        }
+            return patrolInspectionType.getTypeName();
+    }
+}

+ 70 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/vo/PatrolInspectionPersonnelVo.java

@@ -7,6 +7,7 @@ import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
@@ -70,5 +71,74 @@ public class PatrolInspectionPersonnelVo implements Serializable {
      */
     private String name;
 
+    /**
+     * 证件信息
+     */
+    private String documentInfo;
+
+    /**
+     * 民族
+     */
+    private String nation;
+
+    /**
+     * 文化程序(1、小学 2、初中 3、高中 4、大学 5、其他 )
+     */
+    private Integer eduLevel;
+
+    /**
+     * 户籍地址
+     */
+    private String registerResidence;
+
+    /**
+     * 居住地址
+     */
+    private String residence;
+
+    /**
+     * 物理卡号
+     */
+    private String physicsCard;
+
+    /**
+     * 身份证号
+     */
+    private String idCard;
+
+    /**
+     * 姓名
+     */
+    private String fullName;
+
+    /**
+     * 是否在职(0、不在职 1、在职)
+     */
+    private Integer whetherEmploy;
+
+    /**
+     * 出生日期
+     */
+    private LocalDate birthDate;
+
+    /**
+     * 用户性别(0男 1女 2未知)
+     */
+    private Integer sex;
+
+    /**
+     * 联系电话
+     */
+    private String phoneNumber;
+
+    /**
+     * 主要职务
+     */
+    private Integer mainPosition;
+
+    /**
+     * 服务内容
+     */
+    private String serviceContent;
 
 }

+ 37 - 0
service-fire/service-fire-biz/src/main/resources/mapper/fire/DataJinganAnalysisMapper.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.fire.mapper.DataJinganAnalysisMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.fire.domain.DataJinganAnalysis">
+        <id column="id" property="id" />
+        <result column="app_key" property="appKey" />
+        <result column="timestamp" property="timestamp" />
+        <result column="format" property="format" />
+        <result column="v" property="v" />
+        <result column="sign_method" property="signMethod" />
+        <result column="pid" property="pid" />
+        <result column="bid" property="bid" />
+        <result column="fid" property="fid" />
+        <result column="supervise_id" property="superviseId" />
+        <result column="supervise_code" property="superviseCode" />
+        <result column="status" property="status" />
+        <result column="content" property="content" />
+        <result column="type" property="type" />
+        <result column="device_id" property="deviceId" />
+        <result column="aid" property="aid" />
+        <result column="loop_number" property="loopNumber" />
+        <result column="position_number" property="positionNumber" />
+        <result column="mainframe_id" property="mainframeId" />
+        <result column="sign" property="sign" />
+        <result column="company_code" property="companyCode" />
+        <result column="handle_by" property="handleBy" />
+        <result column="handle_time" property="handleTime" />
+        <result column="handle_content" property="handleContent" />
+        <result column="handle_phone" property="handlePhone" />
+        <result column="handle_status" property="handleStatus" />
+        <result column="dept_id" property="deptId" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+
+</mapper>

+ 30 - 0
service-fire/service-fire-biz/src/main/resources/mapper/fire/DataJinganPersonMapper.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.fire.mapper.DataJinganPersonMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.fire.domain.DataJinganPerson">
+        <id column="id" property="id" />
+        <result column="app_key" property="appKey" />
+        <result column="timestamp" property="timestamp" />
+        <result column="format" property="format" />
+        <result column="version" property="version" />
+        <result column="sign_method" property="signMethod" />
+        <result column="artificial_id" property="artificialId" />
+        <result column="pid" property="pid" />
+        <result column="artificial_code" property="artificialCode" />
+        <result column="company_id" property="companyId" />
+        <result column="content" property="content" />
+        <result column="status" property="status" />
+        <result column="sign" property="sign" />
+        <result column="company_code" property="companyCode" />
+        <result column="handle_by" property="handleBy" />
+        <result column="handle_time" property="handleTime" />
+        <result column="handle_content" property="handleContent" />
+        <result column="handle_phone" property="handlePhone" />
+        <result column="handle_status" property="handleStatus" />
+        <result column="dept_id" property="deptId" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+
+</mapper>

+ 23 - 0
service-fire/service-fire-biz/src/main/resources/mapper/fire/PatrolInspectionAttendanceMapper.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.fire.mapper.PatrolInspectionAttendanceMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.fire.domain.PatrolInspectionAttendance">
+        <id column="id" property="id" />
+        <result column="dept_id" property="deptId" />
+        <result column="tenant_id" property="tenantId" />
+        <result column="operator" property="operator" />
+        <result column="operator_id" property="operatorId" />
+        <result column="operate_date" property="operateDate" />
+        <result column="operate_type" property="operateType" />
+        <result column="type_id" property="typeId" />
+        <result column="device_code" property="deviceCode" />
+        <result column="image_path" property="imagePath" />
+        <result column="longitude" property="longitude" />
+        <result column="latitude" property="latitude" />
+        <result column="remarks" property="remarks" />
+        <result column="identification_number" property="identificationNumber" />
+    </resultMap>
+
+</mapper>

+ 15 - 0
service-fire/service-fire-biz/src/main/resources/mapper/fire/PatrolInspectionPersonnelMapper.xml

@@ -12,6 +12,21 @@
         <result column="creator" property="creator" />
         <result column="enable" property="enable" />
         <result column="company_id" property="companyId" />
+        <result column="operate_type" property="operateType" />
+        <result column="document_info" property="documentInfo" />
+        <result column="nation" property="nation" />
+        <result column="edu_level" property="eduLevel" />
+        <result column="register_residence" property="registerResidence" />
+        <result column="residence" property="residence" />
+        <result column="physics_card" property="physicsCard" />
+        <result column="id_card" property="idCard" />
+        <result column="full_name" property="fullName" />
+        <result column="whether_employ" property="whetherEmploy" />
+        <result column="birth_date" property="birthDate" />
+        <result column="sex" property="sex" />
+        <result column="phone_number" property="phoneNumber" />
+        <result column="main_position" property="mainPosition" />
+        <result column="service_content" property="serviceContent" />
     </resultMap>
 
 </mapper>

+ 16 - 0
service-fire/service-fire-biz/src/main/resources/mapper/fire/PatrolInspectionTypeMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.fire.mapper.PatrolInspectionTypeMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.fire.domain.PatrolInspectionType">
+        <id column="id" property="id" />
+        <result column="type_code" property="typeCode" />
+        <result column="type_name" property="typeName" />
+        <result column="tenant_id" property="tenantId" />
+        <result column="dept_id" property="deptId" />
+        <result column="remarks" property="remarks" />
+        <result column="delete_flag" property="deleteFlag" />
+    </resultMap>
+
+</mapper>

+ 5 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpDeviceInfo.java

@@ -127,6 +127,11 @@ public class DmpDeviceInfo implements Serializable {
      */
     private String productCode;
 
+    /**
+     * 设备uuid
+     */
+    private String deviceUuid;
+
     /**
      * 设备状态;1:在线,2:离线
      */

+ 1 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceInfoServiceImpl.java

@@ -87,6 +87,7 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
             dmpDeviceInfo.setCreatedTime(LocalDateTime.now());
             dmpDeviceInfo.setTenantId(SecurityUtils.getTenantId());
             dmpDeviceInfo.setServiceStatus(1);
+            dmpDeviceInfo.setDeviceUuid(UUIDUtils.uuid());
             this.save(dmpDeviceInfo);
 
             DmpDeviceStatus dmpDeviceStatus = new DmpDeviceStatus();

+ 17 - 0
service-meeting/pom.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>usky-modules</artifactId>
+        <groupId>com.usky</groupId>
+        <version>0.0.1</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>service-meeting</artifactId>
+    <packaging>pom</packaging>
+    <modules>
+        <module>service-meeting-biz</module>
+        <module>service-meeting-api</module>
+  </modules>
+
+</project>

+ 29 - 0
service-meeting/service-meeting-api/pom.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>service-meeting</artifactId>
+        <groupId>com.usky</groupId>
+        <version>0.0.1</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>service-meeting-api</artifactId>
+    <!-- SpringCloud Openfeign -->
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.usky</groupId>
+            <artifactId>usky-common-core</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>${project.artifactId}</finalName>
+    </build>
+
+</project>

+ 28 - 0
service-meeting/service-meeting-api/src/main/java/com/usky/demo/RemoteUserService.java

@@ -0,0 +1,28 @@
+package com.usky.demo;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.demo.domain.SysUserVO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+@FeignClient(contextId = "remoteUserService", value = "usky-demo")
+public interface RemoteUserService {
+
+
+
+    @GetMapping("/byUserName")
+    ApiResult<List<SysUserVO>> getByUserName(@RequestParam("userName") String userName);
+
+
+    @PostMapping("/byUserName")
+    ApiResult<List<SysUserVO>> add(@RequestBody SysUserVO sysUserVO);
+
+
+    @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
+    ApiResult<String> upload(@RequestPart(value = "file") MultipartFile file);
+}

+ 105 - 0
service-meeting/service-meeting-api/src/main/java/com/usky/demo/domain/SysUserVO.java

@@ -0,0 +1,105 @@
+package com.usky.demo.domain;
+
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class SysUserVO {
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+    /**
+     * 部门ID
+     */
+    private Long deptId;
+
+    /**
+     * 用户账号
+     */
+    private String userName;
+
+    /**
+     * 用户昵称
+     */
+    private String nickName;
+
+    /**
+     * 用户类型(00系统用户)
+     */
+    private String userType;
+
+    /**
+     * 用户邮箱
+     */
+    private String email;
+
+    /**
+     * 手机号码
+     */
+    private String phonenumber;
+
+    /**
+     * 用户性别(0男 1女 2未知)
+     */
+    private String sex;
+
+    /**
+     * 头像地址
+     */
+    private String avatar;
+
+    /**
+     * 密码
+     */
+    private String password;
+
+    /**
+     * 帐号状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    private String delFlag;
+
+    /**
+     * 最后登录IP
+     */
+    private String loginIp;
+
+    /**
+     * 最后登录时间
+     */
+    private LocalDateTime loginDate;
+
+    /**
+     * 创建者
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新者
+     */
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 48 - 0
service-meeting/service-meeting-api/src/main/java/com/usky/demo/factory/RemoteUserFallbackFactory.java

@@ -0,0 +1,48 @@
+package com.usky.demo.factory;
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.exception.BusinessException;
+import com.usky.demo.RemoteUserService;
+import com.usky.demo.domain.SysUserVO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+
+/**
+ * 用户服务降级处理
+ *
+ * @author ruoyi
+ */
+@Component
+public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserService>
+{
+    private static final Logger log = LoggerFactory.getLogger(RemoteUserFallbackFactory.class);
+
+    @Override
+    public RemoteUserService create(Throwable throwable)
+    {
+        log.error("用户服务调用失败:{}", throwable.getMessage());
+        return new RemoteUserService() {
+            @Override
+            public ApiResult<List<SysUserVO>> getByUserName(String userName) {
+                throw new BusinessException(throwable.getMessage());
+            }
+
+            @Override
+            public ApiResult<List<SysUserVO>> add(SysUserVO sysUserVO) {
+                throw new BusinessException(throwable.getMessage());
+            }
+
+            @Override
+            public ApiResult<String> upload(MultipartFile file) {
+                throw new BusinessException(throwable.getMessage());
+            }
+        };
+    }
+}

+ 137 - 0
service-meeting/service-meeting-biz/pom.xml

@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>service-meeting</artifactId>
+        <groupId>com.usky</groupId>
+        <version>0.0.1</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>service-meeting-biz</artifactId>
+    <dependencies>
+        <dependency>
+            <groupId>com.usky</groupId>
+            <artifactId>common-cloud-starter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <!-- Pagehelper -->
+        <dependency>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper-spring-boot-starter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.usky</groupId>
+            <artifactId>ruoyi-common-swagger</artifactId>
+        </dependency>
+
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.auth0</groupId>
+            <artifactId>java-jwt</artifactId>
+            <version>3.18.3</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.4.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>${hutool.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-aop</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.tencentcloudapi</groupId>
+            <artifactId>tencentcloud-sdk-java</artifactId>
+            <version>3.1.322</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+            <version>2.2.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-devtools</artifactId>
+            <scope>runtime</scope>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>javax.persistence</groupId>
+            <artifactId>javax.persistence-api</artifactId>
+            <version>2.2</version>
+        </dependency>
+        <!--引入JPA依赖-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.2.6.RELEASE</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>com.github.shalousun</groupId>
+                <artifactId>smart-doc-maven-plugin</artifactId>
+                <version>2.1.1</version>
+                <configuration>
+                    <!--指定生成文档的使用的配置文件,配置文件放在自己的项目中-->
+                    <configFile>./src/main/resources/smart-doc.json</configFile>
+                    <!--指定项目名称-->
+                    <projectName>test</projectName>
+                    <!--                    <excludes>-->
+                    <!--                        <exclude>com.bizmatics:product-service-provider</exclude>-->
+                    <!--                        <exclude>cn.afterturn:easypoi-web</exclude>-->
+                    <!--                    </excludes>-->
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 48 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/ApplicationRun.java

@@ -0,0 +1,48 @@
+package com.usky.meeting;
+
+
+import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2;
+import org.mybatis.spring.annotation.MapperScan;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.core.env.Environment;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+/**
+ * 应用启动模块
+ * 
+ */
+
+
+@EnableCustomSwagger2
+//@EnableSwagger2
+@EnableFeignClients(basePackages = "com.usky")
+@MapperScan(value = "com.usky.meeting.mapper")
+@ComponentScan("com.usky")
+@SpringBootApplication
+public class ApplicationRun
+{
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ApplicationRun.class);
+
+    public static void main(String[] args) throws UnknownHostException {
+        ConfigurableApplicationContext application = SpringApplication.run(ApplicationRun.class, args);
+        Environment env = application.getEnvironment();
+        String ip = InetAddress.getLocalHost().getHostAddress();
+        String port = env.getProperty("server.port");
+        String path = env.getProperty("server.servlet.context-path");
+        LOGGER.info("\n----------------------------------------------------------\n\t" +
+                "Application is running! Access URLs:\n\t" +
+                "Local: \t\thttp://localhost:" + port + (null==path?"":path) + "/\n\t" +
+                "External: \thttp://" + ip + ":" + port + (null==path?"":path) + "/\n\t" +
+                "Api: \t\thttp://" + ip + ":" + port + (null==path?"":path) + "/swagger-ui/index.html\n\t" +
+                "----------------------------------------------------------");
+    }
+}

+ 107 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/MybatisGenerator.java

@@ -0,0 +1,107 @@
+package com.usky.meeting;//package com.usky.demo.controller;//package com.usky.dm.controller.web.business;//package com.usky.dm.controller.web;
+
+
+
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.InjectionConfig;
+import com.baomidou.mybatisplus.generator.config.*;
+import com.baomidou.mybatisplus.generator.config.po.TableInfo;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ */
+public class MybatisGenerator {
+    public static void main(String[] args) {
+
+            shell("service-meeting","service-meeting-biz");
+    }
+
+    private static void shell(String parentName,String model) {
+
+        AutoGenerator mpg = new AutoGenerator();
+        //1、全局配置
+        GlobalConfig gc = new GlobalConfig();
+//        File file = new File(model);
+//        String path = file.getAbsolutePath();
+        String projectPath = System.getProperty("user.dir");
+        projectPath+="/"+parentName;
+        projectPath+="/"+model;
+        gc.setOutputDir(projectPath+ "/src/main/java");  //生成路径(一般都是生成在此项目的src/main/java下面)
+        //修改为自己的名字
+        gc.setAuthor("zyj"); //设置作者
+        gc.setOpen(false);
+        gc.setFileOverride(true); //第二次生成会把第一次生成的覆盖掉
+        gc.setServiceName("%sService"); //生成的service接口名字首字母是否为I,这样设置就没有
+        gc.setBaseResultMap(true); //生成resultMap
+        mpg.setGlobalConfig(gc);
+
+        //2、数据源配置
+        //修改数据源
+        DataSourceConfig dsc = new DataSourceConfig();
+        dsc.setUrl("jdbc:mysql://172.16.120.165:3306/usky-cloud?useUnicode=true&serverTimezone=GMT&useSSL=false&characterEncoding=utf8");
+        dsc.setDriverName("com.mysql.jdbc.Driver");
+        dsc.setUsername("usky");
+        dsc.setPassword("Yt#75Usky");
+        mpg.setDataSource(dsc);
+
+        // 3、包配置
+        PackageConfig pc = new PackageConfig();
+        pc.setParent("com.usky.meeting");
+        pc.setController("controller.web");
+        pc.setEntity("domain");
+        pc.setMapper("mapper");
+        pc.setService("service");
+        pc.setServiceImpl("service.impl");
+//        pc.setXml("mapper.demo");
+        //pc.setModuleName("test");
+        mpg.setPackageInfo(pc);
+
+        // 4、策略配置
+        StrategyConfig strategy = new StrategyConfig();
+        strategy.setNaming(NamingStrategy.underline_to_camel);
+        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
+        strategy.setSuperMapperClass("com.usky.common.mybatis.core.CrudMapper");
+        strategy.setSuperServiceClass("com.usky.common.mybatis.core.CrudService");
+        strategy.setSuperServiceImplClass("com.usky.common.mybatis.core.AbstractCrudService");
+        // strategy.setTablePrefix("t_"); // 表名前缀
+        strategy.setEntityLombokModel(true); //使用lombok
+        //修改自己想要生成的表
+        strategy.setInclude("meeting_approve","meeting_approve_user","meeting_attendee","meeting_device","meeting_face","meeting_face_vef_log","meeting_file","meeting_floor","meeting_info","meeting_room");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
+        mpg.setStrategy(strategy);
+
+        // 关闭默认 xml 生成,调整生成 至 根目录
+        //修改对应的模块名称
+        TemplateConfig tc = new TemplateConfig();
+        // 自定义配置
+        InjectionConfig cfg = new InjectionConfig() {
+            @Override
+            public void initMap() {
+                // to do nothing
+            }
+        };
+        //如果模板引擎是 velocity
+        String templatePath = "/templates/mapper.xml.vm";
+        // 自定义输出配置
+        List<FileOutConfig> focList = new ArrayList<>();
+        // 自定义配置会被优先输出
+        String finalProjectPath = projectPath;
+        focList.add(new FileOutConfig(templatePath) {
+            @Override
+            public String outputFile(TableInfo tableInfo) {
+                // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
+                return finalProjectPath + "/src/main/resources/mapper/meeting" + "/"
+                        + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
+            }
+        });
+        cfg.setFileOutConfigList(focList);
+        mpg.setCfg(cfg);
+        tc.setXml(null);
+        mpg.setTemplate(tc);
+        //5、执行
+        mpg.execute();
+    }
+}

+ 10 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/annotation/FaceLog.java

@@ -0,0 +1,10 @@
+package com.usky.meeting.annotation;
+
+import java.lang.annotation.*;
+
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@Target(value = ElementType.METHOD)
+public @interface FaceLog {
+
+}

+ 39 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/annotation/aspect/FaceAspect.java

@@ -0,0 +1,39 @@
+package com.usky.meeting.annotation.aspect;
+
+
+
+import com.usky.meeting.domain.MeetingFaceVefLog;
+import com.usky.meeting.service.MeetingFaceVefLogService;
+import com.usky.meeting.service.vo.FaceResultVO;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.AfterReturning;
+import org.aspectj.lang.annotation.Aspect;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author tanyongpeng
+ * <p>方法执行后,添加日志</p>
+ **/
+@Component
+@Aspect
+public class FaceAspect {
+
+    @Autowired
+    private MeetingFaceVefLogService faceVefLogService;
+
+    @AfterReturning(value = "@annotation(com.usky.meeting.annotation.FaceLog)",returning = "res")
+    public void addLog(JoinPoint joinPoint ,Object res){
+        FaceResultVO result = (FaceResultVO)res;
+        MeetingFaceVefLog faceVefLog = new MeetingFaceVefLog();
+        faceVefLog.setVefTime(LocalDateTime.now());
+        faceVefLog.setVefCode(result.getCode());
+        faceVefLog.setVefMsg(result.getMsg());
+        faceVefLog.setLoginName(result.getName());
+        faceVefLogService.save(faceVefLog);
+    }
+
+
+}

+ 21 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingApproveController.java

@@ -0,0 +1,21 @@
+package com.usky.meeting.controller.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 预约审批表 前端控制器
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/meetingApprove")
+public class MeetingApproveController {
+
+}
+

+ 21 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingApproveUserController.java

@@ -0,0 +1,21 @@
+package com.usky.meeting.controller.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 会议审批用户 前端控制器
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/meetingApproveUser")
+public class MeetingApproveUserController {
+
+}
+

+ 21 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingAttendeeController.java

@@ -0,0 +1,21 @@
+package com.usky.meeting.controller.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 会议参会人员关联表 前端控制器
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/meetingAttendee")
+public class MeetingAttendeeController {
+
+}
+

+ 75 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingDeviceController.java

@@ -0,0 +1,75 @@
+package com.usky.meeting.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.meeting.domain.MeetingDevice;
+import com.usky.meeting.service.MeetingDeviceService;
+import com.usky.meeting.service.vo.MeetingDeviceRequestVO;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 设备表 前端控制器
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/meetingDevice")
+public class MeetingDeviceController {
+
+    @Autowired
+    private MeetingDeviceService meetingDeviceService;
+
+    /**
+     * 设备列表
+     * @param requestVO
+     * @return
+     */
+    @PostMapping("meetingDeviceList")
+    public ApiResult<CommonPage<MeetingDevice>> meetingDeviceList(@RequestBody MeetingDeviceRequestVO requestVO){
+        return ApiResult.success(meetingDeviceService.meetingDeviceList(requestVO));
+    }
+
+    /**
+     * 新增
+     * @param meetingDevice
+     * @return
+     */
+    @PostMapping
+    public ApiResult<Void> add(@RequestBody MeetingDevice meetingDevice){
+        meetingDeviceService.add(meetingDevice);
+        return ApiResult.success();
+    }
+
+    /**
+     * 修改
+     * @param meetingDevice
+     * @return
+     */
+    @PutMapping
+    public ApiResult<Void> edit(@RequestBody MeetingDevice meetingDevice){
+        meetingDeviceService.edit(meetingDevice);
+        return ApiResult.success();
+    }
+
+    /**
+     * 删除
+     * @param deviceId
+     * @return
+     */
+    @DeleteMapping
+    public ApiResult<Void> remove(@RequestParam Long deviceId){
+        meetingDeviceService.remove(deviceId);
+        return ApiResult.success();
+    }
+
+}
+

+ 91 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingFaceController.java

@@ -0,0 +1,91 @@
+package com.usky.meeting.controller.web;
+
+
+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.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.meeting.annotation.FaceLog;
+import com.usky.meeting.domain.MeetingFace;
+import com.usky.meeting.service.MeetingFaceService;
+import com.usky.meeting.service.vo.FaceResultVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import org.springframework.stereotype.Controller;
+
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+@RestController
+@RequestMapping("/meetingFace")
+@Api("人脸验证接口")
+@Slf4j
+public class MeetingFaceController {
+    @Autowired
+    MeetingFaceService faceService;
+
+    @PostMapping("/vef")
+    @ApiOperation(value="人脸验证", notes="根据传入的base64编码和数据的base64编码进行对比")
+    @FaceLog
+    public FaceResultVO faceVef(@RequestBody String imageBase){
+        return faceService.vef(imageBase);
+    }
+
+    @GetMapping("/faceList")
+    @ApiOperation(value = "人脸列表",notes = "查询所有的人脸信息")
+    public ApiResult<CommonPage<MeetingFace>> faceList(
+            @RequestParam Integer current,
+            @RequestParam Integer size,
+            @RequestParam(required = false) String faceName,
+            @RequestParam(required = false) String faceStatus
+    ){
+        IPage<MeetingFace> page = faceService.page(new Page(current, size), new QueryWrapper<MeetingFace>()
+                .like(StrUtil.isNotBlank(faceName),"face_name",faceName)
+                .like(StrUtil.isNotBlank(faceStatus),"face_status",faceStatus));
+        return ApiResult.success(new CommonPage<>(page.getRecords(),page.getTotal(),size,current));
+    }
+
+
+    @GetMapping("/faceDelete/{fid}")
+    @ApiOperation(value = "删除人脸",notes = "根据id进行删除")
+    public FaceResultVO faceDelete(@PathVariable Integer fid){
+        faceService.removeById(fid);
+        return FaceResultVO.success("删除成功");
+    }
+
+    @GetMapping("/info/{fid}")
+    @ApiOperation(value = "查询方法",notes = "根据id查询人脸信息")
+    public FaceResultVO info(@PathVariable Integer fid){
+        return FaceResultVO.success(faceService.getById(fid));
+    }
+
+    @PostMapping("/save")
+    @ApiOperation(value = "添加")
+    public FaceResultVO save(@RequestBody MeetingFace face){
+        face.setVefNum(0);
+        face.setCreateTime(LocalDateTime.now());
+        faceService.save(face);
+        return FaceResultVO.success("添加成功");
+    }
+
+    @PostMapping("/update")
+    @ApiOperation(value = "修改")
+    public FaceResultVO update(@RequestBody MeetingFace face){
+        faceService.updateById(face);
+        return FaceResultVO.success("修改成功");
+    }
+}
+

+ 60 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingFaceVefLogController.java

@@ -0,0 +1,60 @@
+package com.usky.meeting.controller.web;
+
+
+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.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.meeting.domain.MeetingFaceVefLog;
+import com.usky.meeting.service.MeetingFaceVefLogService;
+import com.usky.meeting.service.vo.FaceResultVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+@RestController
+@RequestMapping("/meetingFaceVefLog")
+@Api("人脸日志接口")
+@Slf4j
+public class MeetingFaceVefLogController {
+
+    @Autowired
+    MeetingFaceVefLogService faceVefLogService;
+
+    @GetMapping("/list")
+    @ApiOperation(value = "日志接口",notes = "查询所有验证人脸日志信息")
+    public ApiResult<CommonPage<MeetingFaceVefLog>> faceList(
+            @RequestParam Integer current,
+            @RequestParam Integer size,
+            @RequestParam(required = false) String startTime,
+            @RequestParam(required = false) String endTime,
+            @RequestParam(required = false) String vefCode,
+            @RequestParam(required = false) String loginName
+    ){
+        IPage<MeetingFaceVefLog> page = faceVefLogService.page(new Page(current, size), new QueryWrapper<MeetingFaceVefLog>()
+                .like(StrUtil.isNotBlank(vefCode),"vef_code",vefCode)
+                .like(StrUtil.isNotBlank(loginName),"login_name",loginName)
+                .between(StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime),"vef_time",startTime,endTime)
+                .orderByDesc("vef_time"));
+        return ApiResult.success(new CommonPage<>(page.getRecords(),page.getTotal(),size,current));
+    }
+
+}
+

+ 21 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingFileController.java

@@ -0,0 +1,21 @@
+package com.usky.meeting.controller.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 会议文件 前端控制器
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/meetingFile")
+public class MeetingFileController {
+
+}
+

+ 75 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingFloorController.java

@@ -0,0 +1,75 @@
+package com.usky.meeting.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.meeting.domain.MeetingFloor;
+import com.usky.meeting.service.MeetingFloorService;
+import com.usky.meeting.service.vo.MeetingFloorRequestVO;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.*;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 楼层表 前端控制器
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/meetingFloor")
+public class MeetingFloorController {
+    @Autowired
+    private MeetingFloorService meetingFloorService;
+
+    /**
+     * 楼层列表
+     * @param requestVO
+     * @return
+     */
+    @PostMapping("meetingFloorList")
+    public ApiResult<CommonPage<MeetingFloor>> meetingFloorList(@RequestBody MeetingFloorRequestVO requestVO){
+        return ApiResult.success(meetingFloorService.meetingFloorList(requestVO));
+    }
+
+    /**
+     * 新增
+     * @param meetingFloor
+     * @return
+     */
+    @PostMapping
+    public ApiResult<Void> add(@RequestBody MeetingFloor meetingFloor){
+        meetingFloorService.add(meetingFloor);
+        return ApiResult.success();
+    }
+
+    /**
+     * 修改
+     * @param meetingFloor
+     * @return
+     */
+    @PutMapping
+    public ApiResult<Void> edit(@RequestBody MeetingFloor meetingFloor){
+        meetingFloorService.edit(meetingFloor);
+        return  ApiResult.success();
+    }
+
+    /**
+     * 删除
+     * @param floorId
+     * @return
+     */
+    @DeleteMapping
+    public ApiResult<Void> remove(@RequestParam(value = "floorId") Long floorId){
+        meetingFloorService.remove(floorId);
+        return ApiResult.success();
+    }
+
+}
+

+ 21 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingInfoController.java

@@ -0,0 +1,21 @@
+package com.usky.meeting.controller.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 会议表(预约成功) 前端控制器
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+@Controller
+@RequestMapping("/meetingInfo")
+public class MeetingInfoController {
+
+}
+

+ 53 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingRoomController.java

@@ -0,0 +1,53 @@
+package com.usky.meeting.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.meeting.domain.MeetingRoom;
+import com.usky.meeting.service.MeetingRoomService;
+import com.usky.meeting.service.vo.MeetingRoomRequestVO;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 会议室表 前端控制器
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/meetingRoom")
+public class MeetingRoomController {
+    @Autowired
+    private MeetingRoomService meetingRoomService;
+
+    /**
+     * 首页统计
+     * @param year
+     * @return
+     */
+    @GetMapping("FirstPageStatistic")
+    public ApiResult<Map<String,Object>> FirstPageStatistic(@RequestParam(value = "year") String year){
+        return ApiResult.success(meetingRoomService.FirstPageStatistic(year));
+
+    }
+
+    /**
+     * 会议室列表
+     * @param requestVO
+     * @return
+     */
+    @PostMapping("dmMeetingRoomList")
+    public ApiResult<CommonPage<MeetingRoom>> dmMeetingRoomList(@RequestBody MeetingRoomRequestVO requestVO){
+        return ApiResult.success(meetingRoomService.dmMeetingRoomList(requestVO));
+
+    }
+
+}
+

+ 65 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingApprove.java

@@ -0,0 +1,65 @@
+package com.usky.meeting.domain;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 预约审批表
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class MeetingApprove implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private String id;
+
+    /**
+     * 会议室预约id
+     */
+    private Long meetingId;
+
+    /**
+     * 申请用户id
+     */
+    private Long initiatorId;
+
+    /**
+     * 审批人
+     */
+    private Long approveUserId;
+
+    /**
+     * 审批结果
+     */
+    private String approveResult;
+
+    /**
+     * 审批建议
+     */
+    private String approveSuggest;
+
+    /**
+     * 审批时间
+     */
+    private LocalDateTime approveDate;
+
+    /**
+     * 组织机构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 47 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingApproveUser.java

@@ -0,0 +1,47 @@
+package com.usky.meeting.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 会议审批用户
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class MeetingApproveUser implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 会议id
+     */
+    private Long meetingId;
+
+    /**
+     * 审批用户id
+     */
+    private String dmUserId;
+
+    /**
+     * 组织机构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 73 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingAttendee.java

@@ -0,0 +1,73 @@
+package com.usky.meeting.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 会议参会人员关联表
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class MeetingAttendee implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 会议id
+     */
+    private Long meetingId;
+
+    /**
+     * 参与人id
+     */
+    private String userId;
+
+    /**
+     * 是否签到(0-否 1-是)
+     */
+    private Long isSign;
+
+    /**
+     * 签到时间
+     */
+    private LocalDateTime signDate;
+
+    /**
+     * 是否签退(0-否 1-是)
+     */
+    private Long isSignOut;
+
+    /**
+     * 签退时间
+     */
+    private LocalDateTime signOutDate;
+
+    /**
+     * 签到方式(0.人工签到 1.人脸签到)
+     */
+    private Long signType;
+
+    /**
+     * 组织机构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 110 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingDevice.java

@@ -0,0 +1,110 @@
+package com.usky.meeting.domain;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+
+/**
+ * <p>
+ * 设备表
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+@Data
+@Entity
+@TableName("meeting_device")
+@EqualsAndHashCode(callSuper = false)
+public class MeetingDevice implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @TableId
+    private Long deviceId;
+
+    /**
+     * 设备名称
+     */
+    private String deviceName;
+
+    /**
+     * 文件存储id(tool_local_storage)
+     */
+    private Long storageId;
+
+    /**
+     * 设备图片
+     */
+    private String imgPath;
+
+    /**
+     * 设备铭牌
+     */
+    private String nameplate;
+
+    /**
+     * 所属会议室
+     */
+    private String roomId;
+
+    /**
+     * 登记时间
+     */
+    private LocalDateTime registerDate;
+
+    /**
+     * 维护人
+     */
+    private String maintainer;
+
+    /**
+     * 联系方式
+     */
+    private String contacts;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建者
+     */
+    private String createBy;
+
+    /**
+     * 更新者
+     */
+    private String updateBy;
+
+    /**
+     * 创建日期
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 组织机构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 86 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingFace.java

@@ -0,0 +1,86 @@
+package com.usky.meeting.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class MeetingFace implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "fid", type = IdType.AUTO)
+    private Integer fid;
+
+    /**
+     * 图片数据 base_64编码
+     */
+    private String faceBase;
+
+    /**
+     * 插入时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 验证次数
+     */
+    private Integer vefNum;
+
+    /**
+     * 人脸名称
+     */
+    private String faceName;
+
+    /**
+     * 人脸备注
+     */
+    private String remark;
+
+    /**
+     * 人脸是否可用,(0==可用,1,不可用)
+     */
+    private Integer faceStatus;
+
+    /**
+     * 扩展字段1(user_id)
+     */
+    private String updateExtend1;
+
+    /**
+     * 扩展字段2
+     */
+    private String updateExtend2;
+
+    /**
+     * 扩展字段3
+     */
+    private String updateExtend3;
+
+    /**
+     * 组织机构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 61 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingFaceVefLog.java

@@ -0,0 +1,61 @@
+package com.usky.meeting.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class MeetingFaceVefLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "lid", type = IdType.AUTO)
+    private Integer lid;
+
+    /**
+     * 验证时间
+     */
+    private LocalDateTime vefTime;
+
+    /**
+     * 返回code
+     */
+    private Integer vefCode;
+
+    /**
+     * 返回的消息
+     */
+    private String vefMsg;
+
+    /**
+     * 验证人
+     */
+    private String loginName;
+
+    /**
+     * 组织机构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 68 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingFile.java

@@ -0,0 +1,68 @@
+package com.usky.meeting.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 会议文件
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class MeetingFile implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "file_id", type = IdType.AUTO)
+    private Long fileId;
+
+    /**
+     * 会议id
+     */
+    private Long meetingId;
+
+    /**
+     * 文件存储id(tool_local_storage)
+     */
+    private Long storageId;
+
+    /**
+     * 文件存储地址
+     */
+    private String fileUrl;
+
+    /**
+     * 文件类型(0-会议所需文件,1-会议记录文件,2-高层会议文件)
+     */
+    private Long fileType;
+
+    /**
+     * 上传用户(dm_user)
+     */
+    private String uploadUser;
+
+    /**
+     * 上传日期
+     */
+    private LocalDateTime uploadTime;
+
+    /**
+     * 组织机构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 85 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingFloor.java

@@ -0,0 +1,85 @@
+package com.usky.meeting.domain;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+
+/**
+ * <p>
+ * 楼层表
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+@Data
+@Entity
+@TableName("meeting_floor")
+@EqualsAndHashCode(callSuper = false)
+public class MeetingFloor implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @TableId
+    private Long floorId;
+
+    /**
+     * 楼层名称
+     */
+    private String floorName;
+
+    /**
+     * 楼层负责人(person in charge)
+     */
+    private String floorPic;
+
+    /**
+     * 联系方式
+     */
+    private String contacts;
+
+    /**
+     * 排序
+     */
+    private Integer sortIndex;
+
+    /**
+     * 创建者
+     */
+    private String createBy;
+
+    /**
+     * 更新者
+     */
+    private String updateBy;
+
+    /**
+     * 创建日期
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 组织机构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 175 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingInfo.java

@@ -0,0 +1,175 @@
+package com.usky.meeting.domain;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+
+/**
+ * <p>
+ * 会议表(预约成功)
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+@Entity
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class MeetingInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    private Long meetingId;
+
+    /**
+     * 会议议题
+     */
+    private String meetingName;
+
+    /**
+     * 会议室id
+     */
+    private Long roomId;
+
+    /**
+     * 会议室名称
+     */
+    private String roomName;
+
+    /**
+     * 会议介绍
+     */
+    private String meetingDescribe;
+
+    /**
+     * 会议类型(如研讨会、部门会议等)
+     */
+    private String meetingType;
+
+    /**
+     * 参与部门
+     */
+    private String deptId;
+
+    /**
+     * 发起人id
+     */
+    private String initiatorId;
+
+    /**
+     * 开始时间
+     */
+    private LocalDateTime startDate;
+
+    /**
+     * 结束时间
+     */
+    private LocalDateTime endDate;
+
+    /**
+     * 审批状态(0-审批中 1-审批通过 2-审批驳回)
+     */
+    private Long approveStatus;
+
+    /**
+     * 审批者意见
+     */
+    private String approveSuggest;
+
+    /**
+     * 实际签到人数
+     */
+    private Integer actualCount;
+
+    /**
+     * 应到人数/计划人数
+     */
+    private Integer planCount;
+
+    /**
+     * 是否延期(会议是否需要延期30分钟)
+     */
+    private Long isDelay;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 会议状态(未开始/进行中/已结束)
+     */
+    private Long meetingStatus;
+
+    /**
+     * 创建者
+     */
+    private String createBy;
+
+    /**
+     * 更新者
+     */
+    private String updateBy;
+
+    /**
+     * 创建日期
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * activiti任务id
+     */
+    private String taskId;
+
+    /**
+     * 流程实例id
+     */
+    private String procInstId;
+
+    /**
+     * 是否取消
+     */
+    private Long isCancel;
+
+    /**
+     * 通知类型(APP/Email/MSG短信)
+     */
+    private String sendType;
+
+    /**
+     * 会议性质(1-高层会议/0-普通会议)
+     */
+    private String meetingProp;
+
+    /**
+     * 是否需要审批(0-否 1-是)
+     */
+    private Long isApprove;
+
+    /**
+     * 高层会议-指定用户
+     */
+    private String gcAssignUser;
+
+    /**
+     * 会议模式(0-线下会议 1-线上会议 2-线下同步线上会议)
+     */
+    private String meetingMode;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 150 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingRoom.java

@@ -0,0 +1,150 @@
+package com.usky.meeting.domain;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+
+/**
+ * <p>
+ * 会议室表
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+@Entity
+@Data
+@TableName("meeting_room")
+@EqualsAndHashCode(callSuper = false)
+public class MeetingRoom implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    private Long roomId;
+
+    /**
+     * 会议室名称
+     */
+    private String roomName;
+
+    /**
+     * 所在楼层
+     */
+    private String floorId;
+
+    /**
+     * 会议室简介
+     */
+    private String description;
+
+    /**
+     * 文件存储id(tool_local_storage)
+     */
+    private String storageId;
+
+    /**
+     * 会议室图片
+     */
+    private String imgPath;
+
+    /**
+     * 容纳人数
+     */
+    private Integer capacity;
+
+    /**
+     * 会议室所在位置
+     */
+    private String position;
+
+    /**
+     * 维护人
+     */
+    private String maintainer;
+
+    /**
+     * 联系方式
+     */
+    private String contacts;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 会议室使用状态(0-未使用 1-使用中)
+     */
+    private Long roomStatus;
+
+    /**
+     * 会议室预约状态(0-未预约 1-已预约)
+     */
+    private Long reserveStatus;
+
+    /**
+     * 会议室状态(00.启用 01.停用)
+     */
+    private String status;
+
+    /**
+     * 会议室环境
+     */
+    private String environmental;
+
+    /**
+     * 最近一次使用时间(正在使用的会议室,在预约时间外延后一小时开发预约)
+     */
+    private LocalDateTime lastUseTime;
+
+    /**
+     * 创建者
+     */
+    private String createBy;
+
+    /**
+     * 更新者
+     */
+    private String updateBy;
+
+    /**
+     * 创建日期
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 是否需要审批(0-否 1-是)
+     */
+    private Long isApprove;
+
+    /**
+     * 楼层信息
+     */
+    @TableField(exist = false)
+    private MeetingFloor meetingFloor;
+
+    /**
+     * 组织机构ID
+     */
+    private Integer deptId;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingApproveMapper.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.mapper;
+
+import com.usky.meeting.domain.MeetingApprove;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 预约审批表 Mapper 接口
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+public interface MeetingApproveMapper extends CrudMapper<MeetingApprove> {
+
+}

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingApproveUserMapper.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.mapper;
+
+import com.usky.meeting.domain.MeetingApproveUser;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 会议审批用户 Mapper 接口
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+public interface MeetingApproveUserMapper extends CrudMapper<MeetingApproveUser> {
+
+}

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingAttendeeMapper.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.mapper;
+
+import com.usky.meeting.domain.MeetingAttendee;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 会议参会人员关联表 Mapper 接口
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+public interface MeetingAttendeeMapper extends CrudMapper<MeetingAttendee> {
+
+}

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingDeviceMapper.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.mapper;
+
+import com.usky.meeting.domain.MeetingDevice;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 设备表 Mapper 接口
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+public interface MeetingDeviceMapper extends CrudMapper<MeetingDevice> {
+
+}

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingFaceMapper.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.mapper;
+
+import com.usky.meeting.domain.MeetingFace;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+public interface MeetingFaceMapper extends CrudMapper<MeetingFace> {
+
+}

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingFaceVefLogMapper.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.mapper;
+
+import com.usky.meeting.domain.MeetingFaceVefLog;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+public interface MeetingFaceVefLogMapper extends CrudMapper<MeetingFaceVefLog> {
+
+}

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingFileMapper.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.mapper;
+
+import com.usky.meeting.domain.MeetingFile;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 会议文件 Mapper 接口
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+public interface MeetingFileMapper extends CrudMapper<MeetingFile> {
+
+}

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingFloorMapper.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.mapper;
+
+import com.usky.meeting.domain.MeetingFloor;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 楼层表 Mapper 接口
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+public interface MeetingFloorMapper extends CrudMapper<MeetingFloor> {
+
+}

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingInfoMapper.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.mapper;
+
+import com.usky.meeting.domain.MeetingInfo;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 会议表(预约成功) Mapper 接口
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+public interface MeetingInfoMapper extends CrudMapper<MeetingInfo> {
+
+}

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingRoomMapper.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.mapper;
+
+import com.usky.meeting.domain.MeetingRoom;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 会议室表 Mapper 接口
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+public interface MeetingRoomMapper extends CrudMapper<MeetingRoom> {
+
+}

+ 46 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/repository/MeetingApproveRepository.java

@@ -0,0 +1,46 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package com.usky.meeting.repository;
+
+/**
+* @website https://el-admin.vip
+* @author shiguangji
+* @date 2021-03-17
+**/
+//public interface DmMeetingApproveRepository extends JpaRepository<DmMeetingApprove, String>, JpaSpecificationExecutor<DmMeetingApprove> {
+//    @Query(value = "SELECT a.* FROM dm_meeting_approve a WHERE a.approve_result = 0 " +
+//            "and if(:meetingId != '',a.meeting_id = :meetingId,1=1)",nativeQuery = true)
+//    List<DmMeetingApprove> findApprovingByMeetingId(@Param("meetingId") String meetingId);
+//
+//    @Modifying
+//    @Query(value = "update dm_meeting_approve set approve_result = ?1, " +
+//            "approve_suggest = ?2, approve_user_id = ?3, approve_date=now() where id = ?4",nativeQuery = true)
+//    void updateApproveInfo(Long result,String suggest,Long userId,String id);
+//
+//    @Modifying
+//    @Query(value = "delete from dm_meeting_approve where meeting_id = ?1",nativeQuery = true)
+//    void delByMeetingId(Long meetingId);
+//
+//    @Query(value = "SELECT a.* FROM dm_user a inner join dm_meeting_approve_user b on a.id = b.dm_user_id WHERE b.meeting_id = :roomId ",nativeQuery = true)
+//    Map findApproverByRoomId(@Param("roomId") String roomId);
+//
+//
+//    @Modifying
+//    @Query(value = "update dm_meeting set approve_status = :approveStatus , approve_suggest = :approveSuggest where task_id= :taskId",nativeQuery = true)
+//    void updateAppriveStatusByTaskId(@Param("taskId") String taskId,@Param("approveStatus") Long approveStatus,@Param("approveSuggest") String approveSuggest);
+//
+//    //findApproverByRoomId
+//}

+ 12 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/repository/MeetingApproveUserRepository.java

@@ -0,0 +1,12 @@
+package com.usky.meeting.repository;
+
+//public interface DmMeetingApproveUserRepository extends JpaRepository<DmMeetingApproveUser, String>, JpaSpecificationExecutor<DmMeetingApproveUser> {
+//
+//    @Modifying
+//    @Query(value = "update  dm_meeting_approve_user set dm_user_id = :userId where meeting_id = :meetingRoomId",nativeQuery = true)
+//    void updateRoomApproveUser(@Param("meetingRoomId") Long meetingRoomId, @Param("userId") String userId);
+//
+//    @Modifying
+//    @Query(value = "insert into dm_meeting_approve_user (meeting_id,dm_user_id) values (:meetingRoomId,:userId)",nativeQuery = true)
+//    void insertRoomApproveUser(@Param("meetingRoomId") Long meetingRoomId, @Param("userId") String userId);
+//}

+ 14 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/repository/MeetingAttendeeRepository.java

@@ -0,0 +1,14 @@
+
+package com.usky.meeting.repository;
+
+/**
+* @website https://el-admin.vip
+* @author shiguangji
+* @date 2021-03-17
+**/
+//public interface DmMeetingAttendeeRepository extends JpaRepository<DmMeetingAttendee, String>, JpaSpecificationExecutor<DmMeetingAttendee> {
+//    @Query(value = "SELECT a.* FROM dm_meeting_attendee a WHERE " +
+//            "if(:meetingId != '',a.meeting_id = :meetingId,1=1)" + "and if(:userId != '',a.user_id = :userId,1=1)",nativeQuery = true)
+//    List<DmMeetingAttendee> findMeetingAttendeeList(@Param("meetingId") Long meetingId, @Param("userId") String userId);
+//
+//}

+ 41 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/repository/MeetingDeviceRepository.java

@@ -0,0 +1,41 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package com.usky.meeting.repository;
+
+/**
+* @website https://el-admin.vip
+* @author shiguangji
+* @date 2021-03-12
+**/
+//public interface DmDeviceRepository extends JpaRepository<DmDevice, String>, JpaSpecificationExecutor<DmDevice> {
+//
+//    @Modifying
+//    @Query(value = "select device_id as deviceId," +
+//            "device_name as deviceName," +
+//            "storage_id as storageId," +
+//            "img_path as imgPath," +
+//            "nameplate as nameplate," +
+//            "room_id as roomId," +
+//            "register_date as registerDate," +
+//            "maintainer as maintainer," +
+//            "contacts as contacts," +
+//            "remark as remark," +
+//            "create_by as creatBy," +
+//            "update_by as updateBy " +
+//            "from dm_device where room_id = :roomId",nativeQuery = true)
+//    List<Map<String,Object>> getDeviceListByRoomId(@Param("roomId") Long roomId);
+//
+//}

+ 29 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/repository/MeetingFileRepository.java

@@ -0,0 +1,29 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package com.usky.meeting.repository;
+
+/**
+* @website https://el-admin.vip
+* @author shiguangji
+* @date 2021-04-16
+**/
+//public interface DmMeetingFileRepository extends JpaRepository<DmMeetingFile, Long>, JpaSpecificationExecutor<DmMeetingFile> {
+//
+//    @Modifying
+//    @Query(value = "select file_id from dm_meeting_file where meeting_id = :meetingId",nativeQuery = true)
+//    List<Long> getFileIdByMeetingId(@Param("meetingId") Long meetingId);
+//
+//}

+ 503 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/repository/MeetingInfoRepository.java

@@ -0,0 +1,503 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package com.usky.meeting.repository;
+
+
+import com.usky.meeting.domain.MeetingInfo;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+
+import javax.transaction.Transactional;
+import java.math.BigInteger;
+import java.util.List;
+import java.util.Map;
+
+/**
+* @website https://el-admin.vip
+* @author shiguangji
+* @date 2021-03-15
+**/
+public interface MeetingInfoRepository extends JpaRepository<MeetingInfo, Long>, JpaSpecificationExecutor<MeetingInfo> {
+//
+//    @Query(value =
+//            "SELECT " +
+//                    " CONCAT(m.meeting_id,'') as meetingId," +
+//                    " m.meeting_name as meetingName," +
+//                    " r.room_name as roomName," +
+//                    " d.`name` as deptName," +
+//                    " m.meeting_describe as meetingDescribe," +
+//                    " m.meeting_type as meetingType," +
+//                    " u.`name` as initiatorUserName," +
+//                    " m.approve_status as approveStatus," +
+//                    " m.approve_suggest as approveSuggest," +
+//                    " m.is_cancel as isCancel," +
+//                    " date_format(a.approve_date,'%Y-%m-%d %H:%i:%s') as approveDate," +
+//                    " act.task_id as taskId" +
+//                    " FROM dm_meeting as m" +
+//                    " left join dm_meeting_room as r on r.room_id = m.room_id" +
+//                    " left join sys_dept as d on d.dept_id = m.dept_id" +
+//                    " left join (select meeting_id,approve_result,MAX(approve_date) as approve_date from dm_meeting_approve GROUP BY meeting_id,approve_result) as a on m.meeting_id = a.meeting_id and a.approve_result = m.approve_status " +
+//                    " left join dm_user as u on u.id = m.initiator_id" +
+//                    " left join (" +
+//                        " select max(CONVERT(t.ID_,SIGNED)) as task_id,t.ASSIGNEE_ as user_id,temp.meeting_id" +
+//                        " from act_hi_taskinst as t" +
+//                        " left join (" +
+//                            " select PROC_INST_ID_,MAX(LONG_) as meeting_id" +
+//                            " from act_hi_varinst" +
+//                            " WHERE NAME_ = 'op_id'" +
+//                            " GROUP BY PROC_INST_ID_" +
+//                        " ) as temp on temp.PROC_INST_ID_ = t.PROC_INST_ID_" +
+//                        " group by t.ASSIGNEE_,temp.meeting_id"+
+//                    " ) as act on act.meeting_id = m.meeting_id" +
+//                    " WHERE 1=1" +
+//                    " and act.user_id = :dmUserId" +
+//                    " and if(:meetingName != '',m.meeting_name like :meetingName,1=1)"+
+//                    " and if(:roomName != '',r.room_name like :roomName,1=1)"+
+//                    " and if(:deptId != '',m.dept_id = :deptId,1=1)"+
+//                    " and if(:initUserName != '',u.`name` like :initUserName,1=1)"+
+//                    " and if(:approveStatus != '',m.approve_status like :approveStatus,1=1)"+
+//                    " and if(:startDate != '',a.approve_date >= :startDate,1=1)"+
+//                    " and if(:endDate != '',a.approve_date <= :endDate,1=1)",
+//            countQuery = "SELECT count(1) " +
+//                    " FROM dm_meeting as m" +
+//                    " left join dm_meeting_approve as a on m.meeting_id = a.meeting_id and a.approve_result = 0 " +
+//                    " left join dm_user as u on u.id = m.initiator_id" +
+//                    " left join (" +
+//                        " select max(t.ID_) as task_id,t.ASSIGNEE_ as user_id,temp.meeting_id" +
+//                        " from act_hi_taskinst as t" +
+//                        " left join (" +
+//                            " select PROC_INST_ID_,MAX(LONG_) as meeting_id" +
+//                            " from act_hi_varinst" +
+//                            " WHERE NAME_ = 'op_id'" +
+//                            " GROUP BY PROC_INST_ID_" +
+//                        " ) as temp on temp.PROC_INST_ID_ = t.PROC_INST_ID_" +
+//                        " group by t.ASSIGNEE_,temp.meeting_id"+
+//                    " ) as act on act.meeting_id = m.meeting_id" +
+//                    " WHERE 1=1" +
+//                    " and if(:dmUserId != null,act.user_id = :dmUserId,act.user_id = 'NULL')" +
+//                    " and if(:meetingName != '',m.meeting_name like :meetingName,1=1)"+
+//                    " and if(:roomName != '',r.room_name like :roomName,1=1)"+
+//                    " and if(:deptId != '',m.dept_id = :deptId,1=1)"+
+//                    " and if(:initUserName != '',u.`name` like :initUserName,1=1)"+
+//                    " and if(:approveStatus != '',m.approve_status like :approveStatus,1=1)"+
+//                    " and if(:startDate != '',a.approve_date >= :startDate,1=1)"+
+//                    " and if(:endDate != '',a.approve_date <= :endDate,1=1)",
+//            nativeQuery = true)
+//    Page<Map<String,String>> findApproveDmMeetingList(@Param("dmUserId") String dmUserId,
+//                                                      @Param("meetingName") String meetingName,
+//                                                      @Param("roomName") String roomName,
+//                                                      @Param("deptId") String deptId,
+//                                                      @Param("initUserName") String initUserName,
+//                                                      @Param("approveStatus") Long approveStatus,
+//                                                      @Param("startDate") String startDate,
+//                                                      @Param("endDate") String endDate,
+//                                                      Pageable pageable);
+//
+//
+//    /**
+//     * 判断会议室是否被使用
+//     * @param meetingId 会议
+//     * @param searchDate 时间
+//     * @param roomId 预约的会议室
+//     * @return
+//     */
+//    @Query(value = "select" +
+//            " concat(a.meeting_id,'') as meetingId," +
+//            " a.meeting_name as meetingName," +
+//            " a.meeting_type as meetingType,"+
+//            " a.meeting_prop as meetingProp,"+
+//            " d.`name` as deptName," +
+//            " u.`name` as initiatorUserName," +
+//            " a.meeting_describe as meetingDescribe," +
+//            " a.plan_count as planCount," +
+//            " a.actual_count as actualCount," +
+//            " date_format(a.start_date,'%Y-%m-%d %H:%i:%s') as startDate," +
+//            " date_format(a.end_date,'%Y-%m-%d %H:%i:%s') as endDate," +
+//            " a.remark"+
+//            " from dm_meeting as a" +
+//            " left join sys_dept as d on d.dept_id = a.dept_id" +
+//            " left join dm_user as u on u.id = a.initiator_id" +
+//            " where if(:meetingId != '',a.meeting_id != :meetingId,1=1)" +
+//            " and if(:roomId != '',a.room_id = :roomId,1=1)" +
+//            " and :searchDate between a.start_date and a.end_date" +
+//            " and a.is_cancel = 0",
+//            nativeQuery = true)
+//    List<Map<String,String>> checkDmRoomUsedMeeting(@Param("meetingId")Long meetingId,
+//                                           @Param("searchDate") String searchDate,
+//                                           @Param("roomId") Long roomId);
+//
+//
+//
+//    /**
+//     * 判断预约时间是否与别的预约单冲突
+//     * @param roomId
+//     * @return
+//     */
+//    @Query(value = "select" +
+//            " a.meeting_id as meetingId," +
+//            " a.meeting_name as meetingName," +
+//            " a.room_id as roomId," +
+//            " a.meeting_describe as meetingDescribe," +
+//            " date_format(a.start_date,'%Y-%m-%d %H:%i:%s') as startDate," +
+//            " date_format(a.end_date,'%Y-%m-%d %H:%i:%s') as endDate" +
+//            " from dm_meeting as a" +
+//            " where a.room_id = :roomId" +
+//            " and ((start_date <= :startDate and end_date >= :startDate and end_date != :startDate) or (start_date <= :endDate and end_date >= :endDate and start_date != :endDate))" +
+//            " and if(:meetingId != '',a.meeting_id != :meetingId,1=1)" +
+//            " and a.is_cancel = 0 and a.meeting_status != 2 and a.approve_status != 2",nativeQuery = true)
+//    List<Map<String,String>> checkDmRoomMeetingDate(@Param("roomId") Long roomId,
+//                                           /*@Param("startDate") Timestamp startDate,
+//                                           @Param("endDate") Timestamp endDate,*/
+//                                           @Param("startDate") String startDate,
+//                                           @Param("endDate") String endDate,
+//                                           @Param("meetingId") Long meetingId);
+//
+//
+//    /**
+//     * 议设备
+//     * @param meetingId
+//     * @param deviceId
+//     */
+//    @Modifying
+//    @Query(value = "insert into dm_meeting_device (meeting_id,device_id) values (:meetingId,:deviceId)",nativeQuery = true)
+//    void in添加会sertMeetingDevice(@Param("meetingId") Long meetingId, @Param("deviceId") Long deviceId);
+//
+//    /**
+//     * 删除会议设备
+//     * @param meetingId
+//     */
+//    @Modifying
+//    @Query(value = "delete from dm_meeting_device where meeting_id = :meetingId",nativeQuery = true)
+//    void delMeetingDevice(@Param("meetingId") Long meetingId);
+//
+//    /**
+//     * 查询会议设备名称
+//     * @param meetingId
+//     */
+//    @Query(value = "select GROUP_CONCAT(d.device_id) as deviceIds,GROUP_CONCAT(d.device_name) as deviceNames from dm_meeting_device as a " +
+//            " left join dm_device as d on d.device_id = a.device_id " +
+//            " where a.meeting_id = :meetingId group by a.meeting_id",nativeQuery = true)
+//    Map<String,Object> selectMeetingDeviceNames(@Param("meetingId") Long meetingId);
+//
+//    /**
+//     * 添加会议审批人
+//     * @param meetingId
+//     * @param userId
+//     */
+///*    @Modifying
+//    @Query(value = "insert into dm_meeting_approve_user (meeting_id,dm_user_id) values (:meetingId,:userId)",nativeQuery = true)
+//    void insertMeetingApproveUser(@Param("meetingId") Long meetingId, @Param("userId") Long userId);*/
+//
+//    /**
+//     * 删除会议审批人
+//     * @param meetingId
+//     */
+//    @Modifying
+//    @Query(value = "delete from dm_meeting_approve_user where meeting_id = :meetingId",nativeQuery = true)
+//    void delMeetingApproveUser(@Param("meetingId") Long meetingId);
+//
+//    /**
+//     * 查询会议审批人名称
+//     * @param meetingId
+//     */
+//    @Query(value = "select GROUP_CONCAT(u.`id`) as userIds,GROUP_CONCAT(u.`name`) as userNames from dm_meeting_approve_user as a " +
+//            " left join dm_user as u on a.dm_user_id = u.`id` " +
+//            " where a.meeting_id = :meetingId group by a.meeting_id",nativeQuery = true)
+//    Map<String,Object> selectMeetingApproveUserNames(@Param("meetingId") Long meetingId);
+//
+//    /**
+//     * 添加高层会议权限用户
+//     * @param meetingId
+//     * @param userId
+//     */
+//    @Modifying
+//    @Query(value = "insert into dm_meeting_gc_user (meeting_id,dm_user_id) values (:meetingId,:userId)",nativeQuery = true)
+//    void insertMeetingGcUser(@Param("meetingId") Long meetingId, @Param("userId") Long userId);
+//
+//    /**
+//     * 删除高层会议权限用户
+//     * @param meetingId
+//     */
+//    @Modifying
+//    @Query(value = "delete from dm_meeting_gc_user where meeting_id = :meetingId",nativeQuery = true)
+//    void delMeetingGcUser(@Param("meetingId") Long meetingId);
+//
+//    /**
+//     * 删除会与参与人
+//     * @param meetingId
+//     */
+//    @Modifying
+//    @Query(value = "delete from dm_meeting_attendee where meeting_id = :meetingId",nativeQuery = true)
+//    void delMeetingAttendee(@Param("meetingId") Long meetingId);
+//
+//    /**
+//     * 查询高层会议名称
+//     * @param meetingId
+//     */
+//    @Query(value = "select GROUP_CONCAT(u.`id`) as userIds,GROUP_CONCAT(u.`name`) as userNames from dm_meeting_gc_user as a " +
+//            " left join dm_user as u on a.dm_user_id = u.`id` " +
+//            " where a.meeting_id = :meetingId group by a.meeting_id",nativeQuery = true)
+//    Map<String,Object> selectMeetingGcUserNames(@Param("meetingId") Long meetingId);
+//
+//    /**
+//     * 查询参会人员名称
+//     * @param meetingId
+//     */
+//    @Query(value = "select GROUP_CONCAT(u.`id`) as userIds,GROUP_CONCAT(u.`name`) as userNames" +
+//            " from dm_meeting_attendee as a " +
+//            " left join dm_user as u on a.user_id = u.`id` " +
+//            " where a.meeting_id = :meetingId group by a.meeting_id",nativeQuery = true)
+//    Map<String,Object> selectMeetingAttendeeUserNames(@Param("meetingId") Long meetingId);
+//
+//
+//    /**
+//     * 查询指定会议室三天内的预约
+//     * @param roomId
+//     * @return
+//     */
+//    @Query(value = "select " +
+//            " CONCAT(m.meeting_id,'') as meetingId," +
+//            " m.meeting_name as meetingName," +
+//            " d.`name` as deptName," +
+//            " m.meeting_describe as meetingDescribe," +
+//            " m.meeting_type as meetingType," +
+//            " u.`name` as initiatorUserName," +
+//            " date_format(m.start_date,'%Y-%m-%d %H:%i:%s') as startDate," +
+//            " date_format(m.end_date,'%Y-%m-%d %H:%i:%s') as endDate," +
+//            " m.remark as remark" +
+//            " from dm_meeting as m " +
+//            " left join sys_dept as d on d.dept_id = m.dept_id" +
+//            " left join dm_user as u on u.id = m.initiator_id" +
+//            " where 1=1" +
+//            " and m.room_id = :roomID" +
+//            " and m.is_cancel = 0" +
+//            " and m.start_date BETWEEN DATE_FORMAT(NOW(),'%Y-%m-%d') AND DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 3 DAY),'%Y-%m-%d')",nativeQuery = true)
+//    List<Map<String,String>> selectRoomThreeDaysReserveList(@Param("roomID") Long roomId);
+//
+//    /**
+//     * 查询会议室当天所有的会议预约记录
+//     * @param roomId
+//     * @return
+//     */
+//    @Query(value = "select * from dm_meeting where TO_DAYS(start_date) = TO_DAYS(NOW()) and room_id = :roomId",nativeQuery = true)
+//    List<DmMeeting> queryAllMeetingByRoomId(@Param("roomId") Long roomId);
+//
+//
+//    /**
+//     * 更新会议状态为开始状态,同时更新关联的会议室状态为正在使用,最后一次使用时间为当前会议的结束时间
+//     * @param updateDate 时间点
+//     */
+//    @Modifying
+//    @Transactional
+//    @Query(value =
+//            " update" +
+//                " dm_meeting as m," +
+//                " dm_meeting_room as r" +
+//            " set " +
+//                " m.meeting_status = 1," +
+//                " r.room_status = 1," +
+//                " r.last_use_time = m.end_date" +
+//            " where m.room_id = r.room_id" +
+//            " and m.approve_status in (1,3)" +
+//            " and m.is_cancel = 0" +
+//            " and (r.room_status = 0 and (m.meeting_status = 1 or m.meeting_status = 0))" +
+//            " and DATE_FORMAT(m.start_date,'%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i') and DATE_FORMAT(m.end_date,'%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i')",nativeQuery = true)
+//    void updateMeetingStatusAsStart(@Param("updateDate") String updateDate);
+//
+//    /**
+//     * 更新会议状态为结束状态,同时更新关联的会议室状态为未使用
+//     * @param updateDate 时间点
+//     */
+//    @Modifying
+//    @Transactional
+//    @Query(value =
+//            " update" +
+//                    " dm_meeting as m," +
+//                    " dm_meeting_room as r" +
+//                    " set " +
+//                    " m.meeting_status = 2," +
+//                    " r.room_status = 0 " +
+//                    " where m.room_id = r.room_id" +
+//                    " and m.approve_status in (1,3)" +
+//                    " and m.is_cancel = 0" +
+//                    " and r.room_status = 1"+
+//                    " and DATE_FORMAT(m.end_date,'%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i')",nativeQuery = true)
+//    void autoCloseMeetingAndRoom(@Param("updateDate") String updateDate);
+//
+//    @Query(value = "select u.`id` as userId,u.`name` as userName,u.sex AS sex,u.contacts AS phone,u.dept_id as dept,a.is_sign as isSign," +
+//            " CASE a.is_sign WHEN 0 THEN '否' WHEN 1 THEN '是' END as type,CASE a.sign_type WHEN 0 THEN '人工签到' WHEN 1 THEN '人脸签到' END as signType," +
+//            " a.sign_date as `date`,a.meeting_id as meetingId,m.approve_status as approveStatus,m.meeting_status as meetingStatus" +
+//            " from dm_meeting_attendee as a " +
+//            " left join dm_user as u on a.user_id = u.`id` " +
+//            " left join dm_meeting as m on m.meeting_id = a.meeting_id "+
+//            " where a.meeting_id = :meetingId",nativeQuery = true,countQuery = "select COUNT(DISTINCT a.id ) as subcount from dm_meeting_attendee as a left join dm_user as u on a.user_id = u.`id` left join dm_meeting as m on m.meeting_id = a.meeting_id where a.meeting_id = :meetingId")
+//    List<Map<String,Object>> meetingSignList(@Param("meetingId") Long meetingId,Pageable pageable);
+//
+//    /**
+//     * 查询已完成的会议(根据会议室id)
+//     * @param roomId 会议室id
+//     * @param meetingStatus 会议状态
+//     * @return List<Map<String,String>>
+//     */
+//    @Query(value = "select " +
+//            "CONCAT(m.meeting_id,'') as meetingId, " +
+//            "m.meeting_name as meetingName, " +
+//            "r.`room_name` as roomName, " +
+//            "m.meeting_describe as meetingDescribe, " +
+//            "m.meeting_type as meetingType," +
+//            "u.`name` as initiatorUserName, " +
+//            "date_format(m.start_date,'%Y-%m-%d %H:%i:%s') as startDate, " +
+//            "date_format(m.end_date,'%Y-%m-%d %H:%i:%s') as endDate, " +
+//            "m.remark as remark, " +
+//            "(select count(*) from dm_meeting_attendee as ma where ma.meeting_id = m.meeting_id) as planCount," +
+//            "(select count(*) from dm_meeting_attendee as ma where ma.meeting_id = m.meeting_id and ma.is_sign = 1) as actualCount " +
+//            "from dm_meeting as m  left join dm_meeting_room as r on r.room_id = m.room_id left join dm_user as u on u.id = m.initiator_id " +
+//            "where m.room_id = :roomId and m.meeting_status = :meetingStatus and is_cancel = 0 and approve_status = 1",nativeQuery = true)
+//    List<Map<String,Object>> getDmMeeting(@Param("roomId") Long roomId,@Param("meetingStatus") Long meetingStatus,Pageable pageable);
+//
+//    @Query(value = "select count(DISTINCT m.meeting_id) from dm_meeting as m  left join dm_meeting_room as r on r.room_id = m.room_id left join dm_user as u on u.id = m.initiator_id " +
+//            "where m.room_id = :roomId and m.meeting_status = :meetingStatus and is_cancel = 0 and approve_status = 1",nativeQuery = true)
+//    Long getDmMeetingCount(@Param("roomId") Long roomId,@Param("meetingStatus") Long meetingStatus);
+//
+//
+//    @Modifying
+//    @Transactional
+//    @Query(value = " update" +
+//            " dm_meeting_attendee" +
+//            " set is_sign = 1," +
+//            " sign_date = NOW()," +
+//            " sign_type = 0" +
+//            " where user_id = :userId" +
+//            " and meeting_id = :meetingId",nativeQuery = true)
+//    void signOn(@Param("userId") String userId,@Param("meetingId") Long meetingId);
+//
+//    /**
+//     * 查询会议设备名称
+//     * @param taskId
+//     */
+//    @Query(value = "select * from dm_meeting where task_id = :taskId",nativeQuery = true)
+//    DmMeetingDto getDmMeetingByTaskId(@Param("taskId") String taskId);
+//
+//    /**
+//     * 获取所有未开始会议的会议id
+//     */
+//    @Query(value = "select m.meeting_id from dm_meeting as m where meeting_status!=2 and approve_status=1 and m.is_cancel = 0 and to_days(start_date) = to_days(now())",nativeQuery = true)
+//    List<Object> getMeetingIdListByNotStarted();
+//
+//    /**
+//     * 根据会议状态获取所有会议id
+//     */
+//    @Query(value = "select m.meeting_id from dm_meeting as m where meeting_status = :meetingStatus and approve_status=1 and m.is_cancel = 0 ",nativeQuery = true)
+//    List<Long> getMeetingIdListByMeetingStatus(@Param("meetingStatus") Long meetingStatus);
+//
+//    /**
+//     * 根据会有id更改会议状态
+//     */
+//    @Transactional
+//    @Modifying
+//    @Query(value = "update dm_meeting set meeting_status = :meetingStatus where meeting_id = :meetingId ",nativeQuery = true)
+//    void updateMeetingStatus(@Param("meetingId") Long meetingId,@Param("meetingStatus") Long meetingStatus);
+//
+//    /**
+//     * 根据会有id更改会议状态
+//     */
+//    @Transactional
+//    @Modifying
+//    @Query(value = "update dm_meeting_attendee set is_sign = :isSign,sign_date = :signInTime,sign_type = 1 where meeting_id = :meetingId and user_id = :userId ",nativeQuery = true)
+//    void updateUserSignIn(@Param("isSign") Long isSign, @Param("signInTime") String signInTime,@Param("meetingId") Long meetingId,@Param("userId") String userId);
+//
+//    /**
+//     * 根据会议id获取会议详情
+//     */
+//    @Query(value = "select " +
+//            "m.meeting_id as meetingId," +
+//            "m.meeting_name as meetingName," +
+//            "m.meeting_describe as meetingDescribe," +
+//            "m.meeting_mode as meetingMode," +
+//            "m.start_date as startDate," +
+//            "m.end_date as endDate," +
+//            "mr.room_id as roomId," +
+//            "mr.room_name as roomName," +
+//            "ifnull(d.dmDeviceIdList,'') as dmDeviceIdList," +
+//            "ifnull(d.dmDeviceNameList,'') as dmDeviceNameList," +
+//            "ifnull(attendee.attendeeUserIdList,'') as attendeeUserIdList," +
+//            "ifnull(attendee.attendeeUserNameList,'') as attendeeUserNameList," +
+//            "ifnull(file.fileList,'') as fileList " +
+//            "from " +
+//            "dm_meeting AS m left join dm_meeting_room as mr on m.room_id = mr.room_id " +
+//            "left join ( select md.meeting_id,GROUP_CONCAT(d.device_id) as dmDeviceIdList, GROUP_CONCAT(d.device_name) as dmDeviceNameList from dm_device as d left join dm_meeting_device as md on md.device_id = d.device_id group by md.meeting_id ) as d on d.meeting_id = m.meeting_id  " +
+//            "left join ( select a.meeting_id,GROUP_CONCAT(a.user_id) as attendeeUserIdList, GROUP_CONCAT(u.`name`) as attendeeUserNameList from dm_meeting_attendee as a left join dm_user as u on a.user_id = u.id group by a.meeting_id ) as attendee on attendee.meeting_id = m.meeting_id " +
+//            "left join ( select mf.meeting_id,CONCAT(\"[\",GROUP_CONCAT(CONCAT(ls.storage_id)),\"]\") as fileList from dm_meeting_file as mf left join tool_local_storage as ls on mf.storage_id = ls.storage_id where mf.meeting_id = :meetingId group by mf.meeting_id ) as file on file.meeting_id = m.meeting_id " +
+//            "where m.meeting_id = :meetingId",nativeQuery = true)
+//    Map<String,Object> getMeetingDetails(@Param("meetingId") Long meetingId);
+//
+//    /**
+//     * 根据会议开始时间的年和月,查询出所有数据
+//     */
+//    @Query(value = "select * from dm_meeting where (month(start_date) <= :month and month(end_date)>=:month) and (YEAR(start_date) <= :year and YEAR(end_date)>=:year) and (day(start_date) <= :day and day(end_date)>=:day) and room_id = :roomId and is_cancel = 0 and approve_status!=2",nativeQuery = true)
+//    List<DmMeeting> getDmMeetingByStartDatDay(@Param("roomId") Long roomId, @Param("year") Integer year, @Param("month") Integer month, @Param("day") Integer day);
+//
+//    /**
+//     * 根据会议开始时间的年和月,查询出所有数据
+//     */
+//    @Query(value = "select * from dm_meeting where month(start_date) = :month and YEAR(start_date) = :year and room_id = :roomId and is_cancel = 0 and approve_status!=2 ",nativeQuery = true)
+//    List<Map<String,Object>> getDmMeetingByStartDateYearAndMonth(@Param("roomId") Long roomId,@Param("year") Integer year, @Param("month") Integer month);
+//
+//    /**
+//     * 提供根据会议室和会议时间查询会议发起人信息
+//     */
+//    @Query(value = "select u.name,u.contacts,m.meeting_name as meetingName from dm_meeting as m left join dm_user as u on m.initiator_id = u.id where m.room_id = :roomId and m.start_date = :startDate and m.end_date = :endDate and m.is_cancel = 0",nativeQuery = true)
+//    Map<String,Object> getInitiator(@Param("roomId") Long roomId,@Param("startDate") String startDate,@Param("endDate") String endDate);
+//
+//    /**
+//     * 根据会议查询未签到的签到信息
+//     */
+//    @Query(value = "select user_id as userId from dm_meeting_attendee where meeting_id = :meetingId and is_sign = 0 ",nativeQuery = true)
+//    List<String> getUserSignIn(@Param("meetingId") Long meetingId);
+//
+//    /**
+//     * 根据会议室id删除对应所有会议
+//     */
+//    @Transactional
+//    @Modifying
+//    @Query(value = "DELETE FROM dm_meeting WHERE room_id = :roomId",nativeQuery = true)
+//    void deleteByRoomId(@Param("roomId")Long roomId);
+//
+//    /**
+//     * 新增参会人
+//     */
+//    @Transactional
+//    @Modifying
+//    @Query(value = "insert into dm_meeting_attendee (meeting_id, user_id) values (:meetingId,:userId) ",nativeQuery = true)
+//    void createMeetingAttendee(@Param("meetingId") Long meetingId, @Param("userId") String userId);
+
+    @Query(value = "select count(a.meeting_id) as total,if(ISNULL(sum(if(a.meeting_status=0,1,0))),0,sum(if(a.meeting_status=0,1,0))) as notStarted,if(ISNULL(sum(if(a.meeting_status=1,1,0))),0,sum(if(a.meeting_status=1,1,0))) as haveInHand,if(ISNULL(sum(if(a.meeting_status=2,1,0))),0,sum(if(a.meeting_status=2,1,0))) as `end` from meeting_info as a where to_days(a.start_date) = to_days(now()) and a.approve_status=1 and is_cancel != 1" ,nativeQuery = true)
+    Map<String,Object> meetingSummary();
+
+    @Query(value = "select sum(MONTH(start_date)=1) as one,sum(MONTH(start_date)=2) as two,sum(MONTH(start_date)=3) as three,sum(MONTH(start_date)=4) as four,sum(MONTH(start_date)=5) as five,sum(MONTH(start_date)=6) as six,sum(MONTH(start_date)=7) as seven,sum(MONTH(start_date)=8) as eight,sum(MONTH(start_date)=9) as nine,sum(MONTH(start_date)=10) as ten,sum(MONTH(start_date)=11) as eleven,sum(MONTH(start_date)=12) as twelve from meeting_info where YEAR(start_date)=:year and approve_status=1 and is_cancel != 1" ,nativeQuery = true)
+    Map<String,Object> meetingSummaryByYear(@Param("year") String year);
+
+//    @Query(value = "select meeting_id as meetingId from dm_meeting_attendee where user_id = :userId" , nativeQuery = true)
+//    List<BigInteger> queryMeetingIdsByUserId(@Param("userId") String userId);
+//
+//    @Query(value = "select meeting_id as meetingId from dm_meeting where initiator_id  = :initiatorId" , nativeQuery = true)
+//    List<BigInteger> queryMeetingIdsByInitiatorId(@Param("initiatorId") String initiatorId);
+}

+ 118 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/repository/MeetingRoomRepository.java

@@ -0,0 +1,118 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package com.usky.meeting.repository;
+
+import com.usky.meeting.domain.MeetingRoom;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Map;
+
+/**
+* @website https://el-admin.vip
+* @author shiguangji
+* @date 2021-03-12
+**/
+public interface MeetingRoomRepository extends JpaRepository<MeetingRoom, Long>, JpaSpecificationExecutor<MeetingRoom> {
+
+    /**
+     * 会议室使用情况
+     * @return
+     */
+//    @Query(value = "select" +
+//            " count(a.room_id) as total," +
+//            " sum(if(a.roomStatus=0,1,0)) as idle," +
+//            " sum(if(a.roomStatus=1,1,0)) as in_use " +
+//            " from ( " +
+//                " select r.room_id,case when ifnull(t.total,0) = 0 then 0 else 1 end as roomStatus" +
+//                " from dm_meeting_room as r " +
+//                " left join (" +
+//                    " select room_id,count(*) as total " +
+//                    " from dm_meeting " +
+//                    " where 1=1 " +
+//                    " and end_date >= NOW() and is_cancel = 0 " +
+//                    " group by room_id" +
+//                " ) as t on t.room_id = r.room_id " +
+//            " ) as a",nativeQuery = true)
+    @Query(value = "select" +
+            " count(a.room_id) as total," +
+            " sum(if(a.room_status=0,1,0)) as idle," +
+            " sum(if(a.room_status=1,1,0)) as in_use " +
+            " from meeting_room as a" ,nativeQuery = true)
+    Map<String,Object> roomSummary();
+
+//    //查询所有参会人和签到人数
+//    @Query(value = "select count(m.user_id) as attendeeTotal,sum(if(m.is_sign=1,1,0)) as attendeeInUse from dm_meeting_attendee as m" ,nativeQuery = true)
+//    Map<String,Object> attendeeSummary();
+//
+//    /**
+//     * 添加会议审批人
+//     * @param meetingRoomId
+//     * @param userId
+//     */
+//
+//
+//    @Modifying
+//    @Query(value = "delete from dm_meeting_approve_user where meeting_id = :meetingRoomId",nativeQuery = true)
+//    void delRoomApproveUser(@Param("meetingRoomId") Long meetingRoomId);
+//
+///*    @Query(value = "select count(1) as meetSum from dm_meeting_approve_user as d  where meeting_id = :meetingRoomId",nativeQuery = true)
+//    Map<String,Object> findRoom(@Param("meetingRoomId") Long meetingRoomId);*/
+//    @Query(value = "select r.room_id as roomId," +
+//            "r.room_name as roomName," +
+//            "r.floor_id as floorId," +
+//            "r.description as description," +
+//            "r.storage_id as storageId," +
+//            "r.img_path as imgPath," +
+//            "r.capacity as capacity," +
+//            "r.`position` as `position`," +
+//            "r.maintainer as maintainer," +
+//            "r.contacts as contacts," +
+//            "r.remark as remark," +
+//            "r.status as status," +
+//            "r.room_status as roomStatus," +
+//            "r.reserve_status as reserveStatus," +
+//            "r.environmental as environmental," +
+//            "r.last_use_time as lastUseTime," +
+//            "r.is_approve as isApprove " +
+//            "from dm_meeting_room as r where if(:floorId IS NOT NULL,r.floor_id = :floorId,1=1)" ,nativeQuery = true)
+//    List<Map<String,String>> getAllMeetingRoom(@Param("floorId") Long floorId);
+//
+//    /**
+//     * 根据会议室id更改会议室状态
+//     */
+//    @Transactional
+//    @Modifying
+//    @Query(value = "update dm_meeting_room set room_status = :roomStatus where room_id = :roomId  ",nativeQuery = true)
+//    void updateMeetingRoomStatus(@Param("roomId") Long roomId,@Param("roomStatus") Long roomStatus);
+//
+//    /**
+//     * 会议室列表(运营)
+//     */
+//    @Query(value = "select m.room_id as roomId,m.room_name as roomName,if(m.room_status=0,'空闲','在用') as roomStatus,if(m.room_status=0,0,(select count(ma.id) as should_number from dm_meeting_attendee as ma left join dm_meeting as m on ma.meeting_id = m.meeting_id left join dm_meeting_room as mr on m.room_id = mr.room_id where (m.start_date <=curtime() and m.end_date >= curtime()) and mr.room_id = roomId)) as shouldNumber,if(m.room_status=0,0,(select sum(if(ma.is_sign=1,1,0)) as should_number from dm_meeting_attendee as ma left join dm_meeting as m on ma.meeting_id = m.meeting_id left join dm_meeting_room as mr on m.room_id = mr.room_id where (m.start_date <=curtime() and m.end_date >= curtime()) and mr.room_id = roomId)) as realNumber from dm_meeting_room as m" ,nativeQuery = true)
+//    List<Map<String,Object>> getMeetingRoomListYY();
+//
+//    /**
+//     * 会议室列表(运营)
+//     */
+//    @Query(value = "select m.room_id as roomId,m.room_name as roomName,if(m.room_status=0,'空闲','在用') as roomStatus,if(m.room_status=0,'',(select m.meeting_name as meetingName from  dm_meeting as m left join dm_meeting_room as mr on m.room_id = mr.room_id where (m.start_date <=curtime() and m.end_date >= curtime()) and mr.room_id = roomId)) as meeting,if(m.room_status=0,'',(select m.start_date as startDate from  dm_meeting as m left join dm_meeting_room as mr on m.room_id = mr.room_id where (m.start_date <=curtime() and m.end_date >= curtime()) and mr.room_id = roomId)) as startDate,if(m.room_status=0,'',(select m.end_date as endDate from  dm_meeting as m left join dm_meeting_room as mr on m.room_id = mr.room_id where (m.start_date <=curtime() and m.end_date >= curtime()) and mr.room_id = roomId)) as endDate,if(m.room_status=0,'',(select u.`name` from dm_user as u left join dm_meeting as m on u.id = m.initiator_id left join dm_meeting_room as mr on m.room_id = mr.room_id where (m.start_date <=curtime() and m.end_date >= curtime()) and mr.room_id = roomId)) as initiator,if(m.room_status=0,0,(select count(ma.id) as should_number from dm_meeting_attendee as ma left join dm_meeting as m on ma.meeting_id = m.meeting_id left join dm_meeting_room as mr on m.room_id = mr.room_id where (m.start_date <=curtime() and m.end_date >= curtime()) and mr.room_id = roomId)) as shouldNumber,if(m.room_status=0,0,(select sum(if(ma.is_sign=1,1,0)) as should_number from dm_meeting_attendee as ma left join dm_meeting as m on ma.meeting_id = m.meeting_id left join dm_meeting_room as mr on m.room_id = mr.room_id where (m.start_date <=curtime() and m.end_date >= curtime()) and mr.room_id = roomId)) as realNumber from dm_meeting_room as m where m.room_id = :roomId" ,nativeQuery = true)
+//    Map<String,Object> getMeetingRoomListDetailYY(@Param("roomId")Long roomId);
+}

+ 55 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/server/FaceContrastServer.java

@@ -0,0 +1,55 @@
+package com.usky.meeting.server;
+
+import com.tencentcloudapi.common.Credential;
+import com.tencentcloudapi.common.exception.TencentCloudSDKException;
+import com.tencentcloudapi.common.profile.ClientProfile;
+import com.tencentcloudapi.common.profile.HttpProfile;
+import com.tencentcloudapi.iai.v20180301.IaiClient;
+import com.tencentcloudapi.iai.v20180301.models.CompareFaceRequest;
+import com.tencentcloudapi.iai.v20180301.models.CompareFaceResponse;
+import com.usky.meeting.service.vo.FaceResultVO;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author tanyongpeng
+ * <p>调用腾讯接口</p>
+ **/
+@Component
+@Data
+@Slf4j
+public class FaceContrastServer {
+
+    @Value("${tencentcloudapi.secretId}")
+    private String secretId;
+    @Value("${tencentcloudapi.secretKey}")
+    private String secretKey;
+    @Value("${tencentcloudapi.endpoint}")
+    private String endpoint;
+    @Value("${tencentcloudapi.region}")
+    private String region;
+
+    public FaceResultVO faceContrast(String imageA, String imageB){
+        FaceResultVO faceResult = new FaceResultVO();
+        try{
+            Credential cred = new Credential(secretId, secretKey);
+            HttpProfile httpProfile = new HttpProfile();
+            httpProfile.setEndpoint(endpoint);
+            ClientProfile clientProfile = new ClientProfile();
+            clientProfile.setHttpProfile(httpProfile);
+            IaiClient client = new IaiClient(cred, region, clientProfile);
+            CompareFaceRequest req = new CompareFaceRequest();
+            req.setImageA(imageA);
+            req.setImageB(imageB);
+            CompareFaceResponse resp = client.CompareFace(req);
+            faceResult.setScore(resp.getScore());
+            faceResult.setCode(FaceResultVO.SUCCESS_CODE);
+        } catch (TencentCloudSDKException e) {
+            faceResult.setCode(FaceResultVO.FACE_ERROR);
+            faceResult.setMsg(e.getMessage());
+        }
+        return faceResult;
+    }
+}

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingApproveService.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.service;
+
+import com.usky.meeting.domain.MeetingApprove;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * 预约审批表 服务类
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+public interface MeetingApproveService extends CrudService<MeetingApprove> {
+
+}

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingApproveUserService.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.service;
+
+import com.usky.meeting.domain.MeetingApproveUser;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * 会议审批用户 服务类
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+public interface MeetingApproveUserService extends CrudService<MeetingApproveUser> {
+
+}

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingAttendeeService.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.service;
+
+import com.usky.meeting.domain.MeetingAttendee;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * 会议参会人员关联表 服务类
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+public interface MeetingAttendeeService extends CrudService<MeetingAttendee> {
+
+}

+ 27 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingDeviceService.java

@@ -0,0 +1,27 @@
+package com.usky.meeting.service;
+
+import com.usky.common.core.bean.CommonPage;
+import com.usky.meeting.domain.MeetingDevice;
+import com.usky.common.mybatis.core.CrudService;
+import com.usky.meeting.service.vo.MeetingDeviceRequestVO;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * <p>
+ * 设备表 服务类
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+public interface MeetingDeviceService extends CrudService<MeetingDevice> {
+
+    CommonPage<MeetingDevice> meetingDeviceList(MeetingDeviceRequestVO requestVO);
+
+    void add(MeetingDevice meetingDevice);
+
+    void edit(MeetingDevice meetingDevice);
+
+    void remove(Long deviceId);
+
+}

+ 23 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingFaceService.java

@@ -0,0 +1,23 @@
+package com.usky.meeting.service;
+
+import com.usky.meeting.domain.MeetingFace;
+import com.usky.common.mybatis.core.CrudService;
+import com.usky.meeting.service.vo.FaceResultVO;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+public interface MeetingFaceService extends CrudService<MeetingFace> {
+
+    /**
+     * 人脸校验
+     * @param imageBase
+     * @return
+     */
+    FaceResultVO vef(String imageBase);
+}

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingFaceVefLogService.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.service;
+
+import com.usky.meeting.domain.MeetingFaceVefLog;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+public interface MeetingFaceVefLogService extends CrudService<MeetingFaceVefLog> {
+
+}

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingFileService.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.service;
+
+import com.usky.meeting.domain.MeetingFile;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * 会议文件 服务类
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+public interface MeetingFileService extends CrudService<MeetingFile> {
+
+}

+ 26 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingFloorService.java

@@ -0,0 +1,26 @@
+package com.usky.meeting.service;
+
+import com.usky.common.core.bean.CommonPage;
+import com.usky.meeting.domain.MeetingFloor;
+import com.usky.common.mybatis.core.CrudService;
+import com.usky.meeting.service.vo.MeetingFloorRequestVO;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * <p>
+ * 楼层表 服务类
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+public interface MeetingFloorService extends CrudService<MeetingFloor> {
+
+    CommonPage<MeetingFloor> meetingFloorList(MeetingFloorRequestVO requestVO);
+
+    void add(MeetingFloor meetingFloor);
+
+    void edit(MeetingFloor meetingFloor);
+
+    void remove(Long floorId);
+}

+ 29 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingInfoService.java

@@ -0,0 +1,29 @@
+package com.usky.meeting.service;
+
+import com.usky.meeting.domain.MeetingInfo;
+import com.usky.common.mybatis.core.CrudService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 会议表(预约成功) 服务类
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+public interface MeetingInfoService extends CrudService<MeetingInfo> {
+
+    /**
+     * 获取当日会议预约数量
+     * @return  Map<String,Object>
+     */
+    Map<String,Object> meetingSummary();
+
+    /**
+     * 获取当年会议预约数量
+     * @return  Map<String,Object>
+     */
+    Map<String,Object> meetingSummaryByYear(String year);
+}

+ 24 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingRoomService.java

@@ -0,0 +1,24 @@
+package com.usky.meeting.service;
+
+import com.usky.common.core.bean.CommonPage;
+import com.usky.meeting.domain.MeetingRoom;
+import com.usky.common.mybatis.core.CrudService;
+import com.usky.meeting.service.vo.MeetingRoomRequestVO;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 会议室表 服务类
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-08
+ */
+public interface MeetingRoomService extends CrudService<MeetingRoom> {
+
+
+    Map<String,Object> FirstPageStatistic(String year);
+
+    CommonPage<MeetingRoom> dmMeetingRoomList(MeetingRoomRequestVO requestVO);
+}

+ 19 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/dto/ApproveResults.java

@@ -0,0 +1,19 @@
+package com.usky.meeting.service.dto;
+
+import lombok.Data;
+
+@Data
+public class ApproveResults {
+
+    /** 任务编号 */
+    private String taskId;
+
+    /** 审批状态(0-审批中 1-审批通过 2-审批驳回) */
+    private Long approveStatus;
+
+    /** 审批者意见 */
+    private String approveSuggest;
+
+    private String type;
+
+}

+ 85 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/dto/DeptDto.java

@@ -0,0 +1,85 @@
+/*
+ *  Copyright 2019-2020 Zheng Jie
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package com.usky.meeting.service.dto;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Objects;
+
+/**
+* @author Zheng Jie
+* @date 2019-03-25
+*/
+@Getter
+@Setter
+public class DeptDto implements Serializable {
+
+    private String id;
+
+    private String name;
+
+    private String description;
+
+    private String remark;
+
+    private Boolean enabled;
+
+    private Integer deptSort;
+
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+
+    private List<DeptDto> children;
+
+    private List<DmUserDto> deptUser;
+
+    private String pid;
+
+    private Integer subCount;
+
+    public Boolean getHasChildren() {
+        return subCount > 0;
+    }
+
+    public Boolean getLeaf() {
+        return subCount <= 0;
+    }
+
+    public String getLabel() {
+        return name;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        DeptDto deptDto = (DeptDto) o;
+        return Objects.equals(id, deptDto.id) &&
+                Objects.equals(name, deptDto.name);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(id, name);
+    }
+}

+ 57 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/dto/DeptQueryCriteria.java

@@ -0,0 +1,57 @@
+package com.usky.meeting.service.dto;///*
+// *  Copyright 2019-2020 Zheng Jie
+// *
+// *  Licensed under the Apache License, Version 2.0 (the "License");
+// *  you may not use this file except in compliance with the License.
+// *  You may obtain a copy of the License at
+// *
+// *  http://www.apache.org/licenses/LICENSE-2.0
+// *
+// *  Unless required by applicable law or agreed to in writing, software
+// *  distributed under the License is distributed on an "AS IS" BASIS,
+// *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// *  See the License for the specific language governing permissions and
+// *  limitations under the License.
+// */
+//package com.usky.demo.service.dto;
+//
+//import lombok.Data;
+//import me.zhengjie.annotation.DataPermission;
+//import me.zhengjie.annotation.Query;
+//
+//import java.sql.Timestamp;
+//import java.util.List;
+//
+///**
+//* @author Zheng Jie
+//* @date 2019-03-25
+//*/
+//@Data
+//@DataPermission(fieldName = "id")
+//public class DeptQueryCriteria{
+//
+//    @Query(type = Query.Type.INNER_LIKE)
+//    private String name;
+//
+//    @Query(type = Query.Type.INNER_LIKE)
+//    private String userName;
+//
+//    @Query(type = Query.Type.INNER_LIKE)
+//    private String description;
+//
+//    @Query(type = Query.Type.INNER_LIKE)
+//    private String remark;
+//
+//    @Query
+//    private Boolean enabled;
+//
+//    @Query
+//    private Long pid;
+//
+//    @Query(type = Query.Type.IS_NULL, propName = "pid")
+//    private Boolean pidIsNull;
+//
+//    @Query(type = Query.Type.BETWEEN)
+//    private List<Timestamp> createTime;
+//
+//}

+ 36 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/dto/DeptSmallDto.java

@@ -0,0 +1,36 @@
+/*
+ *  Copyright 2019-2020 Zheng Jie
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package com.usky.meeting.service.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+* @author Zheng Jie
+* @date 2019-6-10 16:32:18
+*/
+@Data
+public class DeptSmallDto implements Serializable {
+
+    private String id;
+
+    private String name;
+
+    private String description;
+
+    private String remark;
+}

+ 31 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/dto/DeptUser.java

@@ -0,0 +1,31 @@
+package com.usky.meeting.service.dto;
+
+import com.alibaba.fastjson.JSONArray;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+@Data
+public class DeptUser {
+
+    private Integer deptId;
+
+    private Integer pid;
+
+    private Integer subCount;
+
+    private String name;
+
+    private String description;
+
+    private Integer deptSort;
+
+    private String remark;
+
+    private Boolean enabled;
+
+    private JSONArray userList;
+
+}

+ 41 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/dto/DictDetailDto.java

@@ -0,0 +1,41 @@
+/*
+ *  Copyright 2019-2020 Zheng Jie
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package com.usky.meeting.service.dto;
+
+import com.usky.meeting.service.dto.DictSmallDto;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+* @author Zheng Jie
+* @date 2019-04-10
+*/
+@Getter
+@Setter
+public class DictDetailDto implements Serializable {
+
+    private Long id;
+
+    private DictSmallDto dict;
+
+    private String label;
+
+    private String value;
+
+    private Integer dictSort;
+}

+ 36 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/dto/DictDetailQueryCriteria.java

@@ -0,0 +1,36 @@
+package com.usky.meeting.service.dto;///*
+// *  Copyright 2019-2020 Zheng Jie
+// *
+// *  Licensed under the Apache License, Version 2.0 (the "License");
+// *  you may not use this file except in compliance with the License.
+// *  You may obtain a copy of the License at
+// *
+// *  http://www.apache.org/licenses/LICENSE-2.0
+// *
+// *  Unless required by applicable law or agreed to in writing, software
+// *  distributed under the License is distributed on an "AS IS" BASIS,
+// *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// *  See the License for the specific language governing permissions and
+// *  limitations under the License.
+// */
+//package com.usky.demo.service.dto;
+//
+//import lombok.Data;
+//import me.zhengjie.annotation.Query;
+//
+///**
+//* @author Zheng Jie
+//* @date 2019-04-10
+//*/
+//@Data
+//public class DictDetailQueryCriteria {
+//
+//    @Query(type = Query.Type.INNER_LIKE)
+//    private String label;
+//
+//    @Query(propName = "name",joinName = "dict")
+//    private String dictName;
+//
+//    @Query(type = Query.Type.EQUAL)
+//    private String value;
+//}

+ 39 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/dto/DictDto.java

@@ -0,0 +1,39 @@
+/*
+ *  Copyright 2019-2020 Zheng Jie
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package com.usky.meeting.service.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+* @author Zheng Jie
+* @date 2019-04-10
+*/
+@Getter
+@Setter
+public class DictDto implements Serializable {
+
+    private Long id;
+
+    private List<DictDetailDto> dictDetails;
+
+    private String name;
+
+    private String description;
+}

部分文件因为文件数量过多而无法显示