Browse Source

临时使用远程调用处理作息管理变更生成任务

jiawuxian 2 years ago
parent
commit
2e812def39

+ 3 - 2
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteResumptionTaskService.java

@@ -3,6 +3,7 @@ package com.xunmei.system.api;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.constant.ServiceNameConstants;
 import com.xunmei.common.core.domain.R;
+import com.xunmei.common.core.event.WorkTimeChangeEvent;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.system.api.factory.RemoteEduTrainingFallbackFactory;
 import com.xunmei.system.api.factory.RemoteResumptionTaskFallbackFactory;
@@ -46,6 +47,6 @@ public interface RemoteResumptionTaskService {
 
     @GetMapping(value = "resumption/task/updatetaskstatus")
     R<Boolean> updateTaskStatus();
-    @PostMapping("resumption/task/dayTaskByWorkTime")
-    AjaxResult dayTaskByWorkTime(@RequestBody Map<String, Object> param,@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+    @PostMapping("api/resumption/rebuild")
+    AjaxResult rebuild(@RequestBody String event, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 }

+ 2 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteResumptionTaskFallbackFactory.java

@@ -1,6 +1,7 @@
 package com.xunmei.system.api.factory;
 
 import com.xunmei.common.core.domain.R;
+import com.xunmei.common.core.event.WorkTimeChangeEvent;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.system.api.RemoteEduTrainingService;
 import com.xunmei.system.api.RemoteOrgService;
@@ -61,7 +62,7 @@ public class RemoteResumptionTaskFallbackFactory implements FallbackFactory<Remo
             }
 
             @Override
-            public AjaxResult dayTaskByWorkTime(Map<String, Object> param,String source) {
+            public AjaxResult rebuild(String event, String source) {
                 return null;
             }
 

+ 6 - 2
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/event/WorkTimeChangeEvent.java

@@ -2,7 +2,9 @@ package com.xunmei.common.core.event;
 
 import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 import lombok.Getter;
+import lombok.Setter;
 import org.springframework.context.ApplicationEvent;
 
 import java.util.Date;
@@ -10,12 +12,14 @@ import java.util.List;
 
 
 @Getter
+@Setter
 public class WorkTimeChangeEvent extends ApplicationEvent {
 
     @ApiModelProperty(value = "机构id数组", notes = "受影响的机构")
-    private final List<Long> orgIds;
+    private List<Long> orgIds;
+
+    private List<SysWorkTime> dataList;
 
-    private final List<SysWorkTime> dataList;
 
     public WorkTimeChangeEvent(Object source, List<Long> orgIds, List<SysWorkTime> dataList) {
         super(source);

+ 12 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/ResumptionController.java

@@ -3,12 +3,17 @@ package com.xunmei.core.resumption.controller;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson2.JSON;
 import com.alibaba.nacos.common.utils.CollectionUtils;
+import com.alibaba.nacos.shaded.com.google.gson.Gson;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.constant.SystemParameterConstant;
+import com.xunmei.common.core.event.WorkTimeChangeEvent;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.redis.utils.RedisUtils;
+import com.xunmei.common.security.annotation.InnerAuth;
 import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.core.listener.WorkTimeChangeEventListener;
 import com.xunmei.core.resumption.domain.Resumption;
 import com.xunmei.core.resumption.dto.resumptionRegister.ResumptionTaskDataDto;
 import com.xunmei.core.resumption.dto.TaskDetailsDto;
@@ -46,7 +51,13 @@ public class ResumptionController {
     @Autowired
     ResumptionService resumptionService;
 
-
+    @Autowired
+    WorkTimeChangeEventListener workTimeChangeEventListener;
+    @PostMapping(value = "/rebuild")
+    @InnerAuth
+    void rebuildTask(@RequestBody String event){
+        workTimeChangeEventListener.onApplicationEvent(new Gson().fromJson(event,WorkTimeChangeEvent.class));
+    }
 
     @ApiOperation(value = "new所有")
     @PostMapping(value = "/newTaskList")

+ 31 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/listener/WorkTimeChangeEventListener.java

@@ -0,0 +1,31 @@
+package com.xunmei.system.listener;
+
+import com.alibaba.fastjson2.JSON;
+import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.event.WorkTimeChangeEvent;
+import com.xunmei.system.api.RemoteResumptionTaskService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationListener;
+import org.springframework.context.event.EventListener;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.event.TransactionPhase;
+import org.springframework.transaction.event.TransactionalEventListener;
+import springfox.documentation.spring.web.json.Json;
+
+@Component
+@Slf4j
+public class WorkTimeChangeEventListener implements ApplicationListener<WorkTimeChangeEvent> {
+
+
+    @Autowired
+    RemoteResumptionTaskService remoteResumptionTaskService;
+
+    @Override
+    @EventListener(WorkTimeChangeEvent.class)
+    @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT, fallbackExecution = true)
+    public void onApplicationEvent(WorkTimeChangeEvent event) {
+
+        remoteResumptionTaskService.rebuild(JSON.toJSONString(event), SecurityConstants.INNER);
+    }
+}