liupeng 4 年之前
父節點
當前提交
de40f178a7

+ 4 - 2
code/sapparent/sapcms/src/main/java/org/fouram/controller/ApiController.java

@@ -22,6 +22,7 @@ import org.fouram.core.util.ResultUtil;
 import org.fouram.dto.input.GetToBeConfirmedListDTO;
 import org.fouram.dto.input.UpdateResultDTO;
 import org.fouram.dto.output.GetToBeConfirmedListOutput;
+import org.fouram.dto.output.SyncWeixinUserOutput;
 import org.fouram.entity.SapOrg;
 import org.fouram.entity.SapUser;
 import org.fouram.enums.DelFlagEnum;
@@ -243,12 +244,13 @@ public class ApiController extends BaseController {
 	}
 	
 	@ApiOperation(value = "手动同步SAP用户数据")
+	@ApiResponses(@ApiResponse(response = SyncWeixinUserOutput.class, code = 200, message = "success"))
 	@PostMapping(value = "/syncWeixinUser", produces = "application/json;charset=utf-8")
 	@ResponseBody
 	public Object syncWeixinUser() {
 		try {
-			syncSapUserToWxService.taskBiz();
-			return ResultUtil.success(null, "操作成功");
+			SyncWeixinUserOutput output = syncSapUserToWxService.syncWeixinUser();
+			return ResultUtil.success(output, "操作成功");
 		} catch (Exception e) {
 			LoggerUtil.error(e);
 			return ResultUtil.error(ResultConstant.WEB_ERR_MSG);

+ 4 - 0
code/sapparent/sapservice/src/main/java/org/fouram/constants/WebConstants.java

@@ -27,4 +27,8 @@ public final class WebConstants {
 	
 	public static final String OPRTYPE_DELETE = "DELETE";
 	
+	public static final Map<String, String> CACHE = Maps.newHashMap();
+	
+	public static final String CACHE_SYNC_SAP = "CACHE_SYNC_SAP";
+	
 }

+ 25 - 0
code/sapparent/sapservice/src/main/java/org/fouram/dto/output/SyncWeixinUserOutput.java

@@ -0,0 +1,25 @@
+package org.fouram.dto.output;
+
+import java.io.Serializable;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SyncWeixinUserOutput implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+	
+	@ApiModelProperty(value = "状态")
+	private String state;
+	
+	@ApiModelProperty(value = "同步中显示的同步时间")
+	private String time;
+}

+ 30 - 1
code/sapparent/sapservice/src/main/java/org/fouram/service/SyncSapUserToWxService.java

@@ -1,9 +1,15 @@
 package org.fouram.service;
 
 import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
+import org.fouram.constants.WebConstants;
 import org.fouram.core.base.service.BaseService;
 import org.fouram.core.plugin.weixin.cp.util.WXCpMessageUtil;
+import org.fouram.core.util.DateUtil;
+import org.fouram.core.util.LoggerUtil;
+import org.fouram.dto.output.SyncWeixinUserOutput;
 import org.fouram.entity.SapUser;
 import org.fouram.enums.DelFlagEnum;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,9 +25,31 @@ public class SyncSapUserToWxService extends BaseService {
 	private SapUserService sapUserService;
 	@Autowired
 	private WxDepartService wxDepartService;
-	
+
+	@Transactional
+	public SyncWeixinUserOutput syncWeixinUser() throws Exception {
+		if (WebConstants.CACHE.containsKey(WebConstants.CACHE_SYNC_SAP)) {
+			return SyncWeixinUserOutput.builder().state("同步中")
+					.time(WebConstants.CACHE.get(WebConstants.CACHE_SYNC_SAP)).build();
+		}
+		ExecutorService threadPool = Executors.newSingleThreadExecutor();
+		threadPool.execute(new Runnable() {
+			@Override
+			public void run() {
+				try {
+					taskBiz();
+				} catch (Exception e) {
+					LoggerUtil.error(e);
+				}
+			}
+		});
+		threadPool.shutdown();// 任务执行完毕,关闭线程池
+		return SyncWeixinUserOutput.builder().state("正在同步,请稍等").build();
+	}
+
 	@Transactional
 	public void taskBiz() throws Exception {
+		WebConstants.CACHE.put(WebConstants.CACHE_SYNC_SAP, DateUtil.getTime());
 		// 更新微信部门
 		wxDepartService.saveWxDeparts();
 		// 更新微信用户
@@ -38,6 +66,7 @@ public class SyncSapUserToWxService extends BaseService {
 		sapUserService.updateAllNormalSyncWxResult();
 		// 发送禁用企业微信账号信息
 		this.sendQuitUserMsg();
+		WebConstants.CACHE.remove(WebConstants.CACHE_SYNC_SAP);
 	}
 
 	// 发送禁用企业微信账号信息