#844 修复工作报告项目列表、报告填写(填写界面工时统计)未租户隔离问题

已關閉
fuyuchuan 請求將 26 次代碼提交從 uskycloud/fu-normal-push 合併至 uskycloud/server-165
共有 100 個文件被更改,包括 1240 次插入3420 次删除
  1. 1 0
      service-agbox/service-agbox-biz/pom.xml
  2. 1 0
      service-alarm/service-alarm-biz/pom.xml
  3. 0 20
      service-cockpit/pom.xml
  4. 0 146
      service-cockpit/service-cockpit-biz/pom.xml
  5. 0 66
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/RuoYiSystemApplication.java
  6. 0 13
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/ServletInitializer.java
  7. 0 118
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/common/base/BaseController.java
  8. 0 24
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/common/config/CorsConfig.java
  9. 0 2
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/common/config/DateStringConvert.java
  10. 0 20
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/common/config/MybatisPlusConfig.java
  11. 0 2
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/common/config/StringDateConverter.java
  12. 0 72
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/common/config/V2Config.java
  13. 0 104
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/common/domain/AjaxResult.java
  14. 0 84
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/common/domain/ResultTable.java
  15. 0 50
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/common/domain/Tablepar.java
  16. 0 21
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/common/interceptor/Interceptor.java
  17. 0 91
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/common/interceptor/WebMvcConfig.java
  18. 0 108
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/controller/MybatisGeneratorUtils.java
  19. 0 87
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/controller/web/ApiController.java
  20. 0 376
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/controller/web/FileController.java
  21. 0 257
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/controller/web/GoviewProjectController.java
  22. 0 21
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/controller/web/Indexcontroller.java
  23. 0 20
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/controller/web/SysUserController.java
  24. 0 16
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/mapper/GoviewProjectDataMapper.java
  25. 0 16
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/mapper/GoviewProjectMapper.java
  26. 0 17
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/mapper/SysFileMapper.java
  27. 0 16
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/mapper/SysUserMapper.java
  28. 0 48
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/model/GoviewProject.java
  29. 0 39
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/model/GoviewProjectData.java
  30. 0 119
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/model/SysFile.java
  31. 0 39
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/model/SysUser.java
  32. 0 119
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/model/vo/GoviewProjectVo.java
  33. 0 70
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/model/vo/SysFileVo.java
  34. 0 18
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/service/IGoviewProjectDataService.java
  35. 0 16
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/service/IGoviewProjectService.java
  36. 0 18
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/service/ISysFileService.java
  37. 0 16
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/service/ISysUserService.java
  38. 0 33
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/service/impl/GoviewProjectDataServiceImpl.java
  39. 0 20
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/service/impl/GoviewProjectServiceImpl.java
  40. 0 30
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/service/impl/SysFileServiceImpl.java
  41. 0 20
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/service/impl/SysUserServiceImpl.java
  42. 0 252
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/util/ConvertUtil.java
  43. 0 39
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/util/MybatisPlusGenerator.java
  44. 0 74
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/util/SaTokenUtil.java
  45. 0 155
      service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/util/SnowflakeIdWorker.java
  46. 0 16
      service-cockpit/service-cockpit-biz/src/main/resources/application-dev.yml
  47. 0 110
      service-cockpit/service-cockpit-biz/src/main/resources/application.yml
  48. 0 25
      service-cockpit/service-cockpit-biz/src/main/resources/bootstrap.yml
  49. 0 5
      service-cockpit/service-cockpit-biz/src/main/resources/mapper/GoviewProjectDataMapper.xml
  50. 0 5
      service-cockpit/service-cockpit-biz/src/main/resources/mapper/GoviewProjectMapper.xml
  51. 0 5
      service-cockpit/service-cockpit-biz/src/main/resources/mapper/SysFileMapper.xml
  52. 0 5
      service-cockpit/service-cockpit-biz/src/main/resources/mapper/SysUserMapper.xml
  53. 5 4
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/MybatisGeneratorUtils.java
  54. 21 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/PatrolInspectionSiteStoreController.java
  55. 43 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/PatrolInspectionSiteStore.java
  56. 16 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/mapper/PatrolInspectionSiteStoreMapper.java
  57. 24 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/PatrolInspectionSiteStoreService.java
  58. 7 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionPlanSonServiceImpl.java
  59. 2 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionSiteServiceImpl.java
  60. 29 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionSiteStoreServiceImpl.java
  61. 13 0
      service-fire/service-fire-biz/src/main/resources/mapper/fire/PatrolInspectionSiteStoreMapper.xml
  62. 1 0
      service-ids/service-ids-biz/pom.xml
  63. 5 0
      service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/DmpDeviceInfo.java
  64. 27 27
      service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceInfoServiceImpl.java
  65. 1 1
      service-job/src/main/java/com/ruoyi/job/task/RyTask.java
  66. 0 22
      service-meeting/service-meeting-api/src/main/java/com/usky/demo/RemoteMeetingService.java
  67. 14 0
      service-meeting/service-meeting-api/src/main/java/com/usky/meeting/RemoteMeetingService.java
  68. 2 2
      service-meeting/service-meeting-api/src/main/java/com/usky/meeting/RemoteUserService.java
  69. 1 1
      service-meeting/service-meeting-api/src/main/java/com/usky/meeting/domain/SysUserVO.java
  70. 2 9
      service-meeting/service-meeting-api/src/main/java/com/usky/meeting/factory/RemoteMeetingFallbackFactory.java
  71. 0 0
      service-meeting/service-meeting-api/src/main/java/com/usky/meeting/factory/RemoteUserFallbackFactory.java
  72. 3 5
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/MybatisGenerator.java
  73. 1 1
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/api/ServiceMeetingTaskApi.java
  74. 43 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingDeviceHeartbeatController.java
  75. 2 2
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingRoomController.java
  76. 83 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingTemplateController.java
  77. 2 2
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/SignOnOutRequestVO.java
  78. 2 1
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/SysUserController.java
  79. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingDevice.java
  80. 79 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingDeviceHeartbeat.java
  81. 91 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingTemplate.java
  82. 18 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingDeviceHeartbeatMapper.java
  83. 18 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingTemplateMapper.java
  84. 2 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/SysUserMapper.java
  85. 17 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingDeviceHeartbeatService.java
  86. 45 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingTemplateService.java
  87. 50 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingDeviceHeartbeatServiceImpl.java
  88. 125 68
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingDeviceServiceImpl.java
  89. 12 4
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingFaceServiceImpl.java
  90. 160 154
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingInfoServiceImpl.java
  91. 37 30
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingRoomServiceImpl.java
  92. 133 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingTemplateServiceImpl.java
  93. 2 2
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/vo/MeetingDeviceRequestVO.java
  94. 2 2
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/vo/MeetingFaceRequestVO.java
  95. 2 2
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/vo/MeetingRoomReservationVO.java
  96. 19 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/vo/MeetingTemplateRequestVO.java
  97. 1 1
      service-meeting/service-meeting-biz/src/main/resources/logback.xml
  98. 19 0
      service-meeting/service-meeting-biz/src/main/resources/mapper/meeting/MeetingDeviceHeartbeatMapper.xml
  99. 20 17
      service-meeting/service-meeting-biz/src/main/resources/mapper/meeting/MeetingDeviceMapper.xml
  100. 21 0
      service-meeting/service-meeting-biz/src/main/resources/mapper/meeting/MeetingTemplateMapper.xml

+ 1 - 0
service-agbox/service-agbox-biz/pom.xml

@@ -74,6 +74,7 @@
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.2.6.RELEASE</version>
                 <executions>
                     <execution>
                         <goals>

+ 1 - 0
service-alarm/service-alarm-biz/pom.xml

@@ -74,6 +74,7 @@
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.2.6.RELEASE</version>
                 <executions>
                     <execution>
                         <goals>

+ 0 - 20
service-cockpit/pom.xml

@@ -1,20 +0,0 @@
-<?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-iot</artifactId>
-
-    <packaging>pom</packaging>
-    <version>0.0.1</version>
-
-    <modules>
-        <module>service-iot-biz</module>
-        <module>service-iot-api</module>
-    </modules>
-</project>

+ 0 - 146
service-cockpit/service-cockpit-biz/pom.xml

@@ -1,146 +0,0 @@
-<?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-iot</artifactId>
-        <groupId>com.usky</groupId>
-        <version>0.0.1</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>service-iot-biz</artifactId>
-    <dependencies>
-        <dependency>
-            <groupId>com.usky</groupId>
-            <artifactId>common-cloud-starter</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.usky</groupId>
-            <artifactId>service-backend-api</artifactId>
-            <version>0.0.1</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.usky</groupId>
-            <artifactId>service-iot-api</artifactId>
-            <version>0.0.1</version>
-        </dependency>
-
-        <dependency>
-            <groupId>cn.afterturn</groupId>
-            <artifactId>easypoi-spring-boot-starter</artifactId>
-            <version>4.1.0</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.aliyun</groupId>
-            <artifactId>aliyun-java-sdk-core</artifactId>
-            <version>4.5.16</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.aliyun</groupId>
-            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
-            <version>1.1.0</version>
-        </dependency>
-
-        <!--MQTT依赖-->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-integration</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.integration</groupId>
-            <artifactId>spring-integration-mqtt</artifactId>
-        </dependency>
-        <!--websocket依赖-->
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-websocket</artifactId>
-            <version>5.2.8.RELEASE</version>
-        </dependency>
-        <dependency>
-            <groupId>com.usky</groupId>
-            <artifactId>service-agbox-api</artifactId>
-            <version>0.0.1</version>
-            <scope>compile</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>com.usky</groupId>
-            <artifactId>service-system-api</artifactId>
-            <version>0.0.1</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.github.binarywang</groupId>
-            <artifactId>weixin-java-mp</artifactId>
-            <version>4.3.0</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-amqp</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.usky</groupId>
-            <artifactId>service-alarm-api</artifactId>
-            <version>0.0.1</version>
-            <scope>compile</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>com.usky</groupId>
-            <artifactId>ruoyi-common-core</artifactId>
-        </dependency>
-
-        <!--钉钉-->
-        <!--获取企业accessToken(企业内部应用) 新版SDK-->
-        <dependency>
-            <groupId>com.aliyun</groupId>
-            <artifactId>dingtalk</artifactId>
-            <version>2.1.34</version>
-        </dependency>
-        <!--旧版SDK-->
-        <dependency>
-            <groupId>com.aliyun</groupId>
-            <artifactId>alibaba-dingtalk-service-sdk</artifactId>
-            <version>2.0.0</version>
-        </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>

+ 0 - 66
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/RuoYiSystemApplication.java

@@ -1,66 +0,0 @@
-package com.usky.iot;
-
-
-
-import com.usky.iot.constant.constant;
-import io.swagger.annotations.SwaggerDefinition;
-import lombok.val;
-import me.chanjar.weixin.mp.api.WxMpService;
-import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
-import me.chanjar.weixin.mp.config.impl.WxMpMapConfigImpl;
-import org.mybatis.spring.annotation.MapperScan;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.amqp.rabbit.annotation.EnableRabbit;
-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.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.core.env.Environment;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-
-/**
- * 系统模块
- * 
- * @author ruoyi
- */
-
-//@EnableSwagger2
-@EnableFeignClients(basePackages = "com.usky")
-@MapperScan(value = "com.usky.iot.mapper")
-@ComponentScan("com.usky")
-@SpringBootApplication
-@EnableRabbit
-public class RuoYiSystemApplication
-{
-    private static final Logger LOGGER = LoggerFactory.getLogger(RuoYiSystemApplication.class);
-
-    @Bean
-    public WxMpService wxMpService(){
-        WxMpMapConfigImpl wxMpMapConfig = new WxMpMapConfigImpl();
-        wxMpMapConfig.setAppId(constant.WE_CHAT_APP_ID);
-        wxMpMapConfig.setSecret(constant.WE_CHAT_SECRET);
-        val wxMpService = new WxMpServiceImpl();
-        wxMpService.setWxMpConfigStorage(wxMpMapConfig);
-
-        return wxMpService;
-    }
-
-    public static void main(String[] args) throws UnknownHostException {
-        ConfigurableApplicationContext application = SpringApplication.run(RuoYiSystemApplication.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" +
-                "----------------------------------------------------------");
-    }
-}

+ 0 - 13
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/ServletInitializer.java

@@ -1,13 +0,0 @@
-package cn.com;
-
-import org.springframework.boot.builder.SpringApplicationBuilder;
-import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
-
-public class ServletInitializer extends SpringBootServletInitializer {
-
-	@Override
-	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
-		return application.sources(GogoApplication.class);
-	}
-
-}

+ 0 - 118
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/common/base/BaseController.java

@@ -1,118 +0,0 @@
-package cn.com.v2.common.base;
-
-import org.springframework.web.bind.WebDataBinder;
-import org.springframework.web.bind.annotation.InitBinder;
-
-import cn.com.v2.common.domain.AjaxResult;
-
-import java.beans.PropertyEditorSupport;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-/**
- * web层通用数据处理
- * 
- * @ClassName: BaseController
- * @author fuce
- * @date 2018年8月18日
- *
- */
-
-public class BaseController {
-
-	/**
-	 * 将前台传递过来的日期格式的字符串,自动转化为Date类型
-	 */
-	@InitBinder
-	public void initBinder(WebDataBinder binder) {
-		// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-		// dateFormat.setLenient(false);
-		binder.registerCustomEditor(Date.class, new MyDateEditor());
-	}
-
-	private class MyDateEditor extends PropertyEditorSupport {
-		@Override
-		public void setAsText(String text) throws IllegalArgumentException {
-			// 通过两次异常的处理可以,绑定两次日期的格式
-			SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-			Date date = null;
-			try {
-				date = format.parse(text);
-			} catch (ParseException e) {
-				format = new SimpleDateFormat("yyyy-MM-dd");
-				try {
-					date = format.parse(text);
-				} catch (ParseException e1) {
-					format = new SimpleDateFormat("yyyy/MM/dd H:mm");
-					try {
-						date = format.parse(text);
-					} catch (ParseException e2) {
-						e2.printStackTrace();
-					}
-				}
-			}
-			setValue(date);
-		}
-	}
-
-	/**
-	 * 响应返回结果
-	 * 
-	 * @param rows 影响行数
-	 * @return 操作结果
-	 */
-	protected AjaxResult toAjax(int rows) {
-		return rows > 0 ? success() : error();
-	}
-
-	/**
-	 * 返回成功
-	 */
-	public AjaxResult success() {
-		return AjaxResult.success();
-	}
-
-	/**
-	 * 返回失败消息
-	 */
-	public AjaxResult error() {
-		return AjaxResult.error();
-	}
-
-	public AjaxResult successData(int code, Object value) {
-		AjaxResult json = new AjaxResult();
-		json.put("code", code);
-		json.put("data", value);
-		return json;
-	}
-
-	/**
-	 * 返回成功消息
-	 */
-	public AjaxResult success(String message) {
-		return AjaxResult.success(message);
-	}
-
-	/**
-	 * 返回失败消息
-	 */
-	public AjaxResult error(String message) {
-		return AjaxResult.error(message);
-	}
-
-	/**
-	 * 返回错误码消息
-	 */
-	public AjaxResult error(int code, String message) {
-		return AjaxResult.error(code, message);
-	}
-
-	/**
-	 * 返回object数据
-	 */
-	public AjaxResult retobject(int code, Object data) {
-		return AjaxResult.successData(code, data);
-	}
-
-}

+ 0 - 24
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/common/config/CorsConfig.java

@@ -1,24 +0,0 @@
-package cn.com.v2.common.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.CorsRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-//重写WebMvcConfigurer实现全局跨域配置
-@Configuration
-public class CorsConfig implements WebMvcConfigurer{
-	@Override
-    public void addCorsMappings(CorsRegistry registry) {
-        	registry.addMapping("/**")
-            // 是否发送Cookie
-            .allowCredentials(true)
-            // 放行哪些原始域
-            .allowedOrigins("*")
-            // 放行哪些请求方式
-            .allowedMethods("GET", "POST", "PUT", "DELETE")
-            // 放行哪些原始请求头部信息
-            .allowedHeaders("*")
-            // 暴露哪些头部信息
-            .exposedHeaders("*");
-    }
-}

+ 0 - 2
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/common/config/DateStringConvert.java

@@ -1,2 +0,0 @@
-package com.usky.cockpit.common.config;public class DateStringConvert {
-}

+ 0 - 20
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/common/config/MybatisPlusConfig.java

@@ -1,20 +0,0 @@
-package cn.com.v2.common.config;
-
-import com.baomidou.mybatisplus.annotation.DbType;
-import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class MybatisPlusConfig {
-	 /**
-     * 新的分页插件,一缓和二缓遵循mybatis的规则,
-     */
-    @Bean
-    public MybatisPlusInterceptor mybatisPlusInterceptor() {
-        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
-        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.SQLITE));
-        return interceptor;
-    }
-}

+ 0 - 2
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/common/config/StringDateConverter.java

@@ -1,2 +0,0 @@
-package com.usky.cockpit.common.config;public class StringDateConverter {
-}

+ 0 - 72
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/common/config/V2Config.java

@@ -1,72 +0,0 @@
-package cn.com.v2.common.config;
-
-import java.util.Map;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
-
-/**
- * 读取项目相关配置
- * 
- * @author fuce
- */
-@Component
-@ConfigurationProperties(prefix = "v2")
-public class V2Config {
-
-	/**
-	 * 存储路径
-	 */
-	private String fileurl;
-	/**
-	 * 请求url
-	 */
-	private String httpurl;
-	/**
-	 * 虚拟路径map
-	 */
-	private Map<String, String> xnljmap;
-	
-	/**
-	 * 默认文件格式
-	 */
-	private String defaultFormat;
-	
-
-	public String getFileurl() {
-		return fileurl;
-	}
-
-	public void setFileurl(String fileurl) {
-		this.fileurl = fileurl;
-	}
-
-	
-
-	
-
-	public String getHttpurl() {
-		return httpurl;
-	}
-
-	public void setHttpurl(String httpurl) {
-		this.httpurl = httpurl;
-	}
-
-	public Map<String, String> getXnljmap() {
-		return xnljmap;
-	}
-
-	public void setXnljmap(Map<String, String> xnljmap) {
-		this.xnljmap = xnljmap;
-	}
-
-	public String getDefaultFormat() {
-		return defaultFormat;
-	}
-
-	public void setDefaultFormat(String defaultFormat) {
-		this.defaultFormat = defaultFormat;
-	}
-	
-	
-}

+ 0 - 104
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/common/domain/AjaxResult.java

@@ -1,104 +0,0 @@
-package cn.com.v2.common.domain;
-
-import java.util.HashMap;
-
-/**
-* @ClassName: AjaxResult
-* @Description: ajax操作消息提醒
-* @author fuce
-* @date 2018年8月18日
-*
- */
-public class AjaxResult extends HashMap<String, Object>
-{
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 初始化一个新创建的 Message 对象
-     */
-    public AjaxResult()
-    {
-    }
-
-    /**
-     * 返回错误消息
-     * 
-     * @return 错误消息
-     */
-    public static AjaxResult error()
-    {
-        return error(500, "操作失败");
-    }
-
-    /**
-     * 返回错误消息
-     * 
-     * @param msg 内容
-     * @return 错误消息
-     */
-    public static AjaxResult error(String msg)
-    {
-        return error(500, msg);
-    }
-
-    /**
-     * 返回错误消息
-     * 
-     * @param code 错误码
-     * @param msg 内容
-     * @return 错误消息
-     */
-    public static AjaxResult error(int code, String msg)
-    {
-        AjaxResult json = new AjaxResult();
-        json.put("code", code);
-        json.put("msg", msg);
-        return json;
-    }
-
-    /**
-     * 返回成功消息
-     * 
-     * @param msg 内容
-     * @return 成功消息
-     */
-    public static AjaxResult success(String msg)
-    {
-        AjaxResult json = new AjaxResult();
-        json.put("msg", msg);
-        json.put("code", 200);
-        return json;
-    }
-    
-    /**
-     * 返回成功消息
-     * 
-     * @return 成功消息
-     */
-    public static AjaxResult success()
-    {
-        return AjaxResult.success("操作成功");
-    }
-    
-    public static AjaxResult successData(int code, Object value){
-    	 AjaxResult json = new AjaxResult();
-    	 json.put("code", code);
-         json.put("data", value);
-         return json;
-    }
-   
-    
-    /**
-     * 返回成功消息
-     * 
-     * @param key 键值
-     * @param value 内容
-     * @return 成功消息
-     */
-    @Override
-    public AjaxResult put(String key, Object value)
-    {
-        super.put(key, value);
-        return this;
-    }
-}

+ 0 - 84
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/common/domain/ResultTable.java

@@ -1,84 +0,0 @@
-package cn.com.v2.common.domain;
-
-public class ResultTable {
-     /**
-     * 状态码
-     * */
-    private Integer code;
-
-    /**
-     * 提示消息
-     * */
-    private String msg;
-
-    /**
-     * 消息总量
-     * */
-    private Long count;
-
-    /**
-     * 数据对象
-     * */
-    private Object data;
-
-    public Integer getCode() {
-        return code;
-    }
-
-    public void setCode(Integer code) {
-        this.code = code;
-    }
-
-    public String getMsg() {
-        return msg;
-    }
-
-    public void setMsg(String msg) {
-        this.msg = msg;
-    }
-
-    public Long getCount() {
-        return count;
-    }
-
-    public void setCount(Long count) {
-        this.count = count;
-    }
-
-    public Object getData() {
-        return data;
-    }
-
-    public void setData(Object data) {
-        this.data = data;
-    }
-
-    /**
-     * 构 建
-     * */
-    public static ResultTable pageTable(long count,Object data){
-        ResultTable resultTable = new ResultTable();
-        resultTable.setData(data);
-        resultTable.setCode(0);
-        resultTable.setCount(count);
-        if(data!=null) {
-       	 resultTable.setMsg("获取成功");
-       }else {
-       	 resultTable.setMsg("获取失败");
-       }
-        return resultTable;
-    }
-
-    public static ResultTable dataTable(Object data){
-        ResultTable resultTable = new ResultTable();
-        resultTable.setData(data);
-        resultTable.setCode(0);
-        if(data!=null) {
-        	 resultTable.setMsg("获取成功");
-        }else {
-        	 resultTable.setMsg("获取失败");
-        }
-       
-        return resultTable;
-    }
-}

+ 0 - 50
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/common/domain/Tablepar.java

@@ -1,50 +0,0 @@
-package cn.com.v2.common.domain;
-
-/**
- * boostrap table post 参数
- * @author fc
- *
- */
-public class Tablepar {
-	private int page;//页码
-	private int limit;//数量
-	private String orderByColumn;//排序字段
-	private String isAsc;//排序字符 asc desc 
-	private String searchText;//列表table里面的搜索
-
-	public int getPage() {
-		return page;
-	}
-
-	public void setPage(int page) {
-		this.page = page;
-	}
-
-	public int getLimit() {
-		return limit;
-	}
-
-	public void setLimit(int limit) {
-		this.limit = limit;
-	}
-
-	public String getOrderByColumn() {
-		return orderByColumn;
-	}
-	public void setOrderByColumn(String orderByColumn) {
-		this.orderByColumn = orderByColumn;
-	}
-	public String getIsAsc() {
-		return isAsc;
-	}
-	public void setIsAsc(String isAsc) {
-		this.isAsc = isAsc;
-	}
-	public String getSearchText() {
-		return searchText;
-	}
-	public void setSearchText(String searchText) {
-		this.searchText = searchText;
-	}
-
-}

+ 0 - 21
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/common/interceptor/Interceptor.java

@@ -1,21 +0,0 @@
-package cn.com.v2.common.interceptor;
-
-import org.springframework.web.servlet.HandlerInterceptor;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * 拦截器
- */
-public class Interceptor implements HandlerInterceptor {
-    /**
-     * 在请求处理之前进行调用(Controller方法调用之前)
-     */
-	@Override
-    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
-       
-        return true;//如果设置为false时,被请求时,拦截器执行到此处将不会继续操作
-        //如果设置为true时,请求将会继续执行后面的操作
-    }
-
-}

+ 0 - 91
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/common/interceptor/WebMvcConfig.java

@@ -1,91 +0,0 @@
-package cn.com.v2.common.interceptor;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.CorsRegistry;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
-
-import cn.com.v2.common.config.V2Config;
-import cn.hutool.core.util.ArrayUtil;
-
-@Configuration
-public class WebMvcConfig extends WebMvcConfigurationSupport {
- 
-	@Autowired
-	private V2Config v2Config;
-    @Override
-    public void addResourceHandlers(ResourceHandlerRegistry registry) {
-        registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
-        registry.addResourceHandler("error.html").addResourceLocations("classpath:/META-INF/resources/static/error.html");
-        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
-        
-        List<String> list1=new ArrayList<String>();
-        List<String> list2=new ArrayList<String>();
-        
-        Map<String, String> map= v2Config.getXnljmap();
-        
-        Set<String> set = map.keySet();
-        for (String o : set) {
-            list1.add("/"+o+"/**");
-            list2.add(map.get(o));
-        }
-    	registry.addResourceHandler(ArrayUtil.toArray(list1, String.class)).addResourceLocations(ArrayUtil.toArray(list2, String.class));
-    }
-    
-
-    /**
-     * 重写addCorsMappings()解决跨域问题
-     * 配置:允许http请求进行跨域访问
-     *
-     * @param registry
-     */
-    @Override
-    public void addCorsMappings(CorsRegistry registry) {
-    	
-    	// 设置允许多个域名请求
-        //String[] allowDomains = {"http://www.toheart.xin","http://192.168.11.213:8080","http://localhost:8080"};
-    	
-        //指哪些接口URL需要增加跨域设置
-        registry.addMapping("/**")
-                //.allowedOrigins("*")//指的是前端哪些域名被允许跨域
-                .allowedOriginPatterns("*")
-                //需要带cookie等凭证时,设置为true,就会把cookie的相关信息带上
-                .allowCredentials(true)
-                //指的是允许哪些方法
-                .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
-                //cookie的失效时间,单位为秒(s),若设置为-1,则关闭浏览器就失效
-                .maxAge(3600);
-    }
-    
-    /**
-     * 重写addInterceptors()实现拦截器
-     * 配置:要拦截的路径以及不拦截的路径
-     *
-     * @param registry
-     */
-    @Override
-    public void addInterceptors(InterceptorRegistry registry) {
-        //注册Interceptor拦截器(Interceptor这个类是我们自己写的拦截器类)
-        InterceptorRegistration registration = registry.addInterceptor(new Interceptor());
-        //addPathPatterns()方法添加需要拦截的路径
-        //所有路径都被拦截
-        registration.addPathPatterns("/**");
-        //excludePathPatterns()方法添加不拦截的路径
-        
-        
-        String[] excludePatterns = new String[]{"/error","/error.html","/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**",
-                "/api", "/api-docs", "/api-docs/**", "/doc.html/**",
-                "/api/file/*"};
-        
-        //添加不拦截路径
-        registration.excludePathPatterns(excludePatterns);
-    }
- 
-}

+ 0 - 108
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/controller/MybatisGeneratorUtils.java

@@ -1,108 +0,0 @@
-package com.usky.iot.controller;//package com.usky.iot.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;
-
-/**
- * @author yq
- * @date 2021/7/6 11:42
- */
-public class MybatisGeneratorUtils {
-    public static void main(String[] args) {
-
-            shell("service-iot","service-iot-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("han"); //设置作者
-        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.iot");
-        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("sys_dept");  // 逆向工程使用的表   如果要生成多个,这里可以传入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/iot" + "/"
-                        + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
-            }
-        });
-        cfg.setFileOutConfigList(focList);
-        mpg.setCfg(cfg);
-        tc.setXml(null);
-        mpg.setTemplate(tc);
-        //5、执行
-        mpg.execute();
-    }
-}

+ 0 - 87
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/controller/web/ApiController.java

@@ -1,87 +0,0 @@
-package cn.com.v2.controller;
-
-import java.util.HashMap;
-import java.util.Map;
-import javax.servlet.http.HttpServletRequest;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.bind.annotation.RestController;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-
-import cn.com.v2.common.base.BaseController;
-import cn.com.v2.common.domain.AjaxResult;
-import cn.com.v2.model.SysUser;
-import cn.com.v2.service.ISysUserService;
-import cn.com.v2.util.SaTokenUtil;
-import cn.dev33.satoken.stp.StpUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.crypto.SecureUtil;
-import io.swagger.annotations.ApiOperation;
-
-@RestController
-@RequestMapping("/api/goview/sys")
-public class ApiController  extends BaseController {
-	@Autowired
-	private ISysUserService iSysUserService;
-
-	@ApiOperation(value = "登陆", notes = "登陆")
-	@PostMapping("/login")
-	@ResponseBody
-	public AjaxResult APIlogin(@RequestBody SysUser user, HttpServletRequest request) {
-
-		// 判断是否登陆
-		if (StpUtil.isLogin()) {
-
-			Map<String, Object> map = new HashMap<String, Object>();
-			map.put("userinfo", SaTokenUtil.getUser());
-			map.put("token", StpUtil.getTokenInfo());
-			return success().put("data", map);
-		} else {
-			if (StrUtil.isNotBlank(user.getUsername()) && StrUtil.isNotBlank(user.getPassword())) {
-				SysUser sysUser = iSysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, user.getUsername()).eq(SysUser::getPassword, SecureUtil.md5(user.getPassword())).last("LIMIT 1"));
-				if (sysUser != null) {
-					StpUtil.login(sysUser.getId());
-					SaTokenUtil.setUser(sysUser);
-					Map<String, Object> map = new HashMap<String, Object>();
-					map.put("userinfo", sysUser);
-					map.put("token", StpUtil.getTokenInfo());
-
-					return success().put("data", map);
-				} else {
-					return error(500, "账户或者密码错误");
-				}
-			} else {
-				return error(500, "账户密码不能为空");
-			}
-		}
-
-	}
-	
-	
-	@ApiOperation(value = "登陆", notes = "登陆")
-	@GetMapping("/logout")
-	@ResponseBody
-	public AjaxResult logout() {
-
-		// 判断是否登陆
-		StpUtil.logout();
-
-		return success();
-
-	}
-	
-	
-	@ApiOperation(value = "获取oss地址", notes = "获取oss地址")
-	@GetMapping("/getOssInfo")
-	@ResponseBody
-	public AjaxResult getOssInfo() {
-
-		return success();
-
-	}
-
-}

+ 0 - 376
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/controller/web/FileController.java

@@ -1,376 +0,0 @@
-package cn.com.v2.controller;
-
-import java.io.File;
-import java.io.IOException;
-import java.math.BigInteger;
-import java.security.MessageDigest;
-import java.time.LocalDateTime;
-import java.util.Date;
-import java.util.Map;
-import java.util.Map.Entry;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import cn.com.v2.common.base.BaseController;
-import cn.com.v2.common.config.V2Config;
-import cn.com.v2.common.domain.AjaxResult;
-import cn.com.v2.model.SysFile;
-import cn.com.v2.model.vo.SysFileVo;
-import cn.com.v2.service.ISysFileService;
-import cn.com.v2.util.SnowflakeIdWorker;
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.codec.Base64;
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.io.IORuntimeException;
-import cn.hutool.core.util.StrUtil;
-
-/**
- * 文件上传controller
- * @author fuce 
- * @date: 2018年9月16日 下午4:23:50
- */
-@Api(value = "文件上传")
-@RestController
-@RequestMapping("/api/file")
-@Slf4j
-public class FileController extends BaseController{
-
-
-	@Autowired
-	private V2Config v2Config;
-	@Autowired
-	private ISysFileService iSysFileService;
-
-	/**
-	 * 删除文件
-	 * @param ids
-	 * @return
-	 */
-	@ApiOperation(value = "删除", notes = "删除")
-	@DeleteMapping("/remove")
-	public AjaxResult remove(String ids){
-		Boolean b=iSysFileService.removeByIds(StrUtil.split(ids, ',',-1));
-		if(b){
-			return success();
-		}else{
-			return error();
-		}
-	}
-	
-	
-	@ApiOperation(value = "修改", notes = "修改")
-	@PutMapping("/update")
-	public AjaxResult update(String id,@RequestBody MultipartFile object) throws IllegalStateException, IOException{
-		SysFile sysFile=iSysFileService.getById(id);
-		if(sysFile!=null){
-			String fileurl=sysFile.getAbsolutePath()+sysFile.getRelativePath()+File.separator+sysFile.getFileName();
-			object.transferTo(new File(fileurl));
-			return success("修改成功");
-		}else{
-			return error();
-		}
-	}
-
-	/**
-	 * 上传文件
-	 * @param object 文件流对象
-	 * @param bucketName 桶名
-	 * @return
-	 * @throws Exception
-	 */
-	@PostMapping("/upload")
-	public AjaxResult upload(@RequestBody MultipartFile object) throws IOException{
-		String fileName = object.getOriginalFilename();
-		//默认文件格式
-		String suffixName=v2Config.getDefaultFormat();
-		String mediaKey="";
-		Long filesize= object.getSize();
-		//文件名字
-		String fileSuffixName="";
-		if(fileName.lastIndexOf(".")!=-1) {//有后缀
-			 suffixName = fileName.substring(fileName.lastIndexOf(".")).toLowerCase();
-			 //mediaKey=MD5.create().digestHex(fileName);
-			 mediaKey=SnowflakeIdWorker.getUUID();
-			 fileSuffixName=mediaKey+suffixName;
-		}else {//无后缀
-			//取得唯一id
-			 //mediaKey = MD5.create().digestHex(fileName+suffixName);
-			mediaKey=SnowflakeIdWorker.getUUID();
-			//fileSuffixName=mediaKey+suffixName;
-		}
-		String virtualKey=getFirstNotNull(v2Config.getXnljmap());
-		String absolutePath=v2Config.getXnljmap().get(getFirstNotNull(v2Config.getXnljmap()));
-		SysFile sysFile=new SysFile();
-		sysFile.setId(SnowflakeIdWorker.getUUID());
-		sysFile.setFileName(fileSuffixName);
-		sysFile.setFileSize(Integer.parseInt(filesize+""));
-		sysFile.setFileSuffix(suffixName);
-		sysFile.setCreateTime(DateUtil.formatLocalDateTime(LocalDateTime.now()));
-		String filepath=DateUtil.formatDate(new Date());
-		sysFile.setRelativePath(filepath);
-		sysFile.setVirtualKey(virtualKey);
-		sysFile.setAbsolutePath(absolutePath.replace("file:",""));
-		iSysFileService.saveOrUpdate(sysFile);
-		File desc = getAbsoluteFile(v2Config.getFileurl()+File.separator+filepath,fileSuffixName);
-		object.transferTo(desc);
-		SysFileVo sysFileVo=BeanUtil.copyProperties(sysFile, SysFileVo.class);
-		sysFileVo.setFileurl(v2Config.getHttpurl()+sysFile.getVirtualKey()+"/"+sysFile.getRelativePath()+"/"+sysFile.getFileName());
-		return AjaxResult.successData(200, sysFileVo);
-	}
-	
-	
-	/**
-	 * Base64字符串转成图片
-	 * @param str
-	 * @throws IOException 
-	 */
-	@PostMapping("/uploadbase64")
-	public synchronized AjaxResult uploadbase64(String base64str) throws IOException{
-		if(StrUtil.isNotBlank(base64str)){
-			String suffixName=v2Config.getDefaultFormat();
-			String mediaKey=SnowflakeIdWorker.getUUID();
-			String fileSuffixName=mediaKey+suffixName;
-			String virtualKey=getFirstNotNull(v2Config.getXnljmap());
-			String absolutePath=v2Config.getXnljmap().get(getFirstNotNull(v2Config.getXnljmap()));
-			SysFile sysFile=new SysFile();
-			sysFile.setId(SnowflakeIdWorker.getUUID());
-			sysFile.setFileName(fileSuffixName);
-			sysFile.setFileSuffix(suffixName);
-			sysFile.setCreateTime(DateUtil.formatLocalDateTime(LocalDateTime.now()));
-			String filepath=DateUtil.formatDate(new Date());
-			sysFile.setRelativePath(filepath);
-			sysFile.setVirtualKey(virtualKey);
-			sysFile.setAbsolutePath(absolutePath.replace("file:",""));
-			File desc = getAbsoluteFile(v2Config.getFileurl()+File.separator+filepath,fileSuffixName);
-			File file=null;
-			try {
-				 file=Base64.decodeToFile(base64str, desc);
-			} catch (Exception e) {
-				System.out.println("错误base64:"+base64str);
-				e.printStackTrace();
-			}
-			sysFile.setFileSize(Integer.parseInt(file.length()+""));
-			iSysFileService.saveOrUpdate(sysFile);
-			SysFileVo sysFileVo=BeanUtil.copyProperties(sysFile, SysFileVo.class);
-			sysFileVo.setFileurl(v2Config.getHttpurl()+sysFile.getVirtualKey()+"/"+sysFile.getRelativePath()+"/"+sysFile.getFileName());
-			return AjaxResult.successData(200, sysFileVo);
-		}
-		return AjaxResult.error();
-		
-	}
-	
-	
-	/**
-	 * 定制方法
-	 * 根据关键字与相对路径获取文件内容 
-	 * @param key 访问关键字
-	 * @param rpf 相对路径+文件名字
-	 * @return
-	 */
-	@PostMapping("/getFileText")
-	public AjaxResult getFileText(String key,String relativePath){
-		String absolutePath= v2Config.getXnljmap().get(key).replace("file:", "");
-		String fileurl=absolutePath+relativePath;
-		try {
-			String text=FileUtil.readUtf8String(fileurl);
-			return AjaxResult.successData(200, text);
-		}catch (IORuntimeException e) {
-			return AjaxResult.error("没有该文件");
-		}
-		catch (Exception e) {
-			return AjaxResult.error("报错:"+e.getMessage());
-		}
-	}
-	
-	
-	/**
-	 * 定制方法
-	 * 根据关键字与相对路径获取文件内容 
-	 * @param key 访问关键字
-	 * @param rpf 相对路径+文件名字
-	 * @return
-	 * @throws IOException 
-	 */
-	@PostMapping("/getFileText302")
-	public void getFileText302(String key,String relativePath,HttpServletResponse response) throws IOException{
-		String str=v2Config.getHttpurl()+key+"/"+relativePath;
-		response.sendRedirect(str);
-		
-	}
-	
-	
-	
-	
-	/**
-	 * 覆盖上传文件 key与指定路径
-	 * @param object 文件流对象
-	 * @param bucketName 桶名
-	 * @return
-	 * @throws Exception
-	 */
-	@PostMapping("/coverupload")
-	public AjaxResult coverupload(@RequestBody MultipartFile object,String key,String relativePath) throws IOException{
-		
-		String fileName = object.getOriginalFilename();
-		String suffixName=v2Config.getDefaultFormat();
-		Long filesize= object.getSize();
-		//文件名字
-		String fileSuffixName="";
-		if(fileName.lastIndexOf(".")!=-1) {//有后缀
-			 suffixName = fileName.substring(fileName.lastIndexOf(".")).toLowerCase();
-			 //mediaKey=MD5.create().digestHex(fileName);
-			 //mediaKey=SnowflakeIdWorker.getUUID();
-			 fileSuffixName=relativePath.substring(relativePath.lastIndexOf("/")+1,relativePath.length());
-		}else {//无后缀
-			//取得唯一id
-			 //mediaKey = MD5.create().digestHex(fileName+suffixName);
-			//mediaKey=SnowflakeIdWorker.getUUID();
-			//fileSuffixName=mediaKey+suffixName;
-		}
-		String virtualKey=key;
-		String absolutePath=v2Config.getXnljmap().get(key).replace("file:", "");
-		SysFile sysFile=new SysFile();
-		sysFile.setId(SnowflakeIdWorker.getUUID());
-		sysFile.setFileName(fileSuffixName);
-		sysFile.setFileSize(Integer.parseInt(filesize+""));
-		sysFile.setFileSuffix(suffixName);
-		sysFile.setCreateTime(DateUtil.formatLocalDateTime(LocalDateTime.now()));
-		String filepath=relativePath.substring(0,relativePath.lastIndexOf("/"));
-		sysFile.setRelativePath(filepath);
-		sysFile.setVirtualKey(virtualKey);
-		sysFile.setAbsolutePath(absolutePath);
-		iSysFileService.saveOrUpdate(sysFile);
-		File desc = getAbsoluteFile(absolutePath+filepath,fileSuffixName);
-		object.transferTo(desc);
-		SysFileVo sysFileVo=BeanUtil.copyProperties(sysFile, SysFileVo.class);
-		sysFileVo.setFileurl(v2Config.getHttpurl()+sysFile.getVirtualKey()+"/"+sysFile.getRelativePath()+"/"+sysFile.getFileName());
-		return AjaxResult.successData(200, sysFileVo);
-	}
-	
-	
-	
-
-	
-	/**
-	 * 根据文件id查询文件信息json
-	 * @param id
-	 * @return
-	 */
-	@GetMapping("/getFileid/{id}")
-	public AjaxResult getFileid(@PathVariable("id") String id){
-		SysFile sysFile=iSysFileService.getById(id);
-		if(sysFile!=null){
-			SysFileVo sysFileVo=BeanUtil.copyProperties(sysFile, SysFileVo.class);
-			sysFileVo.setFileurl(v2Config.getHttpurl()+sysFile.getVirtualKey()+"/"+sysFile.getRelativePath()+"/"+sysFile.getFileName());
-			return AjaxResult.successData(200, sysFileVo);
-		}
-		return AjaxResult.error("没有该文件");
-		
-	}
-	
-	/**
-	 * 根据文件id 302跳转到绝对地址
-	 * @param id
-	 * @param response
-	 * @throws IOException
-	 */
-	@GetMapping("/getFileid/302/{id}")
-	public void getFileid302(@PathVariable("id") String id,HttpServletResponse response) throws IOException{
-		SysFile sysFile=iSysFileService.getById(id);
-		if(sysFile!=null){
-			String str=v2Config.getHttpurl()+sysFile.getVirtualKey()+"/"+sysFile.getRelativePath()+"/"+sysFile.getFileName();
-			response.sendRedirect(str);
-		}
-	}
-	
-	
-	
-	
-	
-	
-	/**
-	 * 分页查询
-	 * @param current
-	 * @param size
-	 * @return
-	 */
-	@GetMapping("/list")
-	public Object list(long current, long size){
-		Page<SysFile> page= new Page<SysFile>(current, size);
-		IPage<SysFile> sysFile=iSysFileService.page(page, new LambdaQueryWrapper<SysFile>());
-		return sysFile;
-	}
-	
-	
-	
-	
-
-    /**
-     * 获取map中第一个非空数据key
-     *
-     * @param <K> Key的类型
-     * @param <V> Value的类型
-     * @param map 数据源
-     * @return 返回的值
-     */
-    public static <K, V> K getFirstNotNull(Map<K, V> map) {
-        K obj = null;
-        for (Entry<K, V> entry : map.entrySet()) {
-            obj =  entry.getKey();
-            if (obj != null) {
-                break;
-            }
-        }
-        return obj;
-    }
-	
-	
-    public  final static File getAbsoluteFile(String uploadDir, String filename) throws IOException
-    {
-        File desc = new File(uploadDir+File.separator + filename);
-
-        if (!desc.getParentFile().exists())
-        {
-            desc.getParentFile().mkdirs();
-        }
-        if (!desc.exists())
-        {
-            desc.createNewFile();
-        }
-        return desc;
-    }
-	
-	
-	/**
-	 * 获取上传文件的md5
-	 * @param file
-	 * @return
-	 * @throws IOException
-	 */
-	public String getMd5(MultipartFile file) {
-	    try {
-	        //获取文件的byte信息
-	        byte[] uploadBytes = file.getBytes();
-	        // 拿到一个MD5转换器
-	        MessageDigest md5 = MessageDigest.getInstance("MD5");
-	        byte[] digest = md5.digest(uploadBytes);
-	        //转换为16进制
-	        return new BigInteger(1, digest).toString(16);
-	    } catch (Exception e) {
-	        log.error(e.getMessage());
-	    }
-	    return null;
-	}
-
-
-    
-    
-}

+ 0 - 257
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/controller/web/GoviewProjectController.java

@@ -1,257 +0,0 @@
-package cn.com.v2.controller;
-
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import cn.com.v2.common.base.BaseController;
-import cn.com.v2.common.config.V2Config;
-import cn.com.v2.common.domain.AjaxResult;
-import cn.com.v2.common.domain.ResultTable;
-import cn.com.v2.common.domain.Tablepar;
-import cn.com.v2.model.GoviewProject;
-import cn.com.v2.model.GoviewProjectData;
-import cn.com.v2.model.SysFile;
-import cn.com.v2.model.vo.GoviewProjectVo;
-import cn.com.v2.model.vo.SysFileVo;
-import cn.com.v2.service.IGoviewProjectDataService;
-import cn.com.v2.service.IGoviewProjectService;
-import cn.com.v2.service.ISysFileService;
-import cn.com.v2.util.ConvertUtil;
-import cn.com.v2.util.SnowflakeIdWorker;
-import cn.dev33.satoken.annotation.SaCheckPermission;
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.date.DateUtil;
-import io.swagger.annotations.ApiOperation;
-import java.io.File;
-import java.io.IOException;
-import java.time.LocalDateTime;
-import java.util.Date;
-import java.util.List;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.ui.ModelMap;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author fc
- * @since 2023-04-30
- */
-@RestController
-@RequestMapping("/api/goview/project")
-public class GoviewProjectController  extends BaseController{
-	@Autowired
-	private ISysFileService iSysFileService;
-	@Autowired
-	private V2Config v2Config;
-	@Autowired
-	private IGoviewProjectService iGoviewProjectService;
-	@Autowired
-	private IGoviewProjectDataService iGoviewProjectDataService;
-	
-	
-	@ApiOperation(value = "分页跳转", notes = "分页跳转")
-	@GetMapping("/list")
-	@ResponseBody
-	public ResultTable list(Tablepar tablepar){
-		Page<GoviewProject> page= new Page<GoviewProject>(tablepar.getPage(), tablepar.getLimit());
-		IPage<GoviewProject> iPages=iGoviewProjectService.page(page, new LambdaQueryWrapper<GoviewProject>());
-		ResultTable resultTable=new ResultTable();
-		resultTable.setData(iPages.getRecords());
-		resultTable.setCode(200);
-		resultTable.setCount(iPages.getTotal());
-		resultTable.setMsg("获取成功");
-		return resultTable;
-	}
-	
-	
-	/**
-     * 新增保存
-     * @param 
-     * @return
-     */
-	//@Log(title = "项目表新增", action = "111")
-	@ApiOperation(value = "新增", notes = "新增")
-	@PostMapping("/create")
-	@ResponseBody
-	public AjaxResult add(@RequestBody GoviewProject goviewProject){
-		goviewProject.setCreateTime(DateUtil.now());
-		goviewProject.setState(-1);
-		boolean b=iGoviewProjectService.save(goviewProject);
-		if(b){
-			return successData(200, goviewProject).put("msg", "创建成功");
-		}else{
-			return error();
-		}
-	}
-	
-	
-	/**
-	 * 项目表删除
-	 * @param ids
-	 * @return
-	 */
-	//@Log(title = "项目表删除", action = "111")
-	@ApiOperation(value = "删除", notes = "删除")
-	@DeleteMapping("/delete")
-	@ResponseBody
-	public AjaxResult remove(String ids){
-		List<String> lista=ConvertUtil.toListStrArray(ids);
-		Boolean b=iGoviewProjectService.removeByIds(lista);
-		if(b){
-			return success();
-		}else{
-			return error();
-		}
-	}
-	
-	@ApiOperation(value = "修改保存", notes = "修改保存")
-    @PostMapping("/edit")
-    @ResponseBody
-    public AjaxResult editSave(@RequestBody GoviewProject goviewProject)
-    {
-		Boolean b= iGoviewProjectService.updateById(goviewProject);
-        if(b){
-        	return success();
-        }
-        return error();
-    }
-	
-	
-	@ApiOperation(value = "项目重命名", notes = "项目重命名")
-    @PostMapping("/rename")
-    @ResponseBody
-    public AjaxResult rename(@RequestBody GoviewProject goviewProject)
-    {
-		
-		LambdaUpdateWrapper<GoviewProject> updateWrapper=new LambdaUpdateWrapper<GoviewProject>();
-		updateWrapper.eq(GoviewProject::getId, goviewProject.getId());
-		updateWrapper.set(GoviewProject::getProjectName, goviewProject.getProjectName());
-		Boolean b=iGoviewProjectService.update(updateWrapper);
-		if(b){
-        	return success();
-        }
-		return error();
-    }
-	
-	
-	//发布/取消项目状态
-    @PutMapping("/publish")
-	@ResponseBody
-    public AjaxResult updateVisible(@RequestBody GoviewProject goviewProject){
-    	if(goviewProject.getState()==-1||goviewProject.getState()==1) {
-    	
-    		LambdaUpdateWrapper<GoviewProject> updateWrapper=new LambdaUpdateWrapper<GoviewProject>();
-    		updateWrapper.eq(GoviewProject::getId, goviewProject.getId());
-    		updateWrapper.set(GoviewProject::getState, goviewProject.getState());
-    		Boolean b=iGoviewProjectService.update(updateWrapper);
-    		if(b){
-            	return success();
-            }
-    		return error();
-    	}
-    	return error("警告非法字段");
-	}
-	
-    
-    @ApiOperation(value = "获取项目存储数据", notes = "获取项目存储数据")
-	@GetMapping("/getData")
-	@ResponseBody
-    public AjaxResult getData(String projectId, ModelMap map)
-    {
-		GoviewProject goviewProject= iGoviewProjectService.getById(projectId);
-		
-		GoviewProjectData blogText=iGoviewProjectDataService.getProjectid(projectId);
-		if(blogText!=null) {
-			GoviewProjectVo goviewProjectVo=new GoviewProjectVo();
-			BeanUtils.copyProperties(goviewProject,goviewProjectVo);
-			goviewProjectVo.setContent(blogText.getContent());
-			return AjaxResult.successData(200,goviewProjectVo).put("msg","获取成功");
-		}
-		return AjaxResult.successData(200, null).put("msg","无数据");
-        
-    }
-	
-	
-	
-	@ApiOperation(value = "保存项目数据", notes = "保存项目数据")
-	@PostMapping("/save/data")
-	@ResponseBody
-	public AjaxResult saveData(GoviewProjectData data) {
-		
-		GoviewProject goviewProject= iGoviewProjectService.getById(data.getProjectId());
-		if(goviewProject==null) {
-			return error("没有该项目ID");
-		}
-		GoviewProjectData goviewProjectData= iGoviewProjectDataService.getOne(new LambdaQueryWrapper<GoviewProjectData>().eq(GoviewProjectData::getProjectId, goviewProject.getId()));
-		if(goviewProjectData!=null) {
-			 data.setId(goviewProjectData.getId());
-			 iGoviewProjectDataService.updateById(data);
-			 return success("数据保存成功");
-		}else {
-			iGoviewProjectDataService.save(data);
-			return success("数据保存成功");
-		}
-	}
-	
-	/**
-	 * 上传文件
-	 * @param object 文件流对象
-	 * @param bucketName 桶名
-	 * @return
-	 * @throws Exception
-	 */
-	@PostMapping("/upload")
-	public AjaxResult upload(@RequestBody MultipartFile object) throws IOException{
-		String fileName = object.getOriginalFilename();
-		//默认文件格式
-		String suffixName=v2Config.getDefaultFormat();
-		String mediaKey="";
-		Long filesize= object.getSize();
-		//文件名字
-		String fileSuffixName="";
-		if(fileName.lastIndexOf(".")!=-1) {//有后缀
-			 suffixName = fileName.substring(fileName.lastIndexOf(".")).toLowerCase();
-			 //mediaKey=MD5.create().digestHex(fileName);
-			 mediaKey=SnowflakeIdWorker.getUUID();
-			 fileSuffixName=mediaKey+suffixName;
-		}else {//无后缀
-			//取得唯一id
-			 //mediaKey = MD5.create().digestHex(fileName+suffixName);
-			mediaKey=SnowflakeIdWorker.getUUID();
-			//fileSuffixName=mediaKey+suffixName;
-		}
-		String virtualKey=FileController.getFirstNotNull(v2Config.getXnljmap());
-		String absolutePath=v2Config.getXnljmap().get(FileController.getFirstNotNull(v2Config.getXnljmap()));
-		SysFile sysFile=new SysFile();
-		sysFile.setId(SnowflakeIdWorker.getUUID());
-		sysFile.setFileName(fileSuffixName);
-		sysFile.setFileSize(Integer.parseInt(filesize+""));
-		sysFile.setFileSuffix(suffixName);
-		sysFile.setCreateTime(DateUtil.formatLocalDateTime(LocalDateTime.now()));
-		String filepath=DateUtil.formatDate(new Date());
-		sysFile.setRelativePath(filepath);
-		sysFile.setVirtualKey(virtualKey);
-		sysFile.setAbsolutePath(absolutePath.replace("file:",""));
-		iSysFileService.saveOrUpdate(sysFile);
-		File desc = FileController.getAbsoluteFile(v2Config.getFileurl()+File.separator+filepath,fileSuffixName);
-		object.transferTo(desc);
-		SysFileVo sysFileVo=BeanUtil.copyProperties(sysFile, SysFileVo.class);
-		sysFileVo.setFileurl(v2Config.getHttpurl()+sysFile.getVirtualKey()+"/"+sysFile.getRelativePath()+"/"+sysFile.getFileName());
-		return successData(200, sysFileVo);
-	}
-	
-
-}

+ 0 - 21
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/controller/web/Indexcontroller.java

@@ -1,21 +0,0 @@
-package cn.com.v2.controller;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-@RestController
-public class Indexcontroller {
-
-	@GetMapping("/")
-	public void index(HttpServletResponse response) throws IOException {
-		response.setContentType("text/html; charset=utf-8");
-		PrintWriter out = response.getWriter();
-		out.println("<p style='color:orange'>goview后台首页</p>");
-		out.flush();
-		out.close();
-
-	}
-}

+ 0 - 20
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/controller/web/SysUserController.java

@@ -1,20 +0,0 @@
-package cn.com.v2.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.stereotype.Controller;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author fc
- * @since 2023-04-30
- */
-@RestController
-@RequestMapping("/v2/sys-user")
-public class SysUserController {
-
-}

+ 0 - 16
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/mapper/GoviewProjectDataMapper.java

@@ -1,16 +0,0 @@
-package cn.com.v2.mapper;
-
-import cn.com.v2.model.GoviewProjectData;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * <p>
- *  Mapper 接口
- * </p>
- *
- * @author fc
- * @since 2023-04-30
- */
-public interface GoviewProjectDataMapper extends BaseMapper<GoviewProjectData> {
-
-}

+ 0 - 16
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/mapper/GoviewProjectMapper.java

@@ -1,16 +0,0 @@
-package cn.com.v2.mapper;
-
-import cn.com.v2.model.GoviewProject;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * <p>
- *  Mapper 接口
- * </p>
- *
- * @author fc
- * @since 2023-04-30
- */
-public interface GoviewProjectMapper extends BaseMapper<GoviewProject> {
-
-}

+ 0 - 17
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/mapper/SysFileMapper.java

@@ -1,17 +0,0 @@
-package cn.com.v2.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-import cn.com.v2.model.SysFile;
-
-/**
- * <p>
- *  Mapper 接口
- * </p>
- *
- * @author fc
- * @since 2022-12-22
- */
-public interface SysFileMapper extends BaseMapper<SysFile> {
-
-}

+ 0 - 16
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/mapper/SysUserMapper.java

@@ -1,16 +0,0 @@
-package cn.com.v2.mapper;
-
-import cn.com.v2.model.SysUser;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * <p>
- *  Mapper 接口
- * </p>
- *
- * @author fc
- * @since 2023-04-30
- */
-public interface SysUserMapper extends BaseMapper<SysUser> {
-
-}

+ 0 - 48
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/model/GoviewProject.java

@@ -1,48 +0,0 @@
-package cn.com.v2.model;
-
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * <p>
- * 
- * </p>
- *
- * @author fc
- * @since 2023-04-30
- */
-@TableName("t_goview_project")
-@Data
-public class GoviewProject implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-    
-    @TableId(type = IdType.ASSIGN_ID)
-    private String id;
-
-    private String projectName;
-
-    private Integer state;
-
-    @TableField(fill = FieldFill.INSERT)
-    private String createTime;
-
-    private String createUserId;
-
-    private Integer isDelete;
-
-    private String indexImage;
-
-    private String remarks;
-
-}
-
-
-

+ 0 - 39
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/model/GoviewProjectData.java

@@ -1,39 +0,0 @@
-package cn.com.v2.model;
-
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import java.io.Serializable;
-import java.sql.Blob;
-import java.sql.SQLException;
-
-/**
- * <p>
- * 
- * </p>
- *
- * @author fc
- * @since 2023-04-30
- */
-@TableName("t_goview_project_data")
-@Data
-public class GoviewProjectData implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-    @TableId(type = IdType.ASSIGN_ID)
-    private String id;
-
-    private String projectId;
-
-    @TableField(fill = FieldFill.INSERT)
-    private String createTime;
-
-    private String createUserId;
-
-    private String content;
-
-   
-}

+ 0 - 119
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/model/SysFile.java

@@ -1,119 +0,0 @@
-package cn.com.v2.model;
-
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-
-/**
- * <p>
- * 
- * </p>
- *
- * @author fc
- * @since 2022-12-22
- */
-@TableName("t_sys_file")
-public class SysFile implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @TableId(value = "id", type = IdType.INPUT)
-    private String id;
-
-    private String fileName;
-
-    private Integer fileSize;
-
-    private String fileSuffix;
-    
-    /**
-     * 虚拟路径
-     */
-    private String virtualKey;
-    
-    /**
-     * 相对路径
-     */
-    private String relativePath;
-    
-    /**
-     * 绝对路径
-     */
-    private String absolutePath;
-    
-    
-    
-    
-    @TableField(fill = FieldFill.INSERT)
-    private String createTime;
-
-    public String getId() {
-        return id;
-    }
-
-    public void setId(String id) {
-        this.id = id;
-    }
-    public String getFileName() {
-        return fileName;
-    }
-
-    public void setFileName(String fileName) {
-        this.fileName = fileName;
-    }
-   
-    public Integer getFileSize() {
-        return fileSize;
-    }
-
-    public void setFileSize(Integer fileSize) {
-        this.fileSize = fileSize;
-    }
-    public String getFileSuffix() {
-        return fileSuffix;
-    }
-
-    public void setFileSuffix(String fileSuffix) {
-        this.fileSuffix = fileSuffix;
-    }
-    public String getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(String createTime) {
-        this.createTime = createTime;
-    }
-    
-
-	public String getVirtualKey() {
-		return virtualKey;
-	}
-
-	public void setVirtualKey(String virtualKey) {
-		this.virtualKey = virtualKey;
-	}
-
-	public String getAbsolutePath() {
-		return absolutePath;
-	}
-
-	public void setAbsolutePath(String absolutePath) {
-		this.absolutePath = absolutePath;
-	}
-
-	public String getRelativePath() {
-		return relativePath;
-	}
-
-	public void setRelativePath(String relativePath) {
-		this.relativePath = relativePath;
-	}
-
-
-
-	
-	
-}

+ 0 - 39
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/model/SysUser.java

@@ -1,39 +0,0 @@
-package cn.com.v2.model;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * <p>
- * 
- * </p>
- *
- * @author fc
- * @since 2023-04-30
- */
-@TableName("t_sys_user")
-@Data
-public class SysUser implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @TableId(type = IdType.ASSIGN_ID)
-    private String id;
-
-    private String username;
-
-    private String password;
-
-    private String nickname;
-
-    private Integer depId;
-
-    private String posId;
-
- 
-}

+ 0 - 119
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/model/vo/GoviewProjectVo.java

@@ -1,119 +0,0 @@
-package cn.com.v2.model.vo;
-
-import java.io.Serializable;
-import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import cn.hutool.core.date.DateUtil;
-import io.swagger.annotations.ApiModelProperty;
-
-public class GoviewProjectVo implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-	
-	@ApiModelProperty(value = "主键")
-	private String id;
-	
-	@ApiModelProperty(value = "项目名称")
-	private String projectName;
-	
-	@ApiModelProperty(value = "项目状态[-1未发布,1发布]")
-	private Integer state;
-	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
-	@ApiModelProperty(value = "创建时间")
-	private Date createTime;
-	
-	@ApiModelProperty(value = "创建人id")
-	private String createUserId;
-	
-	@ApiModelProperty(value = "删除状态[1删除,-1未删除]")
-	private Integer isDelete;
-	
-	@ApiModelProperty(value = "首页图片")
-	private String indexImage;
-	
-	@ApiModelProperty(value = "项目介绍")
-	private String remarks;
-	
-	private String content;
-	
-	
-	@JsonProperty("id")
-	public String getId() {
-		return id;
-	}
-
-	public void setId(String id) {
-		this.id =  id;
-	}
-	@JsonProperty("projectName")
-	public String getProjectName() {
-		return projectName;
-	}
-
-	public void setProjectName(String projectName) {
-		this.projectName =  projectName;
-	}
-	@JsonProperty("state")
-	public Integer getState() {
-		return state;
-	}
-
-	public void setState(Integer state) {
-		this.state =  state;
-	}
-	@JsonProperty("createTime")
-	public Date getCreateTime() {
-		return createTime;
-	}
-
-	public void setCreateTime(Date createTime) {
-		this.createTime =  createTime;
-	}
-	@JsonProperty("createUserId")
-	public String getCreateUserId() {
-		return createUserId;
-	}
-
-	public void setCreateUserId(String createUserId) {
-		this.createUserId =  createUserId;
-	}
-	@JsonProperty("isDelete")
-	public Integer getIsDelete() {
-		return isDelete;
-	}
-
-	public void setIsDelete(Integer isDelete) {
-		this.isDelete =  isDelete;
-	}
-	@JsonProperty("indexImage")
-	public String getIndexImage() {
-		return indexImage;
-	}
-
-	public void setIndexImage(String indexImage) {
-		this.indexImage =  indexImage;
-	}
-	@JsonProperty("remarks")
-	public String getRemarks() {
-		return remarks;
-	}
-
-	public void setRemarks(String remarks) {
-		this.remarks =  remarks;
-	}
-	public String getContent() {
-		return content;
-	}
-
-	public void setContent(String content) {
-		this.content = content;
-	}
-
-	public String dateToStringConvert(Date date) {
-		if(date!=null) {
-			return DateUtil.format(date, "yyyy-MM-dd HH:mm:ss");
-		}
-		return "";
-	}
-}

+ 0 - 70
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/model/vo/SysFileVo.java

@@ -1,70 +0,0 @@
-package cn.com.v2.model.vo;
-
-
-public class SysFileVo {
-	
-    private String id;
-    private String fileName;
-    private Integer fileSize;
-    private String createTime;
-    
-    /**
-     * 相对路径
-     */
-    private String relativePath;
-    
-    /**
-     * 虚拟路径key
-     */
-    private String virtualKey;
-    
-    /**
-     * 请求url
-     */
-    private String fileurl;
-    
-    
-	public String getId() {
-		return id;
-	}
-	public void setId(String id) {
-		this.id = id;
-	}
-	public String getFileName() {
-		return fileName;
-	}
-	public void setFileName(String fileName) {
-		this.fileName = fileName;
-	}
-	public Integer getFileSize() {
-		return fileSize;
-	}
-	public void setFileSize(Integer fileSize) {
-		this.fileSize = fileSize;
-	}
-	public String getCreateTime() {
-		return createTime;
-	}
-	public void setCreateTime(String createTime) {
-		this.createTime = createTime;
-	}
-	public String getRelativePath() {
-		return relativePath;
-	}
-	public void setRelativePath(String relativePath) {
-		this.relativePath = relativePath;
-	}
-	public String getVirtualKey() {
-		return virtualKey;
-	}
-	public void setVirtualKey(String virtualKey) {
-		this.virtualKey = virtualKey;
-	}
-	public String getFileurl() {
-		return fileurl;
-	}
-	public void setFileurl(String fileurl) {
-		this.fileurl = fileurl;
-	}
-	
-}

+ 0 - 18
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/service/IGoviewProjectDataService.java

@@ -1,18 +0,0 @@
-package cn.com.v2.service;
-
-import cn.com.v2.model.GoviewProjectData;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * <p>
- *  服务类
- * </p>
- *
- * @author fc
- * @since 2023-04-30
- */
-public interface IGoviewProjectDataService extends IService<GoviewProjectData> {
-	
-	public GoviewProjectData getProjectid(String projectId);
-
-}

+ 0 - 16
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/service/IGoviewProjectService.java

@@ -1,16 +0,0 @@
-package cn.com.v2.service;
-
-import cn.com.v2.model.GoviewProject;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * <p>
- *  服务类
- * </p>
- *
- * @author fc
- * @since 2023-04-30
- */
-public interface IGoviewProjectService extends IService<GoviewProject> {
-
-}

+ 0 - 18
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/service/ISysFileService.java

@@ -1,18 +0,0 @@
-package cn.com.v2.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import cn.com.v2.model.SysFile;
-
-/**
- * <p>
- *  服务类
- * </p>
- *
- * @author fc
- * @since 2022-12-22
- */
-public interface ISysFileService extends IService<SysFile> {
-
-	
-	public SysFile selectByExamplefileName(String filename);
-}

+ 0 - 16
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/service/ISysUserService.java

@@ -1,16 +0,0 @@
-package cn.com.v2.service;
-
-import cn.com.v2.model.SysUser;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * <p>
- *  服务类
- * </p>
- *
- * @author fc
- * @since 2023-04-30
- */
-public interface ISysUserService extends IService<SysUser> {
-
-}

+ 0 - 33
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/service/impl/GoviewProjectDataServiceImpl.java

@@ -1,33 +0,0 @@
-package cn.com.v2.service.impl;
-
-import cn.com.v2.model.GoviewProjectData;
-import cn.com.v2.mapper.GoviewProjectDataMapper;
-import cn.com.v2.service.IGoviewProjectDataService;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- *  服务实现类
- * </p>
- *
- * @author fc
- * @since 2023-04-30
- */
-@Service
-public class GoviewProjectDataServiceImpl extends ServiceImpl<GoviewProjectDataMapper, GoviewProjectData> implements IGoviewProjectDataService {
-	@Autowired
-	GoviewProjectDataMapper dataMapper;
-	@Override
-	public GoviewProjectData getProjectid(String projectId) {
-		LambdaQueryWrapper<GoviewProjectData> lambdaQueryWrapper=new LambdaQueryWrapper<GoviewProjectData>();
-		lambdaQueryWrapper.eq(GoviewProjectData::getProjectId, projectId);
-		return dataMapper.selectOne(lambdaQueryWrapper);
-		
-	}
-
-}

+ 0 - 20
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/service/impl/GoviewProjectServiceImpl.java

@@ -1,20 +0,0 @@
-package cn.com.v2.service.impl;
-
-import cn.com.v2.model.GoviewProject;
-import cn.com.v2.mapper.GoviewProjectMapper;
-import cn.com.v2.service.IGoviewProjectService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- *  服务实现类
- * </p>
- *
- * @author fc
- * @since 2023-04-30
- */
-@Service
-public class GoviewProjectServiceImpl extends ServiceImpl<GoviewProjectMapper, GoviewProject> implements IGoviewProjectService {
-
-}

+ 0 - 30
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/service/impl/SysFileServiceImpl.java

@@ -1,30 +0,0 @@
-package cn.com.v2.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import cn.com.v2.mapper.SysFileMapper;
-import cn.com.v2.model.SysFile;
-import cn.com.v2.service.ISysFileService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- *  服务实现类
- * </p>
- *
- * @author fc
- * @since 2022-12-22
- */
-@Service
-public class SysFileServiceImpl extends ServiceImpl<SysFileMapper, SysFile> implements ISysFileService {
-	@Autowired
-	private SysFileMapper sysFileMapper;
-	
-	@Override
-	public SysFile selectByExamplefileName(String filename) {
-		SysFile sysFile=sysFileMapper.selectOne(new LambdaQueryWrapper<SysFile>().eq(SysFile::getFileName, filename));
-        return sysFile;
-	}
-
-}

+ 0 - 20
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/service/impl/SysUserServiceImpl.java

@@ -1,20 +0,0 @@
-package cn.com.v2.service.impl;
-
-import cn.com.v2.model.SysUser;
-import cn.com.v2.mapper.SysUserMapper;
-import cn.com.v2.service.ISysUserService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- *  服务实现类
- * </p>
- *
- * @author fc
- * @since 2023-04-30
- */
-@Service
-public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService {
-
-}

+ 0 - 252
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/util/ConvertUtil.java

@@ -1,252 +0,0 @@
-package cn.com.v2.util;
-
-import cn.hutool.core.util.StrUtil;
-import java.math.BigDecimal;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * 类型转换器
- * 
- * @author fc
- * 
- */
-public class ConvertUtil {
-
-	/**
-	 * 转换为字符串<br>
-	 * 如果给定的值为null,或者转换失败,返回默认值<br>
-	 * 转换失败不会报错
-	 * 
-	 * @param value 被转换的值
-	 * @param defaultValue 转换错误时的默认值
-	 * @return 结果
-	 */
-	public static String toStr(Object value, String defaultValue) {
-		if (null == value) {
-			return defaultValue;
-		}
-		if (value instanceof String) {
-			return (String) value;
-		}
-		return value.toString();
-	}
-
-	/**
-	 * 转换为Integer数组<br>
-	 * @param split 被转换的值
-	 * @return 结果
-	 */
-	public static Integer[] toIntArray(String str) {
-		return toIntArray(",", str);
-	}
-
-	/**
-	 * 转换为Integer数组<br>
-	 * @param split 分隔符
-	 * @param split 被转换的值
-	 * @return 结果
-	 */
-	public static Integer[] toIntArray(String split, String str) {
-		if (StrUtil.isEmpty(str)) {
-			return new Integer[] {};
-		}
-		String[] strings = str.split(split);
-		final Integer[] ints = new Integer[strings.length];
-		for (int i = 0; i < strings.length; i++) {
-			final Integer v = toInt(strings[i], 0);
-			ints[i] = v;
-		}
-		return ints;
-	}
-
-	/**
-	 * 转换为int<br>
-	 * 如果给定的值为空,或者转换失败,返回默认值<br>
-	 * 转换失败不会报错
-	 * @param value 被转换的值
-	 * @param defaultValue 转换错误时的默认值
-	 * @return 结果
-	 */
-	public static Integer toInt(Object value, Integer defaultValue) {
-		if (value == null) {
-			return defaultValue;
-		}
-		if (value instanceof Integer) {
-			return (Integer) value;
-		}
-		if (value instanceof Number) {
-			return ((Number) value).intValue();
-		}
-		final String valueStr = toStr(value, null);
-		if (StrUtil.isEmpty(valueStr)) {
-			return defaultValue;
-		}
-		try {
-			return Integer.parseInt(valueStr.trim());
-		} catch (Exception e) {
-			return defaultValue;
-		}
-	}
-
-	/**
-	 * 转换为List<String>数组<br>
-	 * @param split 被转换的值
-	 * @return 结果
-	 */
-	public static List<String> toListStrArray(String str) {
-		String[] stringArray = toStrArray(str);
-		List<String> stringB = Arrays.asList(stringArray);
-		return stringB;
-	}
-
-
-
-	/**
-	 * 转换为List<Long>数组<br>
-	 * @param split 被转换的值
-	 * @return 结果
-	 */
-	public static List<Long> toListLongArray(String str) {
-		Long[] stringArray = toLongArray(str);
-		List<Long> stringB = Arrays.asList(stringArray);
-		return stringB;
-	}
-
-
-	/**
-	 * 转换为String数组<br> 
-	 * @param split 被转换的值
-	 * @return 结果
-	 */
-	public static String[] toStrArray(String str) {
-		return toStrArray(",", str);
-	}
-
-	/**
-	 * 转换为String数组<br>
-	 * 
-	 * @param split 分隔符
-	 * @param split 被转换的值
-	 * @return 结果
-	 */
-	public static String[] toStrArray(String split, String str) {
-		return str.split(split);
-	}
-	/**
-     * 转换为Long数组<br>
-     * 
-     * @param split 被转换的值
-     * @return 结果
-     */
-    public static Long[] toLongArray(String str)
-    {
-        return toLongArray(",", str);
-    }
-    /**
-     * 转换为Long数组<br>
-     * 
-     * @param isIgnoreConvertError 是否忽略转换错误,忽略则给值null
-     * @param values 被转换的值
-     * @return 结果
-     */
-    public static Long[] toLongArray(String split, String str)
-    {
-        if (StrUtil.isEmpty(str))
-        {
-            return new Long[] {};
-        }
-        String[] arr = str.split(split);
-        final Long[] longs = new Long[arr.length];
-        for (int i = 0; i < arr.length; i++)
-        {
-            final Long v = toLong(arr[i], null);
-            longs[i] = v;
-        }
-        return longs;
-    }
-    /**
-     * 转换为long<br>
-     * 如果给定的值为空,或者转换失败,返回默认值<br>
-     * 转换失败不会报错
-     * 
-     * @param value 被转换的值
-     * @param defaultValue 转换错误时的默认值
-     * @return 结果
-     */
-    public static Long toLong(Object value, Long defaultValue)
-    {
-        if (value == null)
-        {
-            return defaultValue;
-        }
-        if (value instanceof Long)
-        {
-            return (Long) value;
-        }
-        if (value instanceof Number)
-        {
-            return ((Number) value).longValue();
-        }
-        final String valueStr = toStr(value, null);
-        if (StrUtil.isEmpty(valueStr))
-        {
-            return defaultValue;
-        }
-        try
-        {
-            // 支持科学计数法
-            return new BigDecimal(valueStr.trim()).longValue();
-        }
-        catch (Exception e)
-        {
-            return defaultValue;
-        }
-    }
-    
-    /**
-     * 转换为BigDecimal<br>
-     * 如果给定的值为空,或者转换失败,返回默认值<br>
-     * 转换失败不会报错
-     * 
-     * @param value 被转换的值
-     * @param defaultValue 转换错误时的默认值
-     * @return 结果
-     */
-    public static BigDecimal toBigDecimal(Object value, BigDecimal defaultValue)
-    {
-        if (value == null)
-        {
-            return defaultValue;
-        }
-        if (value instanceof BigDecimal)
-        {
-            return (BigDecimal) value;
-        }
-        if (value instanceof Long)
-        {
-            return new BigDecimal((Long) value);
-        }
-        if (value instanceof Double)
-        {
-            return new BigDecimal((Double) value);
-        }
-        if (value instanceof Integer)
-        {
-            return new BigDecimal((Integer) value);
-        }
-        final String valueStr = toStr(value, null);
-        if (StrUtil.isEmpty(valueStr))
-        {
-            return defaultValue;
-        }
-        try
-        {
-            return new BigDecimal(valueStr);
-        }
-        catch (Exception e)
-        {
-            return defaultValue;
-        }
-    }
-}

+ 0 - 39
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/util/MybatisPlusGenerator.java

@@ -1,39 +0,0 @@
-package cn.com.v2.util;
-
-import java.util.Collections;
-
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.generator.FastAutoGenerator;
-import com.baomidou.mybatisplus.generator.config.*;
-import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
-import com.baomidou.mybatisplus.generator.fill.Column;
-
-
-public class MybatisPlusGenerator {
-	public static void main(String[] args) {
-		FastAutoGenerator.create(
-				"jdbc:sqlite:D:\\eclipse-workspace\\v2-goview-bate\\sqllite\\goview.db",
-				"", "").globalConfig(builder -> {
-					builder.author("fc") // 设置作者
-							// .enableSwagger() // 开启 swagger 模式
-							.fileOverride() // 覆盖已生成文件
-							.disableOpenDir() //禁止打开输出目录
-							.outputDir(System.getProperty("user.dir") + "/src/main/java"); // 指定输出目录
-				}).packageConfig(builder -> {
-					builder.parent("cn.com") // 设置父包名
-							.moduleName("v2") // 设置父包模块名
-							.entity("model")
-							// .service() // 设置自定义service路径,不设置就是默认路径
-							.pathInfo(Collections.singletonMap(OutputFile.mapperXml,
-							System.getProperty("user.dir") + "/src/main/resources/mapper/")); // 设置mapperXml生成路径
-				}).strategyConfig(builder -> {
-					builder.addInclude("t_goview_project_data") // 设置需要生成的表名
-							.addTablePrefix("t_", "c_")
-							// 设置自动填充的时间字段
-							.entityBuilder().addTableFills(new Column("create_time", FieldFill.INSERT),
-							new Column("update_time", FieldFill.INSERT_UPDATE)); // 设置过滤表前缀
-
-				}).templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
-				.execute();
-	}
-}

+ 0 - 74
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/util/SaTokenUtil.java

@@ -1,74 +0,0 @@
-package cn.com.v2.util;
-
-
-import org.springframework.beans.BeanUtils;
-
-import cn.com.v2.model.SysUser;
-import cn.dev33.satoken.stp.StpUtil;
-
-/**
- * 封装 Sa-Token 常用操作 
- * @author kong
- *
- */
-public class SaTokenUtil {
-
-	/**
-     * 获取登录用户model
-     */
-    public static SysUser getUser() {
-    	Object object=StpUtil.getSession().get("user");
-    	if(object!=null){
-    		SysUser tsysUser=new SysUser();
-    		BeanUtils.copyProperties(tsysUser, object);
-    		return tsysUser;
-    	}
-    	return null;
-    }
-    
-    /**
-     * set用户
-     */
-    public static void setUser(SysUser user) {
-    	StpUtil.getSession().set("user", user);
-    }
-
-  /**
-   * 获取登录用户id
-   */
-	public static String getUserId() {
-		return StpUtil.getLoginIdAsString();
-	}
-    
-    /**
-     * 获取登录用户name
-     */
-    public static String getLoginName() {
-    	SysUser tsysUser = getUser();
-        if (tsysUser == null){
-            throw new RuntimeException("用户不存在!");
-        }
-        return tsysUser.getUsername();
-    }
-
-    /**
-     * 获取登录用户ip
-     * @return
-     * @author fuce
-     * @Date 2019年11月21日 上午9:58:26
-     */
-    public static String getIp() {
-    	
-        return StpUtil.getTokenSession().getString("login_ip");
-    }
-    /**
-     * 判断是否登录
-     * @return
-     * @author fuce
-     * @Date 2019年11月21日 上午9:58:26
-     */
-    public static boolean isLogin() {
-        return StpUtil.isLogin();
-    }
-    
-}

+ 0 - 155
service-cockpit/service-cockpit-biz/src/main/java/com/usky/cockpit/util/SnowflakeIdWorker.java

@@ -1,155 +0,0 @@
-package cn.com.v2.util;
-
-/**
- * Twitter_Snowflake<br>
- * SnowFlake的结构如下(每部分用-分开):<br>
- * 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000 <br>
- * 1位标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0<br>
- * 41位时间截(毫秒级),注意,41位时间截不是存储当前时间的时间截,而是存储时间截的差值(当前时间截 - 开始时间截)
- * 得到的值),这里的的开始时间截,一般是我们的id生成器开始使用的时间,由我们程序来指定的(如下下面程序IdWorker类的startTime属性)。41位的时间截,可以使用69年,年T = (1L << 41) / (1000L * 60 * 60 * 24 * 365) = 69<br>
- * 10位的数据机器位,可以部署在1024个节点,包括5位datacenterId和5位workerId<br>
- * 12位序列,毫秒内的计数,12位的计数顺序号支持每个节点每毫秒(同一机器,同一时间截)产生4096个ID序号<br>
- * 加起来刚好64位,为一个Long型。<br>
- * SnowFlake的优点是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由数据中心ID和机器ID作区分),并且效率较高,经测试,SnowFlake每秒能够产生26万ID左右。
- */
-public class SnowflakeIdWorker {
- 
-    // ==============================Fields===========================================
-    /** 开始时间截 (2015-01-01) */
-    private final long twepoch = 1489111610226L;
- 
-    /** 机器id所占的位数 */
-    private final long workerIdBits = 5L;
- 
-    /** 数据标识id所占的位数 */
-    private final long dataCenterIdBits = 5L;
- 
-    /** 支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数) */
-    private final long maxWorkerId = -1L ^ (-1L << workerIdBits);
- 
-    /** 支持的最大数据标识id,结果是31 */
-    private final long maxDataCenterId = -1L ^ (-1L << dataCenterIdBits);
- 
-    /** 序列在id中占的位数 */
-    private final long sequenceBits = 12L;
- 
-    /** 机器ID向左移12位 */
-    private final long workerIdShift = sequenceBits;
- 
-    /** 数据标识id向左移17位(12+5) */
-    private final long dataCenterIdShift = sequenceBits + workerIdBits;
- 
-    /** 时间截向左移22位(5+5+12) */
-    private final long timestampLeftShift = sequenceBits + workerIdBits + dataCenterIdBits;
- 
-    /** 生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095) */
-    private final long sequenceMask = -1L ^ (-1L << sequenceBits);
- 
-    /** 工作机器ID(0~31) */
-    private long workerId;
- 
-    /** 数据中心ID(0~31) */
-    private long dataCenterId;
- 
-    /** 毫秒内序列(0~4095) */
-    private long sequence = 0L;
- 
-    /** 上次生成ID的时间截 */
-    private long lastTimestamp = -1L;
- 
-    
-    static SnowflakeIdWorker idWorker = new SnowflakeIdWorker(1, 1);
-    //==============================Constructors=====================================
-    /**
-     * 构造函数
-     * @param workerId 工作ID (0~31)
-     * @param dataCenterId 数据中心ID (0~31)
-     */
-    public SnowflakeIdWorker(long workerId, long dataCenterId) {
-        if (workerId > maxWorkerId || workerId < 0) {
-            throw new IllegalArgumentException(String.format("workerId can't be greater than %d or less than 0", maxWorkerId));
-        }
-        if (dataCenterId > maxDataCenterId || dataCenterId < 0) {
-            throw new IllegalArgumentException(String.format("dataCenterId can't be greater than %d or less than 0", maxDataCenterId));
-        }
-        this.workerId = workerId;
-        this.dataCenterId = dataCenterId;
-    }
- 
-    // ==============================Methods==========================================
-    /**
-     * 获得下一个ID (该方法是线程安全的)
-     * @return SnowflakeId
-     */
-    public synchronized long nextId() {
-        long timestamp = timeGen();
- 
-        //如果当前时间小于上一次ID生成的时间戳,说明系统时钟回退过这个时候应当抛出异常
-        if (timestamp < lastTimestamp) {
-            throw new RuntimeException(
-                    String.format("Clock moved backwards.  Refusing to generate id for %d milliseconds", lastTimestamp - timestamp));
-        }
- 
-        //如果是同一时间生成的,则进行毫秒内序列
-        if (lastTimestamp == timestamp) {
-            sequence = (sequence + 1) & sequenceMask;
-            //毫秒内序列溢出
-            if (sequence == 0) {
-                //阻塞到下一个毫秒,获得新的时间戳
-                timestamp = tilNextMillis(lastTimestamp);
-            }
-        }
-        //时间戳改变,毫秒内序列重置
-        else {
-            sequence = 0L;
-        }
- 
-        //上次生成ID的时间截
-        lastTimestamp = timestamp;
- 
-        //移位并通过或运算拼到一起组成64位的ID
-        return ((timestamp - twepoch) << timestampLeftShift) //
-                | (dataCenterId << dataCenterIdShift) //
-                | (workerId << workerIdShift) //
-                | sequence;
-    }
- 
-    /**
-     * 阻塞到下一个毫秒,直到获得新的时间戳
-     * @param lastTimestamp 上次生成ID的时间截
-     * @return 当前时间戳
-     */
-    protected long tilNextMillis(long lastTimestamp) {
-        long timestamp = timeGen();
-        while (timestamp <= lastTimestamp) {
-            timestamp = timeGen();
-        }
-        return timestamp;
-    }
- 
-    /**
-     * 返回以毫秒为单位的当前时间
-     * @return 当前时间(毫秒)
-     */
-    protected long timeGen() {
-        return System.currentTimeMillis();
-    }
- 
-    //==============================Test=============================================
-    /** 测试 */
-    public static void main(String[] args) {
-        System.out.println(System.currentTimeMillis());
-        SnowflakeIdWorker idWorker = new SnowflakeIdWorker(1, 1);
-        long startTime = System.nanoTime();
-        for (int i = 0; i < 500; i++) {
-            long id = idWorker.nextId();
-            System.out.println(id);
-        }
-        System.out.println((System.nanoTime()-startTime)/1000000+"ms");
-    }
-    
-    public static String getUUID() {
-    	long id = idWorker.nextId();
-    	return String.valueOf(id);
-    }
-}

+ 0 - 16
service-cockpit/service-cockpit-biz/src/main/resources/application-dev.yml

@@ -1,16 +0,0 @@
-#dev环境  mysql7.0
-spring:
-  datasource:
-    driver-class-name: org.sqlite.JDBC
-    url: jdbc:sqlite:D:\文档和图片\工作文档\git\go-view-serve-master\go-view-serve-master\sqllite\goview.db
-    #linux服务器
-    #url: jdbc:sqlite://home/cqfy/project/OSSDATABASE/oss.db
-    username: 
-    password: 
-    ### 连接池配置
-    druid:
-      initial-size: 10
-      max-active: 100
-      min-idle: 30
-      max-wait: 40
-      validation-query: SELECT 1

+ 0 - 110
service-cockpit/service-cockpit-biz/src/main/resources/application.yml

@@ -1,110 +0,0 @@
-v2:
-  #虚拟路径映射路径 2个文件路径一一对应 第一个为主存储,其他为配置相关
-  xnljmap:
-   #win服务器  本地 注意!! 记住这个结尾有一个/
-   oss: file:D:/upload/
-   #linux服务器
-   #oss: file:/home/webapps/oss/
-  #虚拟路径映射路径 end
-  #本地存放地址 注意!! 记住这个结尾没有/
-  fileurl: D:/upload
-  #http://127.0.0.1:8080/oss/{yy}/2022-12-22/c83a77ae134a540c30daa6a0666fa945.md
-  httpurl: http://127.0.0.1:8083/
-  defaultFormat: .png
-#tomcat config
-server :
-  port : 8083
-  ##项目名字配置
-  servlet :
-    context-path : /
-    #session过期
-    session:
-      timeout: PT4H
-      #cookie:
-      #  name: jxfgzs
-  tomcat :
-    uri-encoding : UTF-8
-    #xx 报错修改的地方
-    max-connections: 200000
-    max-http-form-post-size: 9000000
-    threads:
-      max: 128
-      min-spare: 5
-spring :
-  # 环境 dev|test|prod
-  profiles :
-    active : dev
-  servlet:
-    multipart:
-      #设置总上传的数据大小
-      max-request-size: 100MB
-      #单个文件大小
-      maxFileSize : 30MB
-        #xx 报错修改的地方
-    max-connections: 200000
-    max-http-post-size: 9000000
-  #热部署模块
-  devtools:
-    restart:
-      #热部署开关
-      enabled: true
-      #指定热部署的目录
-      additional-paths: src/main/java
-      #指定目录不更新
-      exclude: test/**
-  mvc:   #静态文件
-    static-path-pattern : /static/**
-    pathmatch:
-      matching-strategy: ant_path_matcher
-  #模板引擎
-  thymeleaf:
-    model: HTML5
-    prefix: classpath:/templates/
-    suffix: .html
-    #指定编码
-    encoding: utf-8
-    #禁用缓存 默认false
-    cache: false
-#mybatis
-mybatis-plus:
-  mapper-locations: classpath:/mapper/*Mapper.xml
-  #实体扫描,多个package用逗号或者分号分隔
-  typeAliasesPackage: cn.com.v2.model
-  global-config:
-    # 数据库相关配置
-    db-config:
-      #主键类型  AUTO:"数据库ID自增", INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
-      id-type: INPUT
-      #字段策略 IGNORED:"忽略判断",NOT_NULL:"非 NULL 判断"),NOT_EMPTY:"非空判断"
-      field-strategy: not_empty
-      #驼峰下划线转换
-      column-underline: true
-      #数据库大写下划线转换
-      #capital-mode: true
-      #逻辑删除配置
-      logic-delete-value: 0
-      logic-not-delete-value: 1
-      db-type: sqlite
-    #刷新mapper 调试神器
-    refresh: true
-  # 原生配置
-  configuration:
-    map-underscore-to-camel-case: true
-    cache-enabled: false
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-############## Sa-Token 配置 (文档: https://sa-token.cc) ##############
-sa-token: 
-    # token名称 (同时也是cookie名称)
-    token-name: satoken
-    # token有效期,单位s 默认30天, -1代表永不过期 
-    timeout: 2592000
-    # token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒
-    activity-timeout: -1
-    # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) 
-    is-concurrent: true
-    # 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token) 
-    is-share: true
-    # token风格
-    token-style: uuid
-    # 是否输出操作日志 
-    is-log: false

+ 0 - 25
service-cockpit/service-cockpit-biz/src/main/resources/bootstrap.yml

@@ -1,25 +0,0 @@
-# Tomcat
-server:
-  port: 8083
-
-# Spring
-spring:
-  application:
-    # 应用名称
-    name: service-cockpit
-  profiles:
-    # 环境配置
-    active: dev
-  cloud:
-    nacos:
-      discovery:
-        # 服务注册地址
-        server-addr: usky-cloud-nacos:8848
-      config:
-        # 配置中心地址
-        server-addr: usky-cloud-nacos:8848
-        # 配置文件格式
-        file-extension: yml
-        # 共享配置
-        shared-configs:
-          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

+ 0 - 5
service-cockpit/service-cockpit-biz/src/main/resources/mapper/GoviewProjectDataMapper.xml

@@ -1,5 +0,0 @@
-<?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="cn.com.v2.mapper.GoviewProjectDataMapper">
-
-</mapper>

+ 0 - 5
service-cockpit/service-cockpit-biz/src/main/resources/mapper/GoviewProjectMapper.xml

@@ -1,5 +0,0 @@
-<?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="cn.com.v2.mapper.GoviewProjectMapper">
-
-</mapper>

+ 0 - 5
service-cockpit/service-cockpit-biz/src/main/resources/mapper/SysFileMapper.xml

@@ -1,5 +0,0 @@
-<?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="cn.com.v2oss.mapper.SysFileMapper">
-
-</mapper>

+ 0 - 5
service-cockpit/service-cockpit-biz/src/main/resources/mapper/SysUserMapper.xml

@@ -1,5 +0,0 @@
-<?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="cn.com.v2.mapper.SysUserMapper">
-
-</mapper>

+ 5 - 4
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/MybatisGeneratorUtils.java

@@ -43,10 +43,11 @@ public class MybatisGeneratorUtils {
         //2、数据源配置
         //修改数据源
         DataSourceConfig dsc = new DataSourceConfig();
-        dsc.setUrl("jdbc:mysql://172.16.120.165:3306/usky-fire?useUnicode=true&serverTimezone=GMT&useSSL=false&characterEncoding=utf8");
+        dsc.setUrl("jdbc:mysql://192.168.10.165:3306/usky-fire?useUnicode=true&serverTimezone=GMT&useSSL=false" +
+                "&characterEncoding=utf8");
         dsc.setDriverName("com.mysql.cj.jdbc.Driver");
-        dsc.setUsername("usky");
-        dsc.setPassword("Yt#75Usky");
+        dsc.setUsername("root");
+        dsc.setPassword("yt123456");
         mpg.setDataSource(dsc);
 
         // 3、包配置
@@ -71,7 +72,7 @@ public class MybatisGeneratorUtils {
         // strategy.setTablePrefix("t_"); // 表名前缀
         strategy.setEntityLombokModel(true); //使用lombok
         //修改自己想要生成的表
-        strategy.setInclude("patrol_inspection_abnormal_picture");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
+        strategy.setInclude("patrol_inspection_site_store");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
         mpg.setStrategy(strategy);
 
         // 关闭默认 xml 生成,调整生成 至 根目录

+ 21 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/PatrolInspectionSiteStoreController.java

@@ -0,0 +1,21 @@
+package com.usky.fire.controller.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author han
+ * @since 2025-10-21
+ */
+@Controller
+@RequestMapping("/patrolInspectionSiteStore")
+public class PatrolInspectionSiteStoreController {
+
+}
+

+ 43 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/domain/PatrolInspectionSiteStore.java

@@ -0,0 +1,43 @@
+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 2025-10-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class PatrolInspectionSiteStore implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 地点号码
+     */
+    private String siteNubmber;
+
+    /**
+     * 入库时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 入库人
+     */
+    private String creator;
+
+
+}

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

@@ -0,0 +1,16 @@
+package com.usky.fire.mapper;
+
+import com.usky.fire.domain.PatrolInspectionSiteStore;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author han
+ * @since 2025-10-21
+ */
+public interface PatrolInspectionSiteStoreMapper extends CrudMapper<PatrolInspectionSiteStore> {
+
+}

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

@@ -0,0 +1,24 @@
+package com.usky.fire.service;
+
+import com.usky.fire.domain.PatrolInspectionSiteStore;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author han
+ * @since 2025-10-21
+ */
+public interface PatrolInspectionSiteStoreService extends CrudService<PatrolInspectionSiteStore> {
+
+    /**
+     * 巡检点位采集校验
+     *
+     * @param siteNubmber        地点号码
+     * @return
+     */
+    int siteStoreCount(String siteNubmber);
+
+}

+ 7 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionPlanSonServiceImpl.java

@@ -84,6 +84,9 @@ public class PatrolInspectionPlanSonServiceImpl extends AbstractCrudService<Patr
     @Autowired
     private PatrolInspectionAbnormalService patrolInspectionAbnormalService;
 
+    @Autowired
+    private PatrolInspectionSiteStoreService patrolInspectionSiteStoreService;
+
     private static final Logger LOGGER = LoggerFactory.getLogger(PatrolInspectionPlanSonServiceImpl.class);
 
     @Override
@@ -612,9 +615,13 @@ public class PatrolInspectionPlanSonServiceImpl extends AbstractCrudService<Patr
         queryWrapper.eq(PatrolInspectionSite::getSiteNubmber, patrolInspectionSite.getSiteNubmber())
                 .eq(PatrolInspectionSite::getEnable, 1);
         int list = patrolInspectionSiteService.count(queryWrapper);
+        int siteCount = patrolInspectionSiteStoreService.siteStoreCount(patrolInspectionSite.getSiteNubmber());
         if (list > 0) {
             throw new BusinessException("不可重复采集地点");
         }
+        if (siteCount <= 0) {
+            throw new BusinessException("采集点位不合法,请采集合法点位");
+        }
         patrolInspectionSite.setCreator(SecurityUtils.getUsername());
         patrolInspectionSite.setCollector(SecurityUtils.getLoginUser().getSysUser().getNickName());
         patrolInspectionSite.setCreateTime(LocalDateTime.now());

+ 2 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionSiteServiceImpl.java

@@ -256,6 +256,8 @@ public class PatrolInspectionSiteServiceImpl extends AbstractCrudService<PatrolI
         }
         if (areaId != null) {
             queryWrapper.eq(PatrolInspectionSite::getAreaId, areaId);
+        }else{
+            queryWrapper.ne(PatrolInspectionSite::getAreaId, 0);
         }
         if (StringUtils.isNotBlank(idList)) {
             List<Integer> siteidList = new ArrayList<>();

+ 29 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionSiteStoreServiceImpl.java

@@ -0,0 +1,29 @@
+package com.usky.fire.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.usky.fire.domain.PatrolInspectionPlanSiteSon;
+import com.usky.fire.domain.PatrolInspectionSiteStore;
+import com.usky.fire.mapper.PatrolInspectionSiteStoreMapper;
+import com.usky.fire.service.PatrolInspectionSiteStoreService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author han
+ * @since 2025-10-21
+ */
+@Service
+public class PatrolInspectionSiteStoreServiceImpl extends AbstractCrudService<PatrolInspectionSiteStoreMapper, PatrolInspectionSiteStore> implements PatrolInspectionSiteStoreService {
+    @Override
+    public int siteStoreCount(String siteNubmber) {
+        LambdaQueryWrapper<PatrolInspectionSiteStore> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(PatrolInspectionSiteStore::getSiteNubmber, siteNubmber);
+        int siteCount = this.count(queryWrapper);
+        return siteCount;
+    }
+}

+ 13 - 0
service-fire/service-fire-biz/src/main/resources/mapper/fire/PatrolInspectionSiteStoreMapper.xml

@@ -0,0 +1,13 @@
+<?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.PatrolInspectionSiteStoreMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.fire.domain.PatrolInspectionSiteStore">
+        <id column="id" property="id" />
+        <result column="site_nubmber" property="siteNubmber" />
+        <result column="create_time" property="createTime" />
+        <result column="creator" property="creator" />
+    </resultMap>
+
+</mapper>

+ 1 - 0
service-ids/service-ids-biz/pom.xml

@@ -64,6 +64,7 @@
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.2.6.RELEASE</version>
                 <executions>
                     <execution>
                         <goals>

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

@@ -152,6 +152,11 @@ public class DmpDeviceInfo implements Serializable {
      */
     private String gatewayUuid;
 
+    /**
+     * 建筑ID
+     */
+    private Integer buildId;
+
     /**
      * 设备状态;1:在线,2:离线
      */

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

@@ -94,8 +94,8 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
 
     @Autowired
     private RemoteTsdbProxyService remoteTsdbProxyService;
-	
-	@Autowired
+
+    @Autowired
     private DmpProductAttributeMapper dmpProductAttributeMapper;
 
     @Autowired
@@ -152,9 +152,9 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
         map1.put("commandValue", commandValue);
         map.put("params", map1);
 
-        if(categoryType == 3){
+        if (categoryType == 3) {
             return remoteTransferService.deviceControl(productCode, gatewayUuid, JSON.toJSONString(map), tenantId, commandUserId, commandUserName);
-        }else{
+        } else {
             return remoteTransferService.deviceControl(productCode, deviceUuid, JSON.toJSONString(map), tenantId, commandUserId, commandUserName);
         }
 
@@ -190,7 +190,7 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
                 throw new BusinessException("设备uuid“deviceUuid“不能为空!");
             }
 
-            if(categoryType == 1){
+            if (categoryType == 1) {
                 DmpTopicResponseVO add = new DmpTopicResponseVO();
                 add.setTopic("/usky/devices/" + deviceUuid + "/add");
                 add.setPublisher("普通设备");
@@ -218,9 +218,9 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
                 controlResponse.setSubscriber("物联网平台");
                 controlResponse.setRemarks("普通设备返回给物联网平台的命令响应");
                 responseVOList.add(controlResponse);
-            }else{
+            } else {
                 String gatewayUuid = requestVO.getGatewayUuid();
-                if(categoryType == 2){
+                if (categoryType == 2) {
                     gatewayUuid = requestVO.getDeviceUuid();
                 }
 
@@ -282,7 +282,7 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
 //            responseVOList.add(controlResponse);
 
         } else {
-            if(categoryType == 1){
+            if (categoryType == 1) {
                 switch (topicType) {
                     case "add":
                     /*if (StringUtils.isBlank(productCode)) {
@@ -374,9 +374,9 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
                     default:
                         throw new BusinessException("topicType参数错误!");
                 }
-            }else{
+            } else {
                 String gatewayUuid = requestVO.getGatewayUuid();
-                if(categoryType == 2){
+                if (categoryType == 2) {
                     gatewayUuid = requestVO.getDeviceUuid();
                 }
                 switch (topicType) {
@@ -541,7 +541,7 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
             dmpDeviceInfo.setTenantId(SecurityUtils.getTenantId());
             dmpDeviceInfo.setServiceStatus(1);
             if (StringUtils.isBlank(dmpDeviceInfo.getDeviceUuid())) {
-                dmpDeviceInfo.setDeviceUuid(UUIDUtils.uuid());
+                dmpDeviceInfo.setDeviceUuid(UUIDUtils.uuid().substring(0, 16));
             }
             this.save(dmpDeviceInfo);
 
@@ -598,32 +598,32 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
     }
 
     @Override
-    public void deviceStatus(){
+    public void deviceStatus() {
         log.info("设备状态 start");
         deviceOperate.updateDeviceStatus();
         log.info("设备状态 end");
     }
 
     @Override
-    public void updateDeviceStatus(LastInnerQueryVO queryVO){
+    public void updateDeviceStatus(LastInnerQueryVO queryVO) {
         List<LastInnerResultVO> list = remoteTsdbProxyService.queryLastDeviceData(queryVO);
-        if(CollectionUtils.isNotEmpty(list)){
-            for(int i=0;i<list.size();i++){
-                if(Objects.nonNull(list.get(i).getMetrics())){
+        if (CollectionUtils.isNotEmpty(list)) {
+            for (int i = 0; i < list.size(); i++) {
+                if (Objects.nonNull(list.get(i).getMetrics())) {
                     String deviceuuid = list.get(i).getDeviceuuid();
                     LocalDateTime lTime = Instant.ofEpochMilli(Long.valueOf(list.get(i).getMetrics().get("realtime").toString())).atZone(ZoneOffset.ofHours(8)).toLocalDateTime();
-                    String date =  lTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                    String date = lTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
                     String currentDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
                     LambdaUpdateWrapper<DmpDeviceStatus> updateWrapper = Wrappers.lambdaUpdate();
-                    if(date.equals(currentDate)){
-                        updateWrapper.set(DmpDeviceStatus::getDeviceStatus,1)  //设备在线
-                                .set(DmpDeviceStatus::getLastOnlineTime,lTime)
-                                .eq(DmpDeviceStatus::getDeviceUuid,deviceuuid);
+                    if (date.equals(currentDate)) {
+                        updateWrapper.set(DmpDeviceStatus::getDeviceStatus, 1)  // 设备在线
+                                .set(DmpDeviceStatus::getLastOnlineTime, lTime)
+                                .eq(DmpDeviceStatus::getDeviceUuid, deviceuuid);
 
-                    }else{
-                        updateWrapper.set(DmpDeviceStatus::getDeviceStatus,2)  //设备离线
-                                .set(DmpDeviceStatus::getLastOnlineTime,lTime)
-                                .eq(DmpDeviceStatus::getDeviceUuid,deviceuuid);
+                    } else {
+                        updateWrapper.set(DmpDeviceStatus::getDeviceStatus, 2)  // 设备离线
+                                .set(DmpDeviceStatus::getLastOnlineTime, lTime)
+                                .eq(DmpDeviceStatus::getDeviceUuid, deviceuuid);
 
                     }
                     dmpDeviceStatusService.update(updateWrapper);
@@ -1000,9 +1000,9 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
     }
 
     @Override
-    public List<DmpDeviceInfo> gatewayDeviceList(){
+    public List<DmpDeviceInfo> gatewayDeviceList() {
         LambdaQueryWrapper<DmpDeviceInfo> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(DmpDeviceInfo::getCategoryType,2)
+        queryWrapper.eq(DmpDeviceInfo::getCategoryType, 2)
                 .eq(DmpDeviceInfo::getDeleteFlag, 0)
                 .eq(DmpDeviceInfo::getTenantId, SecurityUtils.getTenantId())
                 .orderByDesc(DmpDeviceInfo::getId);

+ 1 - 1
service-job/src/main/java/com/ruoyi/job/task/RyTask.java

@@ -1,7 +1,7 @@
 package com.ruoyi.job.task;
 
 import com.usky.common.core.utils.StringUtils;
-import com.usky.demo.RemoteMeetingService;
+import com.usky.meeting.RemoteMeetingService;
 import com.usky.fire.RemoteFireService;
 import com.usky.iot.RemoteIotTaskService;
 import com.usky.pm.RemotePmService;

+ 0 - 22
service-meeting/service-meeting-api/src/main/java/com/usky/demo/RemoteMeetingService.java

@@ -1,22 +0,0 @@
-package com.usky.demo;
-
-
-import com.usky.common.core.bean.ApiResult;
-import com.usky.demo.domain.SysUserVO;
-import com.usky.demo.factory.RemoteMeetingFallbackFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-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;
-import java.util.PrimitiveIterator;
-
-@FeignClient(contextId = "RemoteMeetingService", value = "service-meeting", fallbackFactory = RemoteMeetingFallbackFactory.class)
-public interface RemoteMeetingService {
-
-    @GetMapping("/meetingInfoStatus")
-    void meetingInfoStatus();
-
-}

+ 14 - 0
service-meeting/service-meeting-api/src/main/java/com/usky/meeting/RemoteMeetingService.java

@@ -0,0 +1,14 @@
+package com.usky.meeting;
+
+
+import com.usky.meeting.factory.RemoteMeetingFallbackFactory;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.*;
+
+@FeignClient(contextId = "RemoteMeetingService", value = "service-meeting", fallbackFactory = RemoteMeetingFallbackFactory.class)
+public interface RemoteMeetingService {
+
+    @GetMapping("/meetingInfoStatus")
+    void meetingInfoStatus();
+
+}

+ 2 - 2
service-meeting/service-meeting-api/src/main/java/com/usky/demo/RemoteUserService.java → service-meeting/service-meeting-api/src/main/java/com/usky/meeting/RemoteUserService.java

@@ -1,8 +1,8 @@
-package com.usky.demo;
+package com.usky.meeting;
 
 
 import com.usky.common.core.bean.ApiResult;
-import com.usky.demo.domain.SysUserVO;
+import com.usky.meeting.domain.SysUserVO;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;

+ 1 - 1
service-meeting/service-meeting-api/src/main/java/com/usky/demo/domain/SysUserVO.java → service-meeting/service-meeting-api/src/main/java/com/usky/meeting/domain/SysUserVO.java

@@ -1,4 +1,4 @@
-package com.usky.demo.domain;
+package com.usky.meeting.domain;
 
 
 import lombok.Data;

+ 2 - 9
service-meeting/service-meeting-api/src/main/java/com/usky/demo/factory/RemoteMeetingFallbackFactory.java → service-meeting/service-meeting-api/src/main/java/com/usky/meeting/factory/RemoteMeetingFallbackFactory.java

@@ -1,18 +1,11 @@
-package com.usky.demo.factory;
+package com.usky.meeting.factory;
 
-import com.usky.common.core.bean.ApiResult;
-import com.usky.common.core.exception.BusinessException;
 import com.usky.common.core.exception.FeignBadRequestException;
-import com.usky.demo.RemoteMeetingService;
-import com.usky.demo.RemoteUserService;
-import com.usky.demo.domain.SysUserVO;
+import com.usky.meeting.RemoteMeetingService;
 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;
 
 
 /**

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


+ 3 - 5
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/MybatisGenerator.java

@@ -1,6 +1,4 @@
-package com.usky.meeting;//package com.usky.demo.controller;//package com.usky.dm.controller.web.business;//package com.usky.dm.controller.web;
-
-
+package com.usky.meeting;
 
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.generator.AutoGenerator;
@@ -32,7 +30,7 @@ public class MybatisGenerator {
         projectPath+="/"+model;
         gc.setOutputDir(projectPath+ "/src/main/java");  //生成路径(一般都是生成在此项目的src/main/java下面)
         //修改为自己的名字
-        gc.setAuthor("zyj"); //设置作者
+        gc.setAuthor("fu"); //设置作者
         gc.setOpen(false);
         gc.setFileOverride(true); //第二次生成会把第一次生成的覆盖掉
         gc.setServiceName("%sService"); //生成的service接口名字首字母是否为I,这样设置就没有
@@ -70,7 +68,7 @@ public class MybatisGenerator {
         // strategy.setTablePrefix("t_"); // 表名前缀
         strategy.setEntityLombokModel(true); //使用lombok
         //修改自己想要生成的表
-        strategy.setInclude("eg_device");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
+        strategy.setInclude("meeting_template");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
         mpg.setStrategy(strategy);
 
         // 关闭默认 xml 生成,调整生成 至 根目录

+ 1 - 1
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/api/ServiceMeetingTaskApi.java

@@ -1,6 +1,6 @@
 package com.usky.meeting.controller.api;
 
-import com.usky.demo.RemoteMeetingService;
+import com.usky.meeting.RemoteMeetingService;
 import com.usky.meeting.service.MeetingInfoService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RestController;

+ 43 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingDeviceHeartbeatController.java

@@ -0,0 +1,43 @@
+package com.usky.meeting.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.meeting.domain.MeetingDeviceHeartbeat;
+import com.usky.meeting.service.MeetingDeviceHeartbeatService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 会议设备心跳表 前端控制器
+ * </p>
+ *
+ * @author fu
+ * @since 2025-11-13
+ */
+@RestController
+@RequestMapping("/meetingDeviceHeartbeat")
+public class MeetingDeviceHeartbeatController {
+    private static final Logger log = LoggerFactory.getLogger(MeetingDeviceHeartbeatController.class);
+    @Autowired
+    private MeetingDeviceHeartbeatService heartbeatService;
+
+    @PostMapping("/escalation")
+    public ApiResult<Void> heartbeatEscalation(@RequestBody MeetingDeviceHeartbeat heartbeat) {
+        try {
+            heartbeatService.heartbeatEscalation(heartbeat);
+        } catch (Exception e) {
+            log.error("设备心跳异常", e);
+            return ApiResult.error("设备心跳入库异常!");
+        }
+        return ApiResult.success();
+    }
+}
+

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

@@ -145,8 +145,8 @@ public class MeetingRoomController {
     public ApiResult<Map<String,Object>> attendee(@RequestParam(value = "meetingId") Long meetingId,
                                                   @RequestParam(value = "userId") Long userId,
                                                   @RequestParam(value = "userName") String userName,
-                                                  @RequestParam(value = "domain",required = false) String domain){
-        return ApiResult.success(meetingRoomService.attendee(meetingId,userId,userName,domain));
+                                                  @RequestParam(value = "deviceCode",required = false) String deviceCode){
+        return ApiResult.success(meetingRoomService.attendee(meetingId,userId,userName,deviceCode));
     }
 
     /**

+ 83 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingTemplateController.java

@@ -0,0 +1,83 @@
+package com.usky.meeting.controller.web;
+
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.common.log.annotation.Log;
+import com.usky.common.log.enums.BusinessType;
+import com.usky.meeting.domain.MeetingTemplate;
+import com.usky.meeting.service.MeetingTemplateService;
+import com.usky.meeting.service.vo.MeetingTemplateRequestVO;
+import io.swagger.annotations.Api;
+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.util.List;
+
+/**
+ * <p>
+ * 会议屏模板表 前端控制器
+ * </p>
+ *
+ * @author fu
+ * @since 2025-11-18
+ */
+@Slf4j
+@RestController
+@RequestMapping("/meetingTemplate")
+public class MeetingTemplateController {
+
+    @Autowired
+    private MeetingTemplateService meetingTemplateService;
+
+    /**
+     * 新增和修改
+     * @param meetingTemplate  会议屏模板
+     * @return 添加结果
+     */
+    @PostMapping("/addAndUpdate")
+    @Log(title = "新增/修改会议屏模板", businessType = BusinessType.INSERT)
+    public ApiResult<Void> addAndUpdate(@RequestBody MeetingTemplate meetingTemplate) {
+        meetingTemplateService.addAndUpdate(meetingTemplate);
+        return ApiResult.success();
+    }
+
+    /**
+     * 删除
+     * @param templateId  会议屏模板id
+     * @return 删除结果
+     */
+    @DeleteMapping("/{templateId}")
+    @Log(title = "删除会议屏模板", businessType = BusinessType.DELETE)
+    public ApiResult<Void> remove(@PathVariable Long templateId) {
+        meetingTemplateService.deleteById(templateId);
+        return ApiResult.success();
+    }
+
+    /**
+     * 获取会议屏模板列表
+     * @param name  模板名称
+     * @param type  模板类型
+     * @param layout  模板布局
+     * @return 模板列表
+     */
+    @GetMapping("/templateList")
+    public ApiResult<CommonPage<MeetingTemplate>> list(@RequestParam(defaultValue = "1") Integer pageNum,
+                                                       @RequestParam(defaultValue = "10") Integer pageSize,
+                                                       @RequestParam(required = false) String name,
+                                                       @RequestParam(required = false) Integer type,
+                                                       @RequestParam(required = false) String layout) {
+        return ApiResult.success(meetingTemplateService.templateList(pageNum, pageSize, name, type, layout));
+    }
+
+    @PutMapping("/batchPublishing")
+    @Log(title = "批量发布会议屏模板", businessType = BusinessType.UPDATE)
+    public ApiResult<Void> batchPublishing(@RequestBody MeetingTemplateRequestVO requestVO) {
+        meetingTemplateService.batchPublishing(requestVO);
+        return ApiResult.success();
+    }
+}
+

+ 2 - 2
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/SignOnOutRequestVO.java

@@ -25,8 +25,8 @@ public class SignOnOutRequestVO {
     private Integer signType;
 
     /**
-     * 域名
+     * 设备编码
      */
-    private String domain;
+    private String deviceCode;
 
 }

+ 2 - 1
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/SysUserController.java

@@ -4,6 +4,7 @@ package com.usky.meeting.controller.web;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
 
 /**
  * <p>
@@ -13,7 +14,7 @@ import org.springframework.stereotype.Controller;
  * @author zyj
  * @since 2024-03-18
  */
-@Controller
+@RestController
 @RequestMapping("/sysUser")
 public class SysUserController {
 

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

@@ -136,5 +136,21 @@ public class MeetingDevice implements Serializable {
     @TableField(exist = false)
     private EgDevice egDevice;
 
+    /**
+     * 设备编号
+     */
+    private String deviceCode;
+
+    /**
+     * 设备IP
+     */
+    private String ipAddr;
 
+    /**
+     * 模板id
+     */
+    private Integer templateId;
+
+    @TableField(exist = false)
+    private MeetingTemplate meetingTemplate;
 }

+ 79 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingDeviceHeartbeat.java

@@ -0,0 +1,79 @@
+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 com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 会议设备心跳表
+ * </p>
+ *
+ * @author fu
+ * @since 2025-11-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class MeetingDeviceHeartbeat implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 会议设备心跳表主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 设备code
+     */
+    private String deviceCode;
+
+    /**
+     * 设备ip地址
+     */
+    private String ipAddr;
+
+    /**
+     * 设备mac地址
+     */
+    private String macAddr;
+
+    /**
+     * 设备类型(1.会议屏 2.信息发布屏 3.综合屏)
+     */
+    private Boolean deviceType;
+
+    /**
+     * 创建日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    /**
+     * 设备型号
+     */
+    private String model;
+
+    /**
+     *  设备厂商
+     */
+    private String manuFacturer;
+
+    /**
+     * 设备版本号
+     */
+    private String version;
+
+    /**
+     * 设备sdk
+     */
+    private String sdk;
+
+}

+ 91 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingTemplate.java

@@ -0,0 +1,91 @@
+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 com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 会议屏模板表
+ * </p>
+ *
+ * @author fu
+ * @since 2025-11-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class MeetingTemplate implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 会议屏模板表主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 模板名称
+     */
+    private String name;
+
+    /**
+     * 分辨率
+     */
+    private String fbl;
+
+    /**
+     * 模板数据
+     */
+    private String s1Con;
+
+    /**
+     * 模板预览图
+     */
+    private String s1Cover;
+
+    /**
+     * 布局(all:全部、landscape:横屏、portrait:竖屏)
+     */
+    private String layout;
+
+    /**
+     * 模板类型(1.系统模板、2.自定义模板)
+     */
+    private Integer type;
+
+    /**
+     * 创建者
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime createTime;
+
+    /**
+     * 更新者
+     */
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime updateTime;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 18 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingDeviceHeartbeatMapper.java

@@ -0,0 +1,18 @@
+package com.usky.meeting.mapper;
+
+import com.usky.meeting.domain.MeetingDeviceHeartbeat;
+import com.usky.common.mybatis.core.CrudMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ * 会议设备心跳表 Mapper 接口
+ * </p>
+ *
+ * @author fu
+ * @since 2025-11-13
+ */
+@Repository
+public interface MeetingDeviceHeartbeatMapper extends CrudMapper<MeetingDeviceHeartbeat> {
+
+}

+ 18 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/MeetingTemplateMapper.java

@@ -0,0 +1,18 @@
+package com.usky.meeting.mapper;
+
+import com.usky.meeting.domain.MeetingTemplate;
+import com.usky.common.mybatis.core.CrudMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ * 会议屏模板表 Mapper 接口
+ * </p>
+ *
+ * @author fu
+ * @since 2025-11-18
+ */
+@Repository
+public interface MeetingTemplateMapper extends CrudMapper<MeetingTemplate> {
+
+}

+ 2 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/SysUserMapper.java

@@ -2,6 +2,7 @@ package com.usky.meeting.mapper;
 
 import com.usky.meeting.domain.SysUser;
 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 zyj
  * @since 2024-03-18
  */
+@Repository
 public interface SysUserMapper extends CrudMapper<SysUser> {
 
 }

+ 17 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingDeviceHeartbeatService.java

@@ -0,0 +1,17 @@
+package com.usky.meeting.service;
+
+import com.usky.meeting.domain.MeetingDeviceHeartbeat;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * 会议设备心跳表 服务类
+ * </p>
+ *
+ * @author fu
+ * @since 2025-11-13
+ */
+public interface MeetingDeviceHeartbeatService extends CrudService<MeetingDeviceHeartbeat> {
+
+    void heartbeatEscalation(MeetingDeviceHeartbeat heartbeat);
+}

+ 45 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingTemplateService.java

@@ -0,0 +1,45 @@
+package com.usky.meeting.service;
+
+import com.usky.common.core.bean.CommonPage;
+import com.usky.meeting.domain.MeetingTemplate;
+import com.usky.common.mybatis.core.CrudService;
+import com.usky.meeting.service.vo.MeetingTemplateRequestVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 会议屏模板表 服务类
+ * </p>
+ *
+ * @author fu
+ * @since 2025-11-18
+ */
+public interface MeetingTemplateService extends CrudService<MeetingTemplate> {
+
+    /**
+     * 新增和修改
+     * @param meetingTemplate   会议屏模板
+     */
+    void addAndUpdate(MeetingTemplate meetingTemplate);
+
+    /**
+     * 删除
+     * @param templateId  会议屏模板ID
+     */
+    void deleteById(Long templateId);
+
+    /**
+     * 获取模板列表
+     * @param name  模板名称
+     * @param type  模板类型
+     * @param layout  模板布局
+     * @return 模板列表
+     */
+    CommonPage<MeetingTemplate> templateList(Integer pageNum, Integer pageSize, String name, Integer type, String layout);
+
+    /**
+     * 批量发布
+     */
+    void batchPublishing(MeetingTemplateRequestVO requestVO);
+}

+ 50 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingDeviceHeartbeatServiceImpl.java

@@ -0,0 +1,50 @@
+package com.usky.meeting.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.usky.common.core.exception.BusinessException;
+import com.usky.meeting.domain.MeetingDeviceHeartbeat;
+import com.usky.meeting.mapper.MeetingDeviceHeartbeatMapper;
+import com.usky.meeting.service.MeetingDeviceHeartbeatService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 会议设备心跳表 服务实现类
+ * </p>
+ *
+ * @author fu
+ * @since 2025-11-13
+ */
+@Service
+public class MeetingDeviceHeartbeatServiceImpl extends AbstractCrudService<MeetingDeviceHeartbeatMapper, MeetingDeviceHeartbeat> implements MeetingDeviceHeartbeatService {
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void heartbeatEscalation(MeetingDeviceHeartbeat heartbeat) {
+        if (StringUtils.isBlank(heartbeat.getDeviceCode())) {
+            throw new BusinessException("设备编码不能为空!");
+        }
+        if (StringUtils.isBlank(heartbeat.getIpAddr())) {
+            throw new BusinessException("设备IP不能为空!");
+        }
+        if (heartbeat.getCreateTime() == null) {
+            heartbeat.setCreateTime(LocalDateTime.now());
+        }
+        if (heartbeat.getDeviceType() == null) {
+            throw new BusinessException("设备类型不能为空!");
+        }
+
+        // 删除旧数据
+        LambdaQueryWrapper<MeetingDeviceHeartbeat> deleteWrapper = Wrappers.lambdaQuery();
+        deleteWrapper.eq(MeetingDeviceHeartbeat::getDeviceCode, heartbeat.getDeviceCode());
+        baseMapper.delete(deleteWrapper);
+
+        baseMapper.insert(heartbeat);
+    }
+}

+ 125 - 68
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingDeviceServiceImpl.java

@@ -13,13 +13,8 @@ import com.usky.common.core.exception.BusinessException;
 import com.usky.common.core.util.UUIDUtils;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.iot.RemoteIotTaskService;
-import com.usky.meeting.domain.EgDevice;
-import com.usky.meeting.domain.MeetingDevice;
-import com.usky.meeting.domain.MeetingFloor;
-import com.usky.meeting.domain.MeetingRoom;
-import com.usky.meeting.mapper.EgDeviceMapper;
-import com.usky.meeting.mapper.MeetingDeviceMapper;
-import com.usky.meeting.mapper.MeetingRoomMapper;
+import com.usky.meeting.domain.*;
+import com.usky.meeting.mapper.*;
 import com.usky.meeting.repository.MeetingRoomRepository;
 import com.usky.meeting.service.MeetingDeviceService;
 import com.usky.common.mybatis.core.AbstractCrudService;
@@ -54,78 +49,95 @@ public class MeetingDeviceServiceImpl extends AbstractCrudService<MeetingDeviceM
     private MeetingRoomMapper meetingRoomMapper;
     @Autowired
     private EgDeviceMapper egDeviceMapper;
-    @Autowired
-    private RemoteIotTaskService remoteIotTaskService;
+    // @Autowired
+    // private RemoteIotTaskService remoteIotTaskService;
     @Autowired
     private MeetingRoomRepository dmMeetingRoomRepository;
+    @Autowired
+    private MeetingDeviceMapper deviceMapper;
+    @Autowired
+    private MeetingDeviceHeartbeatMapper heartbeatMapper;
+    @Autowired
+    private MeetingTemplateMapper meetingTemplateMapper;
 
     @Override
-    public CommonPage<MeetingDevice> meetingDeviceList(MeetingDeviceRequestVO requestVO){
+    public CommonPage<MeetingDevice> meetingDeviceList(MeetingDeviceRequestVO requestVO) {
         Integer current = requestVO.getCurrent();
         Integer size = requestVO.getSize();
-        IPage<MeetingDevice> page = new Page<>(current,size);
-        Integer tenantId ;
+        IPage<MeetingDevice> page = new Page<>(current, size);
+
+        String deviceCode = requestVO.getDeviceCode();
+        Integer tenantId;
 
-        if(StringUtils.isNotBlank(requestVO.getDomain())){
-            tenantId = dmMeetingRoomRepository.getTenantIdByDomain(requestVO.getDomain());
-        }else{
+        if (StringUtils.isNotBlank(deviceCode)) {
+            LambdaQueryWrapper<MeetingDevice> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(MeetingDevice::getDeviceCode, requestVO.getDeviceCode());
+            tenantId = deviceMapper.selectOne(queryWrapper).getTenantId();
+        } else {
             tenantId = SecurityUtils.getTenantId();
         }
 
-        //根据输入所属会议室名称刷选
+        // 根据输入所属会议室名称刷选
         List<Long> roomIdList = new ArrayList<>();
         List<MeetingRoom> meetingRoomsList = null;
         LambdaQueryWrapper<MeetingRoom> queryWrapper = Wrappers.lambdaQuery();
-        if(StringUtils.isNotBlank(requestVO.getRoomName())){
-            queryWrapper.like(MeetingRoom::getRoomName,requestVO.getRoomName()).eq(MeetingRoom::getTenantId,tenantId);
+        if (StringUtils.isNotBlank(requestVO.getRoomName())) {
+            queryWrapper.like(MeetingRoom::getRoomName, requestVO.getRoomName()).eq(MeetingRoom::getTenantId, tenantId);
             meetingRoomsList = meetingRoomMapper.selectList(queryWrapper);
-            if(CollectionUtils.isNotEmpty(meetingRoomsList)){
+            if (CollectionUtils.isNotEmpty(meetingRoomsList)) {
                 for (int i = 0; i < meetingRoomsList.size(); i++) {
                     roomIdList.add(meetingRoomsList.get(i).getRoomId());
                 }
             }
-        }else{
-            queryWrapper.eq(MeetingRoom::getTenantId,tenantId);
+        } else {
+            queryWrapper.eq(MeetingRoom::getTenantId, tenantId);
             meetingRoomsList = meetingRoomMapper.selectList(queryWrapper);
         }
-        //根据输入所属门禁设备名称刷选
+        // 根据输入所属门禁设备名称刷选
         List<Integer> egDeviceIdList = new ArrayList<>();
         List<EgDevice> egDeviceList = null;
         LambdaQueryWrapper<EgDevice> queryWrapper1 = Wrappers.lambdaQuery();
-        if(StringUtils.isNotBlank(requestVO.getEgDeviceName())){
-            queryWrapper1.like(EgDevice::getDeviceName,requestVO.getEgDeviceName()).eq(EgDevice::getTenantId,tenantId);
+        if (StringUtils.isNotBlank(requestVO.getEgDeviceName())) {
+            queryWrapper1.like(EgDevice::getDeviceName, requestVO.getEgDeviceName()).eq(EgDevice::getTenantId, tenantId);
             egDeviceList = egDeviceMapper.selectList(queryWrapper1);
-            if(CollectionUtils.isNotEmpty(egDeviceList)){
-                for (int i = 0; i < egDeviceList.size(); i++) {
-                    egDeviceIdList.add(egDeviceList.get(i).getId());
+            if (CollectionUtils.isNotEmpty(egDeviceList)) {
+                for (EgDevice egDevice : egDeviceList) {
+                    egDeviceIdList.add(egDevice.getId());
                 }
             }
-        }else{
-            queryWrapper1.eq(EgDevice::getTenantId,tenantId);
+        } else {
+            queryWrapper1.eq(EgDevice::getTenantId, tenantId);
             egDeviceList = egDeviceMapper.selectList(queryWrapper1);
         }
 
         LambdaQueryWrapper<MeetingDevice> queryWrapper3 = Wrappers.lambdaQuery();
-        queryWrapper3.like(StringUtils.isNotBlank(requestVO.getDeviceName()),MeetingDevice::getDeviceName,requestVO.getDeviceName())
-                .like(StringUtils.isNotBlank(requestVO.getNameplate()),MeetingDevice::getNameplate,requestVO.getNameplate())
-                .like(StringUtils.isNotBlank(requestVO.getMaintainer()),MeetingDevice::getMaintainer,requestVO.getMaintainer())
-                .like(StringUtils.isNotBlank(requestVO.getContacts()),MeetingDevice::getContacts,requestVO.getContacts())
-                .like(StringUtils.isNotBlank(requestVO.getRemark()),MeetingDevice::getRemark,requestVO.getRemark())
-                .like(requestVO.getRoomId() != null,MeetingDevice::getRoomId,requestVO.getRoomId())
-                .in(CollectionUtils.isNotEmpty(roomIdList),MeetingDevice::getRoomId,roomIdList)
-                .in(CollectionUtils.isNotEmpty(egDeviceIdList),MeetingDevice::getEgDeviceId,egDeviceIdList)
-                .eq(MeetingDevice::getTenantId,tenantId)
+        queryWrapper3.eq(requestVO.getDeviceCode() != null, MeetingDevice::getDeviceCode, requestVO.getDeviceCode())
+                .like(StringUtils.isNotBlank(requestVO.getDeviceName()), MeetingDevice::getDeviceName, requestVO.getDeviceName())
+                .like(StringUtils.isNotBlank(requestVO.getNameplate()), MeetingDevice::getNameplate, requestVO.getNameplate())
+                .like(StringUtils.isNotBlank(requestVO.getMaintainer()), MeetingDevice::getMaintainer, requestVO.getMaintainer())
+                .like(StringUtils.isNotBlank(requestVO.getContacts()), MeetingDevice::getContacts, requestVO.getContacts())
+                .like(StringUtils.isNotBlank(requestVO.getRemark()), MeetingDevice::getRemark, requestVO.getRemark())
+                .like(requestVO.getRoomId() != null, MeetingDevice::getRoomId, requestVO.getRoomId())
+                .in(CollectionUtils.isNotEmpty(roomIdList), MeetingDevice::getRoomId, roomIdList)
+                .in(CollectionUtils.isNotEmpty(egDeviceIdList), MeetingDevice::getEgDeviceId, egDeviceIdList)
+                .eq(MeetingDevice::getTenantId, tenantId)
                 .orderByAsc(MeetingDevice::getDeviceUuid);
-        page = this.page(page,queryWrapper3);
-        if(page.getRecords().size()>0){
+        page = this.page(page, queryWrapper3);
+
+        LambdaQueryWrapper<MeetingTemplate> queryWrapper4 = Wrappers.lambdaQuery();
+        queryWrapper4.eq(MeetingTemplate::getTenantId, tenantId);
+        List<MeetingTemplate> meetingTemplateList = meetingTemplateMapper.selectList(queryWrapper4);
 
-            if(CollectionUtils.isNotEmpty(meetingRoomsList)){
+
+        if (!page.getRecords().isEmpty()) {
+
+            if (CollectionUtils.isNotEmpty(meetingRoomsList)) {
                 for (int i = 0; i < page.getRecords().size(); i++) {
-                    if(Objects.nonNull(page.getRecords().get(i).getRoomId())){
-                        Long RId = Long.valueOf(page.getRecords().get(i).getRoomId());
-                        for (int j = 0; j < meetingRoomsList.size(); j++) {
-                            if(RId.equals(meetingRoomsList.get(j).getRoomId())){
-                                page.getRecords().get(i).setMeetingRoom(meetingRoomsList.get(j));
+                    if (Objects.nonNull(page.getRecords().get(i).getRoomId())) {
+                        Long RId = page.getRecords().get(i).getRoomId();
+                        for (MeetingRoom meetingRoom : meetingRoomsList) {
+                            if (RId.equals(meetingRoom.getRoomId())) {
+                                page.getRecords().get(i).setMeetingRoom(meetingRoom);
                                 break;
                             }
                         }
@@ -134,13 +146,13 @@ public class MeetingDeviceServiceImpl extends AbstractCrudService<MeetingDeviceM
                 }
             }
 
-            if(CollectionUtils.isNotEmpty(egDeviceList)){
+            if (CollectionUtils.isNotEmpty(egDeviceList)) {
                 for (int i = 0; i < page.getRecords().size(); i++) {
-                    if(Objects.nonNull(page.getRecords().get(i).getEgDeviceId())){
+                    if (Objects.nonNull(page.getRecords().get(i).getEgDeviceId())) {
                         Integer egDeviceId = page.getRecords().get(i).getEgDeviceId();
-                        for (int j = 0; j < egDeviceList.size(); j++) {
-                            if(egDeviceId.equals(egDeviceList.get(j).getId())){
-                                page.getRecords().get(i).setEgDevice(egDeviceList.get(j));
+                        for (EgDevice egDevice : egDeviceList) {
+                            if (egDeviceId.equals(egDevice.getId())) {
+                                page.getRecords().get(i).setEgDevice(egDevice);
                                 break;
                             }
                         }
@@ -148,52 +160,97 @@ public class MeetingDeviceServiceImpl extends AbstractCrudService<MeetingDeviceM
 
                 }
             }
+
+            if (CollectionUtils.isNotEmpty(meetingTemplateList)) {
+                for (int i = 0; i < page.getRecords().size(); i++) {
+                    if (Objects.nonNull(page.getRecords().get(i).getTemplateId())) {
+                        Integer templateId = page.getRecords().get(i).getTemplateId();
+                        for (MeetingTemplate meetingTemplate : meetingTemplateList) {
+                            if (templateId.equals(meetingTemplate.getId())) {
+                                page.getRecords().get(i).setMeetingTemplate(meetingTemplate);
+                                break;
+                            }
+                        }
+                    }
+                }
+            }
         }
 
-        return new CommonPage<>(page.getRecords(),page.getTotal(),size,current);
+        return new CommonPage<>(page.getRecords(), page.getTotal(), size, current);
     }
 
     @Override
-    public void add(MeetingDevice meetingDevice){
-        if(checkNameUnique(meetingDevice)){
-            throw new BusinessException("新增会议室设备失败,"+meetingDevice.getDeviceName()+"已经存在");
+    public void add(MeetingDevice meetingDevice) {
+        if (checkNameUnique(meetingDevice)) {
+            throw new BusinessException("新增会议室设备失败," + meetingDevice.getDeviceName() + "已经存在");
         }
 //        Snowflake snowflake = IdUtil.createSnowflake(1,1);
 //        meetingDevice.setDeviceId(snowflake.nextId());
+        LocalDateTime now = LocalDateTime.now();
         meetingDevice.setCreateBy(SecurityUtils.getUsername());
-        meetingDevice.setCreateTime(LocalDateTime.now());
+        meetingDevice.setCreateTime(now);
         meetingDevice.setTenantId(SecurityUtils.getTenantId());
+
+        String ipAddr = meetingDevice.getIpAddr();
+        LambdaQueryWrapper<MeetingDeviceHeartbeat> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(MeetingDeviceHeartbeat::getIpAddr, ipAddr);
+        MeetingDeviceHeartbeat meetingDeviceHeartbeat = heartbeatMapper.selectOne(queryWrapper);
+        if (meetingDeviceHeartbeat == null) {
+            throw new BusinessException("设备离线!请重新输入");
+        } else {
+            LocalDateTime createTime = meetingDeviceHeartbeat.getCreateTime();
+            if (createTime.isAfter(now) || !createTime.plusMinutes(6).isAfter(now)) {
+                throw new BusinessException("设备离线!请重新输入");
+            }
+        }
+        meetingDevice.setDeviceCode(meetingDeviceHeartbeat.getDeviceCode());
+
         this.save(meetingDevice);
 
-        remoteIotTaskService.addDeviceInfo("505_USKY", meetingDevice.getDeviceUuid().toString(),"",meetingDevice.getDeviceName(),meetingDevice.getInstallAddress(),1);
+        // remoteIotTaskService.addDeviceInfo("505_USKY", meetingDevice.getDeviceUuid().toString(), "", meetingDevice.getDeviceName(), meetingDevice.getInstallAddress(), 1);
     }
 
     @Override
-    public void edit(MeetingDevice meetingDevice){
-        if(checkNameUnique(meetingDevice)){
-            throw new BusinessException("修改会议室设备失败,"+meetingDevice.getDeviceName()+"已经存在");
+    public void edit(MeetingDevice meetingDevice) {
+        LocalDateTime now = LocalDateTime.now();
+        if (checkNameUnique(meetingDevice)) {
+            throw new BusinessException("修改会议室设备失败," + meetingDevice.getDeviceName() + "已经存在");
         }
         meetingDevice.setUpdateBy(SecurityUtils.getUsername());
-        meetingDevice.setUpdateTime(LocalDateTime.now());
+        meetingDevice.setUpdateTime(now);
+
+        String ipAddr = meetingDevice.getIpAddr();
+        LambdaQueryWrapper<MeetingDeviceHeartbeat> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(MeetingDeviceHeartbeat::getIpAddr, ipAddr);
+        MeetingDeviceHeartbeat meetingDeviceHeartbeat = heartbeatMapper.selectOne(queryWrapper);
+        if (meetingDeviceHeartbeat == null) {
+            throw new BusinessException("设备离线!请重新输入");
+        } else {
+            LocalDateTime createTime = meetingDeviceHeartbeat.getCreateTime();
+            if (createTime.isAfter(now) || !createTime.plusMinutes(6).isAfter(now)) {
+                throw new BusinessException("设备离线!请重新输入");
+            }
+        }
+        meetingDevice.setDeviceCode(meetingDeviceHeartbeat.getDeviceCode());
 
         this.updateById(meetingDevice);
     }
 
     @Override
-    public void remove(Long deviceId){
+    public void remove(Long deviceId) {
         MeetingDevice meetingDevice = this.getById(deviceId);
         Optional.ofNullable(meetingDevice).orElseThrow(() -> new BusinessException("该会议室设备不存在"));
         this.removeById(deviceId);
 
-        remoteIotTaskService.deleteDeviceInfo(deviceId.toString());
+        // remoteIotTaskService.deleteDeviceInfo(deviceId.toString());
     }
 
-    public boolean checkNameUnique(MeetingDevice meetingDevice){
-        Long deviceId = null == meetingDevice.getDeviceUuid()?-1:meetingDevice.getDeviceUuid();
+    public boolean checkNameUnique(MeetingDevice meetingDevice) {
+        Long deviceId = null == meetingDevice.getDeviceUuid() ? -1 : meetingDevice.getDeviceUuid();
         LambdaQueryWrapper<MeetingDevice> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(MeetingDevice::getDeviceName,meetingDevice.getDeviceName())
-                .eq(MeetingDevice::getTenantId,SecurityUtils.getTenantId());
+        queryWrapper.eq(MeetingDevice::getDeviceName, meetingDevice.getDeviceName())
+                .eq(MeetingDevice::getTenantId, SecurityUtils.getTenantId());
         MeetingDevice one = this.getOne(queryWrapper);
-        return null != one && !Objects.equals(one.getDeviceUuid(),deviceId);
+        return null != one && !Objects.equals(one.getDeviceUuid(), deviceId);
     }
 }

+ 12 - 4
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingFaceServiceImpl.java

@@ -1,14 +1,18 @@
 package com.usky.meeting.service.impl;
 
 import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.meet.utils.JwtUtils;
 import com.usky.meet.utils.TimeUtils;
+import com.usky.meeting.domain.MeetingDevice;
 import com.usky.meeting.domain.MeetingFace;
+import com.usky.meeting.mapper.MeetingDeviceMapper;
 import com.usky.meeting.mapper.MeetingFaceMapper;
 import com.usky.meeting.repository.MeetingRoomRepository;
 import com.usky.meeting.server.FaceContrastServer;
+import com.usky.meeting.service.MeetingDeviceService;
 import com.usky.meeting.service.MeetingFaceService;
 import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.meeting.service.vo.FaceResultVO;
@@ -37,14 +41,18 @@ public class MeetingFaceServiceImpl extends AbstractCrudService<MeetingFaceMappe
     FaceContrastServer faceContrastServer;
     @Autowired
     private MeetingRoomRepository dmMeetingRoomRepository;
+    @Autowired
+    private MeetingDeviceMapper deviceMapper;
 
     @Override
     public MeetingFaceVO vef(MeetingFaceRequestVO requestVO) {
 
-        String domain = requestVO.getDomain();
+        String deviceCode = requestVO.getDeviceCode();
         Integer tenantId;
-        if(StringUtils.isNotBlank(domain)){
-            tenantId = dmMeetingRoomRepository.getTenantIdByDomain(domain);
+        if(StringUtils.isNotBlank(deviceCode)){
+            LambdaQueryWrapper<MeetingDevice> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(MeetingDevice::getDeviceCode,requestVO.getDeviceCode());
+            tenantId = deviceMapper.selectOne(queryWrapper).getTenantId();
         }else{
             tenantId = SecurityUtils.getTenantId();
         }
@@ -55,7 +63,7 @@ public class MeetingFaceServiceImpl extends AbstractCrudService<MeetingFaceMappe
         faceState.setTenantId(tenantId);
         faceState1.setTenantId(tenantId);
         // 如果人脸库为空,则第一次登录为录入人脸
-        if (faceList.size() > 0){
+        if (!faceList.isEmpty()){
             //人脸校验
             if(StringUtils.isNotBlank(requestVO.getImageBase())){
                 int faceLength = faceList.size();

+ 160 - 154
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingInfoServiceImpl.java

@@ -24,6 +24,7 @@ import com.usky.common.core.util.DateUtils;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.meeting.controller.web.SignOnOutRequestVO;
 import com.usky.meeting.domain.*;
+import com.usky.meeting.mapper.MeetingDeviceMapper;
 import com.usky.meeting.mapper.MeetingFloorMapper;
 import com.usky.meeting.mapper.MeetingInfoMapper;
 import com.usky.meeting.mapper.MeetingRoomMapper;
@@ -91,6 +92,8 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
     private MeetingFloorMapper meetingFloorMapper;
     @Autowired
     private MeetingFileService meetingFileService;
+    @Autowired
+    private MeetingDeviceMapper deviceMapper;
 
     @Override
     public Map<String, Object> meetingSummary(Integer tenantId) {
@@ -98,8 +101,8 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
     }
 
     @Override
-    public Map<String, Object> meetingSummaryByYear(String year,Integer tenantId) {
-        return dmMeetingRepository.meetingSummaryByYear(year,tenantId);
+    public Map<String, Object> meetingSummaryByYear(String year, Integer tenantId) {
+        return dmMeetingRepository.meetingSummaryByYear(year, tenantId);
     }
 
     @Override
@@ -112,32 +115,32 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
         Date date = dtf.parse(dayTime);
         Calendar cal = Calendar.getInstance();
         cal.setTime(date);
-        //获取日期中得年
-        Integer year= cal.get(Calendar.YEAR);
-        System.out.println("year:"+year);
-        //获取日期中得月
-        Integer month= (cal.get(Calendar.MONTH) + 1);
-        System.out.println("month:"+month);
-        //获取日期中得日
-        Integer day= Integer.valueOf(String.format("%td", date));
-        List<MeetingInfo> dmMeetings = dmMeetingRepository.getDmMeetingByStartDatDay(roomId,year,month,day,tenantId);
+        // 获取日期中得年
+        Integer year = cal.get(Calendar.YEAR);
+        System.out.println("year:" + year);
+        // 获取日期中得月
+        Integer month = (cal.get(Calendar.MONTH) + 1);
+        System.out.println("month:" + month);
+        // 获取日期中得日
+        Integer day = Integer.valueOf(String.format("%td", date));
+        List<MeetingInfo> dmMeetings = dmMeetingRepository.getDmMeetingByStartDatDay(roomId, year, month, day, tenantId);
         LambdaQueryWrapper<SysUser> sysUserQuery = Wrappers.lambdaQuery();
-        sysUserQuery.eq(SysUser::getTenantId,tenantId);
+        sysUserQuery.eq(SysUser::getTenantId, tenantId);
         List<SysUser> userList = sysUserService.list(sysUserQuery);
-        if(userList.size() <= 0){
+        if (userList.size() <= 0) {
             throw new BusinessException("用户信息不能为空");
         }
 
-        if(!ObjectUtil.isEmpty(dmMeetings)){
-            for(MeetingInfo dmMeeting : dmMeetings){
-                //参会人员信息
+        if (!ObjectUtil.isEmpty(dmMeetings)) {
+            for (MeetingInfo dmMeeting : dmMeetings) {
+                // 参会人员信息
                 List<SysUser> attendeeUserList = new ArrayList<>();
-                List<MeetingAttendee> attendeeList = meetingAttendeeRepository.findMeetingAttendeeList(dmMeeting.getMeetingId(),null, tenantId);
-                if(attendeeList.size() > 0){
+                List<MeetingAttendee> attendeeList = meetingAttendeeRepository.findMeetingAttendeeList(dmMeeting.getMeetingId(), null, tenantId);
+                if (attendeeList.size() > 0) {
                     for (int i = 0; i < attendeeList.size(); i++) {
                         Long uid = attendeeList.get(i).getUserId();
                         for (int j = 0; j < userList.size(); j++) {
-                            if(uid.equals(userList.get(j).getUserId())){
+                            if (uid.equals(userList.get(j).getUserId())) {
                                 attendeeUserList.add(userList.get(j));
                                 break;
                             }
@@ -145,9 +148,9 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
                     }
                 }
                 dmMeeting.setUsers(attendeeUserList);
-                //发起人信息
+                // 发起人信息
                 for (int i = 0; i < userList.size(); i++) {
-                    if(userList.get(i).getUserId().equals(Long.valueOf(dmMeeting.getInitiatorId()))){
+                    if (userList.get(i).getUserId().equals(Long.valueOf(dmMeeting.getInitiatorId()))) {
                         dmMeeting.setInitiatorUser(userList.get(i));
                         break;
                     }
@@ -161,7 +164,7 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
                 Date meetingStartDate = new Date(meetingStartTimestamp.getTime());
                 Calendar meetingStartCal = Calendar.getInstance();
                 meetingStartCal.setTime(meetingStartDate);
-                if(cal.get(Calendar.YEAR) == meetingStartCal.get(Calendar.YEAR) && cal.get(Calendar.DAY_OF_YEAR) == meetingStartCal.get(Calendar.DAY_OF_YEAR)) {
+                if (cal.get(Calendar.YEAR) == meetingStartCal.get(Calendar.YEAR) && cal.get(Calendar.DAY_OF_YEAR) == meetingStartCal.get(Calendar.DAY_OF_YEAR)) {
                     int meetingStartHours = meetingStartDate.getHours();
                     meetingStartNumber = meetingStartNumber + meetingStartHours;
                     int meetingStartMinutes = meetingStartDate.getMinutes();
@@ -177,7 +180,7 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
                 Date meetingEndDate = new Date(meetingEndTimestamp.getTime());
                 Calendar meetingEndCal = Calendar.getInstance();
                 meetingEndCal.setTime(meetingEndDate);
-                if(cal.get(Calendar.YEAR) == meetingEndCal.get(Calendar.YEAR) && cal.get(Calendar.DAY_OF_YEAR) == meetingEndCal.get(Calendar.DAY_OF_YEAR)) {
+                if (cal.get(Calendar.YEAR) == meetingEndCal.get(Calendar.YEAR) && cal.get(Calendar.DAY_OF_YEAR) == meetingEndCal.get(Calendar.DAY_OF_YEAR)) {
                     int meetingEndHours = meetingEndDate.getHours();
                     meetingEndNumber = meetingEndNumber + meetingEndHours;
                     int meetingEndMinutes = meetingEndDate.getMinutes();
@@ -207,10 +210,10 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
         System.out.println("date:" + date);
         Calendar cal = Calendar.getInstance();
         cal.setTime(date);
-        //获取日期中得年
+        // 获取日期中得年
         Integer year = cal.get(Calendar.YEAR);
         System.out.println("year:" + year);
-        //获取日期中得月
+        // 获取日期中得月
         Integer month = (cal.get(Calendar.MONTH) + 1);
         System.out.println("month:" + month);
 
@@ -228,7 +231,7 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
                     set.add(startDay);
                     // 设置日期
                     calendar.setTime(startDate);
-                    //把日期增加一天
+                    // 把日期增加一天
                     calendar.add(Calendar.DATE, 1);
                     // 获取增加后的日期
                     startDate = calendar.getTime();
@@ -249,7 +252,7 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
         if (meetingMode.equals("1")) {
 
         } else if (meetingMode.equals("0") || meetingMode.equals("2")) {
-            //判断指定会议室预约的时间是否与存在的预约单冲突
+            // 判断指定会议室预约的时间是否与存在的预约单冲突
             List<Map<String, String>> dmMeetingList = dmMeetingRepository.checkDmRoomMeetingDate(resources.getRoom().getRoomId(), resources.getStartDate(), resources.getEndDate(), resources.getMeetingId());
             if (dmMeetingList != null && dmMeetingList.size() > 0) {
                 throw new BusinessException("预约时间段冲突,请重设预约时间");
@@ -278,9 +281,9 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
         MeetingInfo meeting = this.toEntity(resources);
         this.save(meeting);
 
-        //循环保存会议id和会议文件记录到会议文件表中
+        // 循环保存会议id和会议文件记录到会议文件表中
         Long meetingId = meeting.getMeetingId();
-        if(!ObjectUtils.isEmpty(resources.getMeetingFileList())){
+        if (!ObjectUtils.isEmpty(resources.getMeetingFileList())) {
             for (MeetingFile meetingFile : resources.getMeetingFileList()) {
                 meetingFile.setMeetingId(meetingId);
                 meetingFile.setUploadUser(SecurityUtils.getUsername());
@@ -291,7 +294,7 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
         }
 
         if (!ObjectUtils.isEmpty(resources.getUsers())) {
-            for(SysUser dmUser : resources.getUsers()){
+            for (SysUser dmUser : resources.getUsers()) {
                 MeetingAttendee meetingAttendee = new MeetingAttendee();
                 meetingAttendee.setMeetingId(meeting.getMeetingId());
                 meetingAttendee.setUserId(dmUser.getUserId());
@@ -304,23 +307,23 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
     }
 
     @Override
-    public CommonPage<MeetingInfo> meetingInfoList(MeetingInfoRequestVO requestVO){
-        Page<MeetingInfo> page = new Page<>(requestVO.getCurrent(),requestVO.getSize());
+    public CommonPage<MeetingInfo> meetingInfoList(MeetingInfoRequestVO requestVO) {
+        Page<MeetingInfo> page = new Page<>(requestVO.getCurrent(), requestVO.getSize());
         LambdaQueryWrapper<MeetingInfo> queryWrapper = Wrappers.lambdaQuery();
 
-        if(StringUtils.isNotBlank(requestVO.getName())){
+        if (StringUtils.isNotBlank(requestVO.getName())) {
             List<String> initiatorIdList = new ArrayList<>();
             LambdaQueryWrapper<SysUser> sysUserQuery = Wrappers.lambdaQuery();
-            sysUserQuery.like(SysUser::getNickName,requestVO.getName())
-                        .eq(SysUser::getTenantId,SecurityUtils.getTenantId());
+            sysUserQuery.like(SysUser::getNickName, requestVO.getName())
+                    .eq(SysUser::getTenantId, SecurityUtils.getTenantId());
             List<SysUser> userList = sysUserService.list(sysUserQuery);
-            if(userList.size() > 0){
+            if (userList.size() > 0) {
                 for (int i = 0; i < userList.size(); i++) {
                     initiatorIdList.add(userList.get(i).getUserId().toString());
                 }
             }
 
-            if(CollectionUtils.isNotEmpty(initiatorIdList)) {
+            if (CollectionUtils.isNotEmpty(initiatorIdList)) {
                 queryWrapper.like(StringUtils.isNotBlank(requestVO.getRoomName()), MeetingInfo::getRoomName, requestVO.getRoomName())
                         .in(MeetingInfo::getInitiatorId, initiatorIdList)
                         .eq(null != requestVO.getMeetingStatus(), MeetingInfo::getMeetingStatus, requestVO.getMeetingStatus())
@@ -329,7 +332,7 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
                         .between(StringUtils.isNotBlank(requestVO.getStartDate()) && StringUtils.isNotBlank(requestVO.getEndDate()), MeetingInfo::getEndDate, requestVO.getStartDate(), requestVO.getEndDate())
                         .eq(MeetingInfo::getTenantId, SecurityUtils.getTenantId())
                         .orderByDesc(MeetingInfo::getMeetingId);
-            }else{
+            } else {
                 queryWrapper.like(StringUtils.isNotBlank(requestVO.getRoomName()), MeetingInfo::getRoomName, requestVO.getRoomName())
                         .in(MeetingInfo::getInitiatorId, "")
                         .eq(null != requestVO.getMeetingStatus(), MeetingInfo::getMeetingStatus, requestVO.getMeetingStatus())
@@ -339,7 +342,7 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
                         .eq(MeetingInfo::getTenantId, SecurityUtils.getTenantId())
                         .orderByDesc(MeetingInfo::getMeetingId);
             }
-        }else{
+        } else {
             queryWrapper.like(StringUtils.isNotBlank(requestVO.getRoomName()), MeetingInfo::getRoomName, requestVO.getRoomName())
                     .eq(null != requestVO.getMeetingStatus(), MeetingInfo::getMeetingStatus, requestVO.getMeetingStatus())
                     .eq(null != requestVO.getApproveStatus(), MeetingInfo::getApproveStatus, requestVO.getApproveStatus())
@@ -349,46 +352,46 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
                     .orderByDesc(MeetingInfo::getMeetingId);
         }
 
-        page = this.page(page,queryWrapper);
-        if(page.getRecords().size() > 0){
+        page = this.page(page, queryWrapper);
+        if (page.getRecords().size() > 0) {
             List<Long> roomIdList = new ArrayList<>();
             List<Long> initIdList = new ArrayList<>();
             for (int i = 0; i < page.getRecords().size(); i++) {
-                if(!roomIdList.contains(page.getRecords().get(i).getRoomId())){
+                if (!roomIdList.contains(page.getRecords().get(i).getRoomId())) {
                     roomIdList.add(page.getRecords().get(i).getRoomId());
                 }
-                if(!initIdList.contains(page.getRecords().get(i).getInitiatorId())){
+                if (!initIdList.contains(page.getRecords().get(i).getInitiatorId())) {
                     initIdList.add(Long.valueOf(page.getRecords().get(i).getInitiatorId()));
                 }
             }
-            //房间以及对应楼层信息
-            if(roomIdList.size() > 0){
+            // 房间以及对应楼层信息
+            if (roomIdList.size() > 0) {
                 LambdaQueryWrapper<MeetingRoom> meetingRoomQuery = Wrappers.lambdaQuery();
-                meetingRoomQuery.in(MeetingRoom::getRoomId,roomIdList)
-                        .eq(MeetingRoom::getTenantId,SecurityUtils.getTenantId())
-                        .eq(MeetingRoom::getStatus,0);
+                meetingRoomQuery.in(MeetingRoom::getRoomId, roomIdList)
+                        .eq(MeetingRoom::getTenantId, SecurityUtils.getTenantId())
+                        .eq(MeetingRoom::getStatus, 0);
                 List<MeetingRoom> meetingRoomList = meetingRoomMapper.selectList(meetingRoomQuery);
 
                 List<Long> floorIdList = new ArrayList<>();
-                if(meetingRoomList.size() > 0){
+                if (meetingRoomList.size() > 0) {
                     for (int i = 0; i < meetingRoomList.size(); i++) {
-                        if(!floorIdList.contains(meetingRoomList.get(i).getFloorId())){
+                        if (!floorIdList.contains(meetingRoomList.get(i).getFloorId())) {
                             floorIdList.add(meetingRoomList.get(i).getFloorId());
                         }
                     }
                     LambdaQueryWrapper<MeetingFloor> floorWrapper = Wrappers.lambdaQuery();
-                    floorWrapper.in(MeetingFloor::getFloorId,floorIdList)
-                            .eq(MeetingFloor::getTenantId,SecurityUtils.getTenantId());
+                    floorWrapper.in(MeetingFloor::getFloorId, floorIdList)
+                            .eq(MeetingFloor::getTenantId, SecurityUtils.getTenantId());
                     List<MeetingFloor> meetingFloorList = meetingFloorMapper.selectList(floorWrapper);
                     for (int i = 0; i < page.getRecords().size(); i++) {
                         for (int j = 0; j < meetingRoomList.size(); j++) {
-                            if(page.getRecords().get(i).getRoomId().equals(meetingRoomList.get(j).getRoomId())){
+                            if (page.getRecords().get(i).getRoomId().equals(meetingRoomList.get(j).getRoomId())) {
                                 page.getRecords().get(i).setRoomInfo(meetingRoomList.get(j));
                                 break;
                             }
                         }
                         for (int j = 0; j < meetingFloorList.size(); j++) {
-                            if(page.getRecords().get(i).getRoomInfo().getFloorId().equals(meetingFloorList.get(j).getFloorId())){
+                            if (page.getRecords().get(i).getRoomInfo().getFloorId().equals(meetingFloorList.get(j).getFloorId())) {
                                 page.getRecords().get(i).getRoomInfo().setMeetingFloor(meetingFloorList.get(j));
                                 break;
                             }
@@ -396,16 +399,16 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
                     }
                 }
             }
-            //发起人信息
-            if(initIdList.size() > 0){
+            // 发起人信息
+            if (initIdList.size() > 0) {
                 LambdaQueryWrapper<SysUser> initIdQuery = Wrappers.lambdaQuery();
-                initIdQuery.in(SysUser::getUserId,initIdList)
-                        .eq(SysUser::getTenantId,SecurityUtils.getTenantId());
+                initIdQuery.in(SysUser::getUserId, initIdList)
+                        .eq(SysUser::getTenantId, SecurityUtils.getTenantId());
                 List<SysUser> userList = sysUserService.list(initIdQuery);
-                if(userList.size() > 0){
+                if (userList.size() > 0) {
                     for (int i = 0; i < page.getRecords().size(); i++) {
                         for (int j = 0; j < userList.size(); j++) {
-                            if(page.getRecords().get(i).getInitiatorId().equals(userList.get(j).getUserId().toString())){
+                            if (page.getRecords().get(i).getInitiatorId().equals(userList.get(j).getUserId().toString())) {
                                 page.getRecords().get(i).setInitiatorUser(userList.get(j));
                                 break;
                             }
@@ -418,11 +421,11 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
         }
 
 
-        return new CommonPage<>(page.getRecords(),page.getTotal(),requestVO.getSize(),requestVO.getCurrent());
+        return new CommonPage<>(page.getRecords(), page.getTotal(), requestVO.getSize(), requestVO.getCurrent());
     }
 
     @Override
-    public void cancel(Long meetingId){
+    public void cancel(Long meetingId) {
         MeetingInfo one = this.getById(meetingId);
         one.setIsCancel(1);
         one.setMeetingStatus(2);
@@ -430,10 +433,10 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
     }
 
     @Override
-    public CommonPage<MeetingInfo> myMeetingList(MyMeetingInfoRequestVO requestVO){
+    public CommonPage<MeetingInfo> myMeetingList(MyMeetingInfoRequestVO requestVO) {
         Integer current = requestVO.getCurrent();
         Integer size = requestVO.getSize();
-        Page<MeetingInfo> page = new Page<>(current,size);
+        Page<MeetingInfo> page = new Page<>(current, size);
 
         Long userId = SecurityUtils.getUserId();
         List<BigInteger> meetingIdList = new ArrayList<>();
@@ -446,34 +449,34 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
             meetingIds.add(bigInteger.longValue());
         }
         LambdaQueryWrapper<MeetingInfo> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.in(CollectionUtils.isNotEmpty(meetingIds),MeetingInfo::getMeetingId,meetingIds)
-                .eq(MeetingInfo::getIsCancel,0)
-                .like(StringUtils.isNotBlank(requestVO.getMeetingName()),MeetingInfo::getMeetingName,requestVO.getMeetingName())
-                .like(StringUtils.isNotBlank(requestVO.getMeetingDescribe()),MeetingInfo::getMeetingDescribe,requestVO.getMeetingDescribe())
-                .eq(null != requestVO.getMeetingMode(),MeetingInfo::getMeetingMode,requestVO.getMeetingMode())
-                .eq(null != requestVO.getMeetingStatus(),MeetingInfo::getMeetingStatus,requestVO.getMeetingStatus())
-                .between(StringUtils.isNotBlank(requestVO.getStartDate()) && StringUtils.isNotBlank(requestVO.getEndDate()),MeetingInfo::getStartDate,requestVO.getStartDate(),requestVO.getEndDate())
-                .between(StringUtils.isNotBlank(requestVO.getStartDate()) && StringUtils.isNotBlank(requestVO.getEndDate()),MeetingInfo::getEndDate,requestVO.getStartDate(),requestVO.getEndDate())
-                .eq(MeetingInfo::getTenantId,SecurityUtils.getTenantId())
+        queryWrapper.in(CollectionUtils.isNotEmpty(meetingIds), MeetingInfo::getMeetingId, meetingIds)
+                .eq(MeetingInfo::getIsCancel, 0)
+                .like(StringUtils.isNotBlank(requestVO.getMeetingName()), MeetingInfo::getMeetingName, requestVO.getMeetingName())
+                .like(StringUtils.isNotBlank(requestVO.getMeetingDescribe()), MeetingInfo::getMeetingDescribe, requestVO.getMeetingDescribe())
+                .eq(null != requestVO.getMeetingMode(), MeetingInfo::getMeetingMode, requestVO.getMeetingMode())
+                .eq(null != requestVO.getMeetingStatus(), MeetingInfo::getMeetingStatus, requestVO.getMeetingStatus())
+                .between(StringUtils.isNotBlank(requestVO.getStartDate()) && StringUtils.isNotBlank(requestVO.getEndDate()), MeetingInfo::getStartDate, requestVO.getStartDate(), requestVO.getEndDate())
+                .between(StringUtils.isNotBlank(requestVO.getStartDate()) && StringUtils.isNotBlank(requestVO.getEndDate()), MeetingInfo::getEndDate, requestVO.getStartDate(), requestVO.getEndDate())
+                .eq(MeetingInfo::getTenantId, SecurityUtils.getTenantId())
                 .orderByDesc(MeetingInfo::getMeetingId);
-        page = this.page(page,queryWrapper);
-        if(page.getRecords().size() > 0){
+        page = this.page(page, queryWrapper);
+        if (page.getRecords().size() > 0) {
             List<Long> initIdList = new ArrayList<>();
             for (int i = 0; i < page.getRecords().size(); i++) {
-                if(!initIdList.contains(page.getRecords().get(i).getInitiatorId())){
+                if (!initIdList.contains(page.getRecords().get(i).getInitiatorId())) {
                     initIdList.add(Long.valueOf(page.getRecords().get(i).getInitiatorId()));
                 }
             }
-            //发起人信息
-            if(initIdList.size() > 0){
+            // 发起人信息
+            if (initIdList.size() > 0) {
                 LambdaQueryWrapper<SysUser> initIdQuery = Wrappers.lambdaQuery();
-                initIdQuery.in(SysUser::getUserId,initIdList)
-                        .eq(SysUser::getTenantId,SecurityUtils.getTenantId());
+                initIdQuery.in(SysUser::getUserId, initIdList)
+                        .eq(SysUser::getTenantId, SecurityUtils.getTenantId());
                 List<SysUser> userList = sysUserService.list(initIdQuery);
-                if(userList.size() > 0){
+                if (userList.size() > 0) {
                     for (int i = 0; i < page.getRecords().size(); i++) {
                         for (int j = 0; j < userList.size(); j++) {
-                            if(page.getRecords().get(i).getInitiatorId().equals(userList.get(j).getUserId().toString())){
+                            if (page.getRecords().get(i).getInitiatorId().equals(userList.get(j).getUserId().toString())) {
                                 page.getRecords().get(i).setInitiatorUser(userList.get(j));
                                 break;
                             }
@@ -485,40 +488,43 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
 
         }
 
-        return new CommonPage<>(page.getRecords(),page.getTotal(),size,current);
+        return new CommonPage<>(page.getRecords(), page.getTotal(), size, current);
     }
 
     @Override
-    public List<Map<String,Object>> meetingSignList(Long meetingId){
+    public List<Map<String, Object>> meetingSignList(Long meetingId) {
         Integer tenantId = SecurityUtils.getTenantId();
-        List<Map<String, Object>> signList = dmMeetingRepository.meetingSignList(meetingId,tenantId);
+        List<Map<String, Object>> signList = dmMeetingRepository.meetingSignList(meetingId, tenantId);
         return signList;
     }
 
     @Override
-    public void signOnOut(SignOnOutRequestVO requestVO){
+    public void signOnOut(SignOnOutRequestVO requestVO) {
         LambdaQueryWrapper<MeetingAttendee> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(MeetingAttendee::getMeetingId,requestVO.getMeetingId())
-                .eq(MeetingAttendee::getUserId,requestVO.getUserId());
-
-        String domain = requestVO.getDomain();
-        if(StringUtils.isNotBlank(domain)){
-            Integer tenantId = meetingRoomRepository.getTenantIdByDomain(domain);
+        queryWrapper.eq(MeetingAttendee::getMeetingId, requestVO.getMeetingId())
+                .eq(MeetingAttendee::getUserId, requestVO.getUserId());
+
+        String deviceCode = requestVO.getDeviceCode();
+        Integer tenantId;
+        if (StringUtils.isNotBlank(deviceCode)) {
+            LambdaQueryWrapper<MeetingDevice> queryWrapper1 = new LambdaQueryWrapper<>();
+            queryWrapper1.eq(MeetingDevice::getDeviceCode, requestVO.getDeviceCode());
+            tenantId = deviceMapper.selectOne(queryWrapper1).getTenantId();
             queryWrapper.eq(MeetingAttendee::getTenantId, tenantId);
-        }else{
+        } else {
             queryWrapper.eq(MeetingAttendee::getTenantId, SecurityUtils.getTenantId());
         }
 
         MeetingAttendee one = meetingAttendeeService.getOne(queryWrapper);
-        if(one != null){
-            //签到签退类别(0.签到 1.签退)
-            if(requestVO.getMothodType().equals(0)){
+        if (one != null) {
+            // 签到签退类别(0.签到 1.签退)
+            if (requestVO.getMothodType().equals(0)) {
                 one.setIsSign(1);
                 one.setSignDate(LocalDateTime.now());
-                //签到签退方式(0.人工 1.人脸)
+                // 签到签退方式(0.人工 1.人脸)
                 one.setSignType(requestVO.getSignType());
 
-            }else{
+            } else {
                 one.setIsSignOut(1);
                 one.setSignOutDate(LocalDateTime.now());
                 one.setSignOutType(requestVO.getSignType());
@@ -528,36 +534,36 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
 
     }
 
-    //UPDATE meeting_info SET meeting_status = 0 WHERE is_cancel = 0 AND meeting_status != 2 AND start_date > SYSDATE;
-    //UPDATE meeting_info SET meeting_status = 1 WHERE is_cancel = 0 AND meeting_status != 2 AND start_date <= SYSDATE AND end_date >= SYSDATE;
-    //UPDATE meeting_info SET meeting_status = 2 WHERE is_cancel = 0 AND meeting_status != 2 AND end_date < SYSDATE;
+    // UPDATE meeting_info SET meeting_status = 0 WHERE is_cancel = 0 AND meeting_status != 2 AND start_date > SYSDATE;
+    // UPDATE meeting_info SET meeting_status = 1 WHERE is_cancel = 0 AND meeting_status != 2 AND start_date <= SYSDATE AND end_date >= SYSDATE;
+    // UPDATE meeting_info SET meeting_status = 2 WHERE is_cancel = 0 AND meeting_status != 2 AND end_date < SYSDATE;
     @Override
-    public void updateMeetingInfoStatus(){
-        //根据使用中的会议id去更新对应会议室的状态
-        //更新会议室使用状态为 1-使用中
+    public void updateMeetingInfoStatus() {
+        // 根据使用中的会议id去更新对应会议室的状态
+        // 更新会议室使用状态为 1-使用中
         LambdaQueryWrapper<MeetingInfo> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(MeetingInfo::getIsCancel,0)
-                .ne(MeetingInfo::getMeetingStatus,2)
-                .le(MeetingInfo::getStartDate,LocalDateTime.now())
-                .ge(MeetingInfo::getEndDate,LocalDateTime.now());
+        queryWrapper.eq(MeetingInfo::getIsCancel, 0)
+                .ne(MeetingInfo::getMeetingStatus, 2)
+                .le(MeetingInfo::getStartDate, LocalDateTime.now())
+                .ge(MeetingInfo::getEndDate, LocalDateTime.now());
         List<MeetingInfo> list = this.list(queryWrapper);
         Set<Long> roomIdList = new HashSet<>();
-        if(list.size() > 0){
+        if (list.size() > 0) {
             for (int i = 0; i < list.size(); i++) {
                 roomIdList.add(list.get(i).getRoomId());
             }
         }
         meetingRoomRepository.updateMeetingRoomStatusOnUse(roomIdList);
-        //更新将会议室使用状态恢复为 0-未使用
+        // 更新将会议室使用状态恢复为 0-未使用
         LambdaQueryWrapper<MeetingInfo> queryWrapper1 = Wrappers.lambdaQuery();
-        queryWrapper1.eq(MeetingInfo::getIsCancel,0)
-                .ne(MeetingInfo::getMeetingStatus,2)
-                .lt(MeetingInfo::getEndDate,LocalDateTime.now());
+        queryWrapper1.eq(MeetingInfo::getIsCancel, 0)
+                .ne(MeetingInfo::getMeetingStatus, 2)
+                .lt(MeetingInfo::getEndDate, LocalDateTime.now());
         List<MeetingInfo> list1 = this.list(queryWrapper1);
         Set<Long> roomIdList1 = new HashSet<>();
-        if(list1.size() > 0){
+        if (list1.size() > 0) {
             for (int i = 0; i < list1.size(); i++) {
-                if(!roomIdList.contains(list1.get(i).getRoomId())){
+                if (!roomIdList.contains(list1.get(i).getRoomId())) {
                     roomIdList1.add(list1.get(i).getRoomId());
                 }
             }
@@ -566,17 +572,17 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
 
 
         UpdateWrapper<MeetingInfo> updateWrapper = Wrappers.update();
-        updateWrapper.set("meeting_status",1)
-                .eq("is_cancel",0)
-                .ne("meeting_status",2)
-                .le("start_date",LocalDateTime.now())
-                .ge("end_date",LocalDateTime.now());
+        updateWrapper.set("meeting_status", 1)
+                .eq("is_cancel", 0)
+                .ne("meeting_status", 2)
+                .le("start_date", LocalDateTime.now())
+                .ge("end_date", LocalDateTime.now());
         this.update(updateWrapper);
         UpdateWrapper<MeetingInfo> updateWrapper1 = Wrappers.update();
-        updateWrapper1.set("meeting_status",2)
-                .eq("is_cancel",0)
-                .ne("meeting_status",2)
-                .lt("end_date",LocalDateTime.now());
+        updateWrapper1.set("meeting_status", 2)
+                .eq("is_cancel", 0)
+                .ne("meeting_status", 2)
+                .lt("end_date", LocalDateTime.now());
         this.update(updateWrapper1);
     }
 
@@ -584,7 +590,7 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
 
         if (StringUtils.isNotBlank(resources.getSendType())) {
             String[] typeList = resources.getSendType().split(",");
-            if(typeList.length > 0){
+            if (typeList.length > 0) {
                 for (int i = 0; i < typeList.length; i++) {
                     String sendType = typeList[i];
 
@@ -595,17 +601,17 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
                             DefaultProfile profile = DefaultProfile.getProfile("cn-beijing", "LTAI5tH3VvRL5BUkovCokHJX", "SaaWUouNqvcA0C746gcNOH9m6SRYN4");
                             IAcsClient client = new DefaultAcsClient(profile);
                             SendSmsRequest request = new SendSmsRequest();
-                            request.setPhoneNumbers(dmUser.getPhonenumber());//接收短信的手机号码
-                            request.setSignName("上海永天科技股份有限公司");//短信签名名称
-                            request.setTemplateCode("SMS_465362899");//短信模板CODE
-                            request.setTemplateParam("{\"meet\":\""+resources.getMeetingName()+"\","+"\"time\":\""+resources.getStartDate()+"\","+
-                                    "\"room\":\""+resources.getRoomName()+"\"}");
+                            request.setPhoneNumbers(dmUser.getPhonenumber());// 接收短信的手机号码
+                            request.setSignName("上海永天科技股份有限公司");// 短信签名名称
+                            request.setTemplateCode("SMS_465362899");// 短信模板CODE
+                            request.setTemplateParam("{\"meet\":\"" + resources.getMeetingName() + "\"," + "\"time\":\"" + resources.getStartDate() + "\"," +
+                                    "\"room\":\"" + resources.getRoomName() + "\"}");
                             SendSmsResponse code = client.getAcsResponse(request);
-                            if(code.getCode() != null && code.getCode().equals("OK")) {
-                                //请求成功
-                            }else {
+                            if (code.getCode() != null && code.getCode().equals("OK")) {
+                                // 请求成功
+                            } else {
 //                                throw new BusinessException("发送短信失败");
-                                log.info(dmUser.getPhonenumber()+"发送短信失败");
+                                log.info(dmUser.getPhonenumber() + "发送短信失败");
                             }
                         }
 
@@ -704,7 +710,7 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
 //    }
 
     public MeetingInfo toEntity(DmMeetingDto dto) {
-        if ( dto == null ) {
+        if (dto == null) {
             return null;
         }
 
@@ -713,27 +719,27 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
         dmMeeting.setCreateBy(SecurityUtils.getUsername());
         dmMeeting.setCreateTime(LocalDateTime.now());
         dmMeeting.setTenantId(SecurityUtils.getTenantId());
-        dmMeeting.setMeetingName( dto.getMeetingName() );
+        dmMeeting.setMeetingName(dto.getMeetingName());
         dmMeeting.setRoomId(dto.getRoomId());
-        dmMeeting.setRoomName( dto.getRoomName() );
-        dmMeeting.setMeetingDescribe( dto.getMeetingDescribe() );
-        dmMeeting.setMeetingType( dto.getMeetingType() );
+        dmMeeting.setRoomName(dto.getRoomName());
+        dmMeeting.setMeetingDescribe(dto.getMeetingDescribe());
+        dmMeeting.setMeetingType(dto.getMeetingType());
         dmMeeting.setInitiatorId(dto.getInitiatorUser().getId());
-        dmMeeting.setStartDate(LocalDateTime.parse(dto.getStartDate(),DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) );
-        dmMeeting.setEndDate(LocalDateTime.parse(dto.getEndDate(),DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) );
-        dmMeeting.setApproveStatus( dto.getApproveStatus() );
-        dmMeeting.setApproveSuggest( dto.getApproveSuggest() );
-        dmMeeting.setActualCount( dto.getActualCount() );
-        dmMeeting.setPlanCount( dto.getPlanCount() );
-        dmMeeting.setIsDelay( dto.getIsDelay() );
-        dmMeeting.setRemark( dto.getRemark() );
-        dmMeeting.setMeetingStatus( dto.getMeetingStatus() );
-        dmMeeting.setTaskId( dto.getTaskId() );
-        dmMeeting.setProcInstId( dto.getProcInstId() );
-        dmMeeting.setIsCancel( dto.getIsCancel() );
-        dmMeeting.setSendType( dto.getSendType() );
-        dmMeeting.setIsApprove( dto.getIsApprove() );
-        dmMeeting.setMeetingMode( dto.getMeetingMode() );
+        dmMeeting.setStartDate(LocalDateTime.parse(dto.getStartDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+        dmMeeting.setEndDate(LocalDateTime.parse(dto.getEndDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+        dmMeeting.setApproveStatus(dto.getApproveStatus());
+        dmMeeting.setApproveSuggest(dto.getApproveSuggest());
+        dmMeeting.setActualCount(dto.getActualCount());
+        dmMeeting.setPlanCount(dto.getPlanCount());
+        dmMeeting.setIsDelay(dto.getIsDelay());
+        dmMeeting.setRemark(dto.getRemark());
+        dmMeeting.setMeetingStatus(dto.getMeetingStatus());
+        dmMeeting.setTaskId(dto.getTaskId());
+        dmMeeting.setProcInstId(dto.getProcInstId());
+        dmMeeting.setIsCancel(dto.getIsCancel());
+        dmMeeting.setSendType(dto.getSendType());
+        dmMeeting.setIsApprove(dto.getIsApprove());
+        dmMeeting.setMeetingMode(dto.getMeetingMode());
 
         return dmMeeting;
     }

+ 37 - 30
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingRoomServiceImpl.java

@@ -15,6 +15,7 @@ import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.exception.BusinessException;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.meeting.domain.*;
+import com.usky.meeting.mapper.MeetingDeviceMapper;
 import com.usky.meeting.mapper.MeetingRoomMapper;
 import com.usky.meeting.repository.MeetingAttendeeRepository;
 import com.usky.meeting.repository.MeetingDeviceRepository;
@@ -64,6 +65,8 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
     private MeetingInfoRepository meetingInfoRepository;
     @Autowired
     private SysUserService sysUserService;
+    @Autowired
+    private MeetingDeviceMapper deviceMapper;
 
     @Override
     public Map<String, Object> FirstPageStatistic(String year) {
@@ -96,14 +99,14 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
                 }
             }
 
-            if(CollectionUtils.isNotEmpty(floorId)){
+            if (CollectionUtils.isNotEmpty(floorId)) {
                 queryWrapper.like(StringUtils.isNotBlank(requestVO.getRoomName()), MeetingRoom::getRoomName, requestVO.getRoomName())
                         .in(MeetingRoom::getFloorId, floorId)
                         .eq(null != requestVO.getStatus(), MeetingRoom::getStatus, requestVO.getStatus())
                         .eq(null != requestVO.getRoomStatus(), MeetingRoom::getRoomStatus, requestVO.getRoomStatus())
                         .eq(MeetingRoom::getTenantId, SecurityUtils.getTenantId())
                         .orderByDesc(MeetingRoom::getRoomId);
-            }else{
+            } else {
                 queryWrapper.like(StringUtils.isNotBlank(requestVO.getRoomName()), MeetingRoom::getRoomName, requestVO.getRoomName())
                         .in(MeetingRoom::getFloorId, "")
                         .eq(null != requestVO.getStatus(), MeetingRoom::getStatus, requestVO.getStatus())
@@ -112,7 +115,7 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
                         .orderByDesc(MeetingRoom::getRoomId);
             }
 
-        }else{
+        } else {
             queryWrapper.like(StringUtils.isNotBlank(requestVO.getRoomName()), MeetingRoom::getRoomName, requestVO.getRoomName())
                     .eq(null != requestVO.getStatus(), MeetingRoom::getStatus, requestVO.getStatus())
                     .eq(null != requestVO.getRoomStatus(), MeetingRoom::getRoomStatus, requestVO.getRoomStatus())
@@ -121,7 +124,7 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
         }
         page = this.page(page, queryWrapper);
         if (CollectionUtils.isNotEmpty(page.getRecords())) {
-            //查询楼层信息和本地存储信息
+            // 查询楼层信息和本地存储信息
             List<Long> floorIdList = new ArrayList<>();
             for (int i = 0; i < page.getRecords().size(); i++) {
                 Long floorId1 = page.getRecords().get(i).getFloorId();
@@ -134,7 +137,7 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
                     .eq(MeetingFloor::getTenantId, SecurityUtils.getTenantId());
             List<MeetingFloor> floorList = dmFloorService.list(floorQuery);
 
-            //会议室匹配对应楼层信息和本地存储信息
+            // 会议室匹配对应楼层信息和本地存储信息
             for (int i = 0; i < page.getRecords().size(); i++) {
                 if (CollectionUtils.isNotEmpty(floorList)) {
                     Long frId = Long.valueOf(page.getRecords().get(i).getFloorId());
@@ -154,10 +157,10 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
     @Override
     public List<MeetingRoom> MeetingRoomList(String domain) {
         LambdaQueryWrapper<MeetingRoom> queryWrapper = Wrappers.lambdaQuery();
-        if(StringUtils.isNotBlank(domain)){
+        if (StringUtils.isNotBlank(domain)) {
             Integer tenantId = dmMeetingRoomRepository.getTenantIdByDomain(domain);
             queryWrapper.eq(MeetingRoom::getTenantId, tenantId);
-        }else{
+        } else {
             queryWrapper.eq(MeetingRoom::getTenantId, SecurityUtils.getTenantId());
         }
 
@@ -209,23 +212,25 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
     }
 
     @Override
-    public Map<String, Object> attendee(Long meetingId, Long userId, String userName, String domain) {
+    public Map<String, Object> attendee(Long meetingId, Long userId, String userName, String deviceCode) {
         Map<String, Object> map = new HashMap<>();
-        Integer tenantId ;
+        Integer tenantId;
 
-        if(StringUtils.isNotBlank(domain)){
-            tenantId = dmMeetingRoomRepository.getTenantIdByDomain(domain);
-        }else{
+        if (StringUtils.isNotBlank(deviceCode)) {
+            LambdaQueryWrapper<MeetingDevice> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(MeetingDevice::getDeviceCode, deviceCode);
+            tenantId = deviceMapper.selectOne(queryWrapper).getTenantId();
+        } else {
             tenantId = SecurityUtils.getTenantId();
         }
 
         map.put("userName", userName);
         List<MeetingAttendee> list = meetingAttendeeRepository.findMeetingAttendeeList(meetingId, userId, tenantId);
         if (org.springframework.util.CollectionUtils.isEmpty(list)) {
-            map.put("status","0");
+            map.put("status", "0");
             map.put("msg", "您当前没有需要参加的会议");
         } else {
-            map.put("status","1");
+            map.put("status", "1");
             map.put("msg", "验证成功");
         }
         return map;
@@ -237,19 +242,21 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
         List<DmMeetingRoomDto> newDmMeetingRoomDtoList = new ArrayList<>();
         String meetingRoomName = reservationVO.getMeetingRoomName();
         Long meetingRoomId = reservationVO.getMeetingRoomId();
-        String domain = reservationVO.getDomain();
+        String deviceCode = reservationVO.getDeviceCode();
         Integer tenantId;
-        if(StringUtils.isNotBlank(domain)){
-            tenantId = dmMeetingRoomRepository.getTenantIdByDomain(domain);
-        }else{
+        if (StringUtils.isNotBlank(deviceCode)) {
+            LambdaQueryWrapper<MeetingDevice> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(MeetingDevice::getDeviceCode, reservationVO.getDeviceCode());
+            tenantId = deviceMapper.selectOne(queryWrapper).getTenantId();
+        } else {
             tenantId = SecurityUtils.getTenantId();
         }
 
 
         LambdaQueryWrapper<MeetingRoom> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(meetingRoomId != null,MeetingRoom::getRoomId,reservationVO.getMeetingRoomId())
-                .like(StringUtils.isNotBlank(meetingRoomName),MeetingRoom::getRoomName,meetingRoomName)
-                .eq(MeetingRoom::getTenantId,tenantId);
+        queryWrapper.eq(meetingRoomId != null, MeetingRoom::getRoomId, reservationVO.getMeetingRoomId())
+                .like(StringUtils.isNotBlank(meetingRoomName), MeetingRoom::getRoomName, meetingRoomName)
+                .eq(MeetingRoom::getTenantId, tenantId);
         List<MeetingRoom> list1 = this.list(queryWrapper);
         List<Long> floorIdList = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(list1)) {
@@ -290,18 +297,18 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
                 }
             }
         }
-        if (list.size() > 0) {
+        if (!list.isEmpty()) {
             for (DmMeetingRoomDto dmMeetingRoomDto : list) {
                 if (ObjectUtils.isEmpty(reservationVO.getDate())) {
                     reservationVO.setDate(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
                 }
-                JSONObject meetingRoomUsageByDayV2 = dmMeetingService.getMeetingRoomUsageByDayV2(dmMeetingRoomDto.getRoomId(), reservationVO.getDate(),tenantId);
+                JSONObject meetingRoomUsageByDayV2 = dmMeetingService.getMeetingRoomUsageByDayV2(dmMeetingRoomDto.getRoomId(), reservationVO.getDate(), tenantId);
 
                 JSONArray dmMeeting = meetingRoomUsageByDayV2.getJSONArray("dmMeeting");
                 dmMeetingRoomDto.setDmMeetingList(dmMeeting);
 
                 dmMeetingRoomDto.setMeetingRoomUsage(meetingRoomUsageByDayV2.getJSONArray("timeRange"));
-                List<Integer> monthList = dmMeetingService.getMeetingRoomUsageByMonth(dmMeetingRoomDto.getRoomId(), reservationVO.getDate(),tenantId);
+                List<Integer> monthList = dmMeetingService.getMeetingRoomUsageByMonth(dmMeetingRoomDto.getRoomId(), reservationVO.getDate(), tenantId);
                 dmMeetingRoomDto.setMeetingRoomUsageMonth(monthList);
 
                 newDmMeetingRoomDtoList.add(dmMeetingRoomDto);
@@ -313,16 +320,16 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
 
     @Override
     public MeetingRoom meetingRoomDetails(Long roomId) {
-        //查询会议室基础信息
+        // 查询会议室基础信息
         MeetingRoom meetingRoom = this.getById(roomId);
 
-        //楼层信息
+        // 楼层信息
         Long floorId = meetingRoom.getFloorId();
         MeetingFloor meetingFloor = dmFloorService.getById(floorId);
 
-        //会议室设备列表
+        // 会议室设备列表
         List<MeetingDevice> deviceList = meetingDeviceRepository.getDeviceListByRoomId(roomId);
-        //查询今天所有的会议
+        // 查询今天所有的会议
         List<MeetingInfo> meetingList = meetingInfoRepository.queryTodayMeetingByRoomId(roomId);
 
         LambdaQueryWrapper<SysUser> sysUserQuery = Wrappers.lambdaQuery();
@@ -333,7 +340,7 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
         }
         if (!ObjectUtil.isEmpty(meetingList)) {
             for (MeetingInfo dmMeeting : meetingList) {
-                //参会人员信息
+                // 参会人员信息
                 List<SysUser> attendeeUserList = new ArrayList<>();
                 List<MeetingAttendee> attendeeList = meetingAttendeeRepository.findMeetingAttendeeList(dmMeeting.getMeetingId(), null, SecurityUtils.getTenantId());
                 if (attendeeList.size() > 0) {
@@ -348,7 +355,7 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
                     }
                 }
                 dmMeeting.setUsers(attendeeUserList);
-                //发起人信息
+                // 发起人信息
                 for (int i = 0; i < userList.size(); i++) {
                     if (userList.get(i).getUserId().equals(Long.valueOf(dmMeeting.getInitiatorId()))) {
                         dmMeeting.setInitiatorUser(userList.get(i));

+ 133 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingTemplateServiceImpl.java

@@ -0,0 +1,133 @@
+package com.usky.meeting.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.usky.common.core.bean.CommonPage;
+import com.usky.common.core.exception.BusinessException;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.meeting.domain.MeetingDevice;
+import com.usky.meeting.domain.MeetingTemplate;
+import com.usky.meeting.mapper.MeetingDeviceMapper;
+import com.usky.meeting.mapper.MeetingTemplateMapper;
+import com.usky.meeting.service.MeetingTemplateService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.meeting.service.vo.MeetingTemplateRequestVO;
+import com.usky.system.domain.SysUserVO;
+import com.usky.system.model.LoginUser;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+import java.security.Security;
+import java.time.LocalDateTime;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * <p>
+ * 会议屏模板表 服务实现类
+ * </p>
+ *
+ * @author fu
+ * @since 2025-11-18
+ */
+@Service
+public class MeetingTemplateServiceImpl extends AbstractCrudService<MeetingTemplateMapper, MeetingTemplate> implements MeetingTemplateService {
+
+    @Autowired
+    private MeetingDeviceMapper meetingDeviceMapper;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void addAndUpdate(MeetingTemplate dto) {
+
+        SysUserVO sysUser = SecurityUtils.getLoginUser().getSysUser();
+        if (sysUser == null || sysUser.getTenantId() == null) {
+            throw new BusinessException("未获取到登录用户!");
+        }
+        String username = sysUser.getUserName();
+        Integer tenantId = sysUser.getTenantId();
+        LocalDateTime now = LocalDateTime.now();
+
+        if (dto.getId() != null) {
+            dto.setUpdateTime(now);
+            dto.setUpdateBy(username);
+            this.updateById(dto);
+        } else {
+            dto.setCreateTime(now);
+            dto.setCreateBy(username);
+            dto.setTenantId(tenantId);
+            this.save(dto);
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteById(Long templateId) {
+        if (templateId == null) {
+            throw new BusinessException("会议模板ID不能为空!");
+        }
+        Integer tenantId = SecurityUtils.getTenantId();
+
+        LambdaQueryWrapper<MeetingTemplate> tplWrap = new LambdaQueryWrapper<>();
+        tplWrap.eq(MeetingTemplate::getId, templateId)
+                .eq(MeetingTemplate::getTenantId, tenantId);
+        boolean deleted = remove(tplWrap);
+        if (!deleted) {
+            throw new BusinessException("会议模板不存在!");
+        }
+
+        LambdaUpdateWrapper<MeetingDevice> deviceWrap = new LambdaUpdateWrapper<>();
+        deviceWrap.set(MeetingDevice::getTemplateId, null)
+                .eq(MeetingDevice::getTemplateId, templateId)
+                .eq(MeetingDevice::getTenantId, tenantId);
+        meetingDeviceMapper.update(null, deviceWrap);
+    }
+
+    @Override
+    public CommonPage<MeetingTemplate> templateList(Integer pageNum, Integer pageSize, String name, Integer type,
+                                                    String layout) {
+        Page<MeetingTemplate> page = new Page<>(pageNum, pageSize);
+        LambdaQueryWrapper<MeetingTemplate> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(MeetingTemplate::getTenantId, SecurityUtils.getTenantId())
+                .like(StringUtils.isNotBlank(name), MeetingTemplate::getName, name)
+                .eq(type != null, MeetingTemplate::getType, type)
+                .eq(StringUtils.isNotBlank(layout) && !"all".equals(layout),
+                        MeetingTemplate::getLayout, layout);
+
+        Page<MeetingTemplate> mpPage = baseMapper.selectPage(page, wrapper);
+        return new CommonPage<>(mpPage.getRecords(), mpPage.getTotal(), pageSize, pageNum);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void batchPublishing(MeetingTemplateRequestVO requestVO) {
+        Integer templateId = requestVO.getTemplateId();
+        List<String> deviceCodes = requestVO.getDeviceCodes();
+        if (templateId == null) {
+            throw new BusinessException("模板ID不能为空!");
+        }
+        Integer tenantId = SecurityUtils.getTenantId();
+
+        LambdaQueryWrapper<MeetingTemplate> lambdaQuery = new LambdaQueryWrapper<>();
+        lambdaQuery.eq(MeetingTemplate::getId, templateId)
+                .eq(MeetingTemplate::getTenantId, tenantId);
+        MeetingTemplate template = baseMapper.selectOne(lambdaQuery);
+        if (template == null) {
+            throw new BusinessException("模板不存在!");
+        }
+
+        LambdaUpdateWrapper<MeetingDevice> unwrap = new LambdaUpdateWrapper<>();
+        unwrap.eq(MeetingDevice::getTenantId, tenantId);
+        if (deviceCodes != null && !deviceCodes.isEmpty()) {
+            unwrap.in(MeetingDevice::getDeviceCode, deviceCodes);
+        }
+        MeetingDevice updater = new MeetingDevice();
+        updater.setTemplateId(templateId);
+        meetingDeviceMapper.update(updater, unwrap);
+    }
+}

+ 2 - 2
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/vo/MeetingDeviceRequestVO.java

@@ -60,7 +60,7 @@ public class MeetingDeviceRequestVO {
     private String egDeviceName;
 
     /**
-     * 域名
+     * 设备编码
      */
-    private String domain;
+    private String deviceCode;
 }

+ 2 - 2
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/vo/MeetingFaceRequestVO.java

@@ -10,9 +10,9 @@ public class MeetingFaceRequestVO {
     private String imageBase;
 
     /**
-     * 域名
+     * 设备编码
      */
-    private String domain;
+    private String deviceCode;
 
     /**
      * 卡号

+ 2 - 2
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/vo/MeetingRoomReservationVO.java

@@ -24,7 +24,7 @@ public class MeetingRoomReservationVO {
     private String date;
 
     /**
-     * 域名
+     * 设备编码
      */
-    private String domain;
+    private String deviceCode;
 }

+ 19 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/vo/MeetingTemplateRequestVO.java

@@ -0,0 +1,19 @@
+package com.usky.meeting.service.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ *
+ * @author fyc
+ * @email yuchuan.fu@chinausky.com
+ * @date 2025/11/20
+ */
+@Data
+public class MeetingTemplateRequestVO {
+
+    private Integer templateId;
+
+    private List<String> deviceCodes;
+}

+ 1 - 1
service-meeting/service-meeting-biz/src/main/resources/logback.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration scan="true" scanPeriod="60 seconds" debug="false">
     <!-- 日志存放路径 -->
-	<property name="log.path" value="/var/log/uskycloud/usky-demo" />
+	<property name="log.path" value="/var/log/uskycloud/usky-meeting" />
    <!-- 日志输出格式 -->
 	<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
 

+ 19 - 0
service-meeting/service-meeting-biz/src/main/resources/mapper/meeting/MeetingDeviceHeartbeatMapper.xml

@@ -0,0 +1,19 @@
+<?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.meeting.mapper.MeetingDeviceHeartbeatMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.meeting.domain.MeetingDeviceHeartbeat">
+        <id column="id" property="id"/>
+        <result column="device_code" property="deviceCode"/>
+        <result column="ip_addr" property="ipAddr"/>
+        <result column="mac_addr" property="macAddr"/>
+        <result column="device_type" property="deviceType"/>
+        <result column="create_time" property="createTime"/>
+        <result column="model" property="model"/>
+        <result column="manu_facturer"  property="manuFacturer"/>
+        <result column="version" property="version"/>
+        <result column="sdk" property="sdk"/>
+    </resultMap>
+
+</mapper>

+ 20 - 17
service-meeting/service-meeting-biz/src/main/resources/mapper/meeting/MeetingDeviceMapper.xml

@@ -4,23 +4,26 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.usky.meeting.domain.MeetingDevice">
-        <id column="device_uuid" property="deviceUuid" />
-        <result column="device_name" property="deviceName" />
-        <result column="storage_id" property="storageId" />
-        <result column="img_path" property="imgPath" />
-        <result column="nameplate" property="nameplate" />
-        <result column="room_id" property="roomId" />
-        <result column="register_date" property="registerDate" />
-        <result column="maintainer" property="maintainer" />
-        <result column="contacts" property="contacts" />
-        <result column="install_address" property="installAddress" />
-        <result column="remark" property="remark" />
-        <result column="create_by" property="createBy" />
-        <result column="update_by" property="updateBy" />
-        <result column="create_time" property="createTime" />
-        <result column="update_time" property="updateTime" />
-        <result column="dept_id" property="deptId" />
-        <result column="tenant_id" property="tenantId" />
+        <id column="device_uuid" property="deviceUuid"/>
+        <result column="device_name" property="deviceName"/>
+        <result column="storage_id" property="storageId"/>
+        <result column="img_path" property="imgPath"/>
+        <result column="nameplate" property="nameplate"/>
+        <result column="room_id" property="roomId"/>
+        <result column="register_date" property="registerDate"/>
+        <result column="maintainer" property="maintainer"/>
+        <result column="contacts" property="contacts"/>
+        <result column="install_address" property="installAddress"/>
+        <result column="remark" property="remark"/>
+        <result column="create_by" property="createBy"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="dept_id" property="deptId"/>
+        <result column="tenant_id" property="tenantId"/>
+        <result column="device_code" property="deviceCode"/>
+        <result column="ip_addr" property="ipAddr"/>
+        <result column="template_id" property="templateId"/>
     </resultMap>
 
 </mapper>

+ 21 - 0
service-meeting/service-meeting-biz/src/main/resources/mapper/meeting/MeetingTemplateMapper.xml

@@ -0,0 +1,21 @@
+<?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.meeting.mapper.MeetingTemplateMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.meeting.domain.MeetingTemplate">
+        <id column="id" property="id" />
+        <result column="name" property="name" />
+        <result column="fbl" property="fbl" />
+        <result column="s1_con" property="s1Con" />
+        <result column="s1_cover" property="s1Cover" />
+        <result column="layout" property="layout" />
+        <result column="type" property="type" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="update_by" property="updateBy" />
+        <result column="update_time" property="updateTime" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+
+</mapper>

部分文件因文件數量過多而無法顯示