TRX 1 год назад
Родитель
Сommit
c6babd25ec

+ 31 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/fix/FixDataController.java

@@ -0,0 +1,31 @@
+package com.zhongshu.card.server.core.controller.fix;
+
+import com.zhongshu.card.client.ret.ResultContent;
+import com.zhongshu.card.server.core.service.fix.FixDataService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author TRX
+ * @date 2024/6/27
+ */
+@RequestMapping("/fixData")
+@RestController
+@Validated
+@Tag(name = "Fix修复数据")
+public class FixDataController {
+
+    @Autowired
+    private FixDataService fixDataService;
+
+    @Operation(summary = "同步全部项目到物联网平台")
+    @RequestMapping(value = "fixSyncDevice", method = {RequestMethod.GET})
+    public ResultContent fixSyncDevice() {
+        return fixDataService.fixSyncProjectToIot();
+    }
+}

+ 22 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/event/ProjectSyncEvent.java

@@ -0,0 +1,22 @@
+package com.zhongshu.card.server.core.event;
+
+import lombok.Getter;
+import org.springframework.context.ApplicationEvent;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author TRX
+ * @date 2024/6/26
+ */
+public class ProjectSyncEvent extends ApplicationEvent {
+
+    @Getter
+    private List<String> projectIds = new ArrayList<String>();
+
+    public ProjectSyncEvent(Object source, List<String> projectIds) {
+        super(source);
+        this.projectIds = projectIds;
+    }
+}

+ 34 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/fix/FixDataService.java

@@ -0,0 +1,34 @@
+package com.zhongshu.card.server.core.service.fix;
+
+import com.zhongshu.card.client.ret.ResultContent;
+import com.zhongshu.card.server.core.dao.org.OrganizationDao;
+import com.zhongshu.card.server.core.service.sync.ProjectSyncIotCenterService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author TRX
+ * @date 2024/6/28
+ */
+@Slf4j
+@Service
+public class FixDataService {
+
+    @Autowired
+    OrganizationDao organizationDao;
+
+    @Autowired
+    ProjectSyncIotCenterService projectSyncIotCenterService;
+
+    /**
+     * 同步项目信息到物联网平台
+     *
+     * @return
+     */
+    public ResultContent fixSyncProjectToIot() {
+
+        return ResultContent.buildSuccess();
+    }
+
+}

+ 38 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/sync/ProjectSyncIotCenterService.java

@@ -1,11 +1,22 @@
 package com.zhongshu.card.server.core.service.sync;
 
+import com.github.microservice.auth.security.type.AuthType;
+import com.zhongshu.card.client.ret.ResultContent;
 import com.zhongshu.card.server.core.dao.org.OrganizationDao;
 import com.zhongshu.card.server.core.domain.org.Organization;
+import com.zhongshu.card.server.core.event.ProjectSyncEvent;
+import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.event.EventListener;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * @author TRX
  * @date 2024/6/27
@@ -17,4 +28,31 @@ public class ProjectSyncIotCenterService {
     @Autowired
     OrganizationDao organizationDao;
 
+    @Autowired
+    ApplicationContext applicationContext;
+
+    public ResultContent noticeSyncProjects(List<Organization> list) {
+        if (ObjectUtils.isNotEmpty(list)) {
+            List<String> projectIds = list.stream().map(it -> it.getOid()).collect(Collectors.toList());
+            ProjectSyncEvent event = new ProjectSyncEvent(this, projectIds);
+            applicationContext.publishEvent(event);
+        }
+        return ResultContent.buildSuccess();
+    }
+
+    public ResultContent noticeSyncProject(Organization organization) {
+        if (ObjectUtils.isNotEmpty(organization) && organization.getAuthType() == AuthType.Project) {
+            List<String> projectIds = List.of(organization.getOid());
+            ProjectSyncEvent event = new ProjectSyncEvent(this, projectIds);
+            applicationContext.publishEvent(event);
+        }
+        return ResultContent.buildSuccess();
+    }
+
+    @EventListener(classes = ProjectSyncEvent.class)
+    @Async
+    @SneakyThrows
+    public void syncProjectInfo(ProjectSyncEvent event) {
+
+    }
 }