liupeng 4 tahun lalu
induk
melakukan
d067808f9f

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

@@ -10,7 +10,6 @@ import javax.servlet.http.HttpSession;
 
 import org.apache.commons.lang3.StringUtils;
 import org.fouram.constants.WebConstants;
-import org.fouram.constants.WebConstants.DelFlagEnum;
 import org.fouram.core.base.controller.BaseController;
 import org.fouram.core.plugin.weixin.cp.core.WXCpMailList;
 import org.fouram.core.util.AppUtil;
@@ -22,6 +21,7 @@ import org.fouram.core.util.LoggerUtil;
 import org.fouram.core.util.ResultUtil;
 import org.fouram.entity.SapOrg;
 import org.fouram.entity.SapUser;
+import org.fouram.enums.DelFlagEnum;
 import org.fouram.input.FindUsersDTO;
 import org.fouram.service.SapCheckReportService;
 import org.fouram.service.SapOrgService;
@@ -198,7 +198,7 @@ public class ApiController extends BaseController {
 				return AppUtil.error("参数用户ID不可以为空");
 			}
 			SapUser sapUser = sapUserService.selectByUserId(userId);
-			if (sapUser.getDelFlag().intValue() != DelFlagEnum.UNABLE.intValue()) {
+			if (!DelFlagEnum.UNABLE.getCode().equals(sapUser.getDelFlag())) {
 				return AppUtil.error("该用户ID不是离职数据");
 			}
 			// 操作用户ID

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

@@ -6,7 +6,7 @@ import org.fouram.core.util.AppUtil.ResultConstant;
 import org.fouram.core.util.LoggerUtil;
 import org.fouram.service.SapReportService;
 import org.fouram.service.SapUserService;
-import org.fouram.service.TaskService;
+import org.fouram.service.SyncSapUserToWxService;
 import org.fouram.service.TestUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -18,13 +18,13 @@ import org.springframework.web.bind.annotation.ResponseBody;
 public class TaskController extends BaseController {
 
 	@Autowired
-	private TaskService taskService;
-	@Autowired
 	private SapUserService sapUserService;
 	@Autowired
 	private TestUserService testUserService;
 	@Autowired
 	private SapReportService sapReportService;
+	@Autowired
+	private SyncSapUserToWxService syncSapUserToWxService;
 
 	/**
 	 * http://localhost:8080/sapcms/task/syncWeixinUser
@@ -34,7 +34,7 @@ public class TaskController extends BaseController {
 	@ResponseBody
 	public Object syncWeixinUser() {
 		try {
-			taskService.syncWeixinUser();
+			syncSapUserToWxService.execute();
 			return AppUtil.success();
 		} catch (Exception e) {
 			LoggerUtil.error(e);

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

@@ -14,8 +14,6 @@ public final class WebConstants {
 
 	public static final String INGORE_PERSONIDS = ConfConfig.getConfigString("ingorePersonIds");
 
-	public static final String SUCCESS = "SUCCESS";
-	
 	// optionId->label键值对
 	public static final Map<String, String> LABEL_MAP = Maps.newHashMap();
 	
@@ -29,9 +27,4 @@ public final class WebConstants {
 	
 	public static final String OPRTYPE_DELETE = "DELETE";
 	
-	public interface DelFlagEnum {
-		Integer ENABLE = 0;
-		Integer UNABLE = 1;
-		Integer DELETED = 2;
-	}
 }

+ 3 - 3
code/sapparent/sapservice/src/main/java/org/fouram/core/plugin/weixin/cp/util/WXCpUserUtil.java

@@ -5,8 +5,8 @@ import static org.fouram.core.plugin.weixin.cp.core.WXCpBase.userService;
 import java.util.List;
 import java.util.Set;
 
-import org.fouram.constants.WebConstants;
 import org.fouram.core.util.Tools;
+import org.fouram.enums.SapUserResultEnum;
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
@@ -36,7 +36,7 @@ public class WXCpUserUtil {
 						email);
 				userService.update(user);
 			}
-			return WebConstants.SUCCESS;
+			return SapUserResultEnum.SUCCESS.getCode();
 		} catch (WxErrorException e) {
 			return e.getMessage();
 		}
@@ -57,7 +57,7 @@ public class WXCpUserUtil {
 						firstOrgName);
 				userService.update(user);
 			}
-			return "SUCCESS";
+			return SapUserResultEnum.SUCCESS.getCode();
 		} catch (WxErrorException e) {
 			return e.getMessage();
 		}

+ 6 - 5
code/sapparent/sapservice/src/main/java/org/fouram/entity/SapUser.java

@@ -26,7 +26,7 @@ public class SapUser implements Serializable {
 	private String username;
 	// 姓名
 	private String name;
-	
+
 	// sap机构
 	private String firstOrgId;
 	private String secondOrgId;
@@ -36,13 +36,13 @@ public class SapUser implements Serializable {
 	private String secondOrgName;
 	private String thirdOrgName;
 	private String fourthOrgName;
-	
+
 	// 微信机构
 	private Long firstOrgWxDepartId;
 	private Long secondOrgWxDepartId;
 	private Long thirdOrgWxDepartId;
 	private Long fourthOrgWxDepartId;
-	
+
 	private String position;
 	private String formatPosition;
 	// 手机
@@ -56,13 +56,14 @@ public class SapUser implements Serializable {
 	private String formatEmail;
 	private Boolean isPrimary;
 	private String result;
-	private Integer delFlag;
+	private String delFlag;
 	private Date createDate;
 	private Integer sortNumber;
 
 	private List<List<SapOrg>> departList;
 
-	public String toCompareString() {
+	@Override
+	public String toString() {
 		StringBuilder sBuilder = new StringBuilder();
 		sBuilder.append(userId).append(personId).append(username).append(name).append(firstOrgName).append(firstOrgId)
 				.append(firstOrgWxDepartId).append(secondOrgName).append(secondOrgId).append(secondOrgWxDepartId)

+ 22 - 0
code/sapparent/sapservice/src/main/java/org/fouram/enums/DelFlagEnum.java

@@ -0,0 +1,22 @@
+package org.fouram.enums;
+
+public enum DelFlagEnum {
+	
+	ENABLE("ENABLE", "有效"), UNABLE("UNABLE", "无效"), DELETED("DELETED", "确认删除");
+
+	private final String code;
+	private final String desc;
+
+	DelFlagEnum(String code, String desc) {
+		this.code = code;
+		this.desc = desc;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public String getDesc() {
+		return desc;
+	}
+}

+ 23 - 0
code/sapparent/sapservice/src/main/java/org/fouram/enums/SapUserResultEnum.java

@@ -0,0 +1,23 @@
+package org.fouram.enums;
+
+public enum SapUserResultEnum {
+
+	SUCCESS("SUCCESS", "执行成功"), SENSITIVE("SENSITIVE", "敏感数据"), LEAVE("LEAVE", "离职"), ENTRY("ENTRY", "入职"),
+	GARBAGE("GARBAGE", "垃圾数据");
+
+	private final String code;
+	private final String desc;
+
+	SapUserResultEnum(String code, String desc) {
+		this.code = code;
+		this.desc = desc;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public String getDesc() {
+		return desc;
+	}
+}

+ 2 - 6
code/sapparent/sapservice/src/main/java/org/fouram/mapper/SapUserMapper.xml

@@ -61,8 +61,8 @@
 		select * from sap_user where delFlag = 1 and isPrimary = 1
 	</select>
 	
-	<update id="updateAllDelete">
-		update sap_user set delFlag = 1
+	<update id="updateAllDelFlag">
+		update sap_user set delFlag = #{delFlag}
 	</update>
 	
 	<select id="selectReportUserList" resultType="SapUser">
@@ -98,8 +98,4 @@
 		</if>
 		order by sortNumber ASC
 	</select>
-	
-	<delete id="updatDelFlagByUserId">
-		update sap_user set delFlag = #{delFlag} where userId=#{userId} 
-	</delete>
 </mapper>

+ 27 - 35
code/sapparent/sapservice/src/main/java/org/fouram/service/SapUserService.java

@@ -6,7 +6,6 @@ import java.util.List;
 
 import org.apache.commons.lang3.StringUtils;
 import org.fouram.constants.WebConstants;
-import org.fouram.constants.WebConstants.DelFlagEnum;
 import org.fouram.core.base.model.PageData;
 import org.fouram.core.base.service.BaseService;
 import org.fouram.core.base.service.RequestService;
@@ -17,6 +16,8 @@ import org.fouram.core.util.JsonNodeUtil;
 import org.fouram.core.util.Tools;
 import org.fouram.entity.SapOrg;
 import org.fouram.entity.SapUser;
+import org.fouram.enums.DelFlagEnum;
+import org.fouram.enums.SapUserResultEnum;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Service;
@@ -88,27 +89,23 @@ public class SapUserService extends BaseService {
 		return sapUsers;
 	}
 
-	public void saveOneAndSyncWX(SapUser entity) throws Exception {
+	public void saveSapUser(SapUser entity) throws Exception {
 		entity.setCreateDate(new Date());
-		entity.setDelFlag(DelFlagEnum.ENABLE);
+		entity.setDelFlag(DelFlagEnum.ENABLE.getCode());
 		save("SapUserMapper.saveOne", entity);
-		// 更新同步企业微信备注
-		updateWXResult(entity.getPersonId());
 	}
 
-	public void updateEnable(String userId) throws Exception {
-		SapUser entity = SapUser.builder().userId(userId).delFlag(DelFlagEnum.ENABLE).build();
+	public void updateDelFlag(String userId, DelFlagEnum delFlagEnum) throws Exception {
+		SapUser entity = SapUser.builder().userId(userId).delFlag(delFlagEnum.getCode()).build();
 		update("SapUserMapper.updateDelFlag", entity);
 	}
 
-	public void updateOneAndSyncWX(SapUser entity) throws Exception {
-		entity.setDelFlag(DelFlagEnum.ENABLE);
+	public void updateSapUser(SapUser entity) throws Exception {
+		entity.setDelFlag(DelFlagEnum.ENABLE.getCode());
 		update("SapUserMapper.updateOne", entity);
-		// 更新同步企业微信备注
-		updateWXResult(entity.getPersonId());
 	}
 
-	public void updateWXResult(String personId) throws Exception {
+	public void updateSyncWxResult(String personId) throws Exception {
 		String result = createOrUpdateWXUser(personId);
 		SapUser entity = SapUser.builder().personId(personId).result(result).build();
 		update("SapUserMapper.updateResult", entity);
@@ -117,7 +114,7 @@ public class SapUserService extends BaseService {
 	private String createOrUpdateWXUser(String personId) throws Exception {
 		// 测试
 		if (isTestWXSync) {
-			return "TEST-" + WebConstants.SUCCESS;
+			return "TEST-" + SapUserResultEnum.SUCCESS.getCode();
 		}
 		List<SapUser> sapUsers = selectListByPersonId(personId);
 		SapUser wxSapUser = sapUsers.get(0);
@@ -142,14 +139,16 @@ public class SapUserService extends BaseService {
 				wxSapUser.getFormatBusinessPhone(), wxSapUser.getFirstOrgName());
 	}
 
+	/**
+	 * 判断是不是垃圾数据
+	 * 
+	 * @param sapUser
+	 * @return
+	 */
 	public String checkSapUser(SapUser sapUser) {
-		if (Tools.isEmpty(sapUser.getPersonId())) {
-			return "员工ID为空";
-		} else if (Tools.isEmpty(sapUser.getFirstOrgName())) {
-			return "一级组织为空";
-		}
-		if (WebConstants.INGORE_PERSONIDS.contains("," + sapUser.getPersonId() + ",")) {
-			return "忽略数据(兼职用户)";
+		if (Tools.isEmpty(sapUser.getPersonId()) || Tools.isEmpty(sapUser.getFirstOrgName())
+				|| WebConstants.INGORE_PERSONIDS.contains("," + sapUser.getPersonId() + ",")) {
+			return SapUserResultEnum.GARBAGE.getCode();
 		}
 		return null;
 	}
@@ -173,8 +172,8 @@ public class SapUserService extends BaseService {
 		return (List<SapUser>) findList("SapUserMapper.selectDeleteList", null);
 	}
 
-	public void updateAllDelete() throws Exception {
-		update("SapUserMapper.updateAllDelete", null);
+	public void updateAllDelFlag(String delFlag) throws Exception {
+		update("SapUserMapper.updateAllDelFlag", delFlag);
 	}
 
 	public static void main(String[] args) {
@@ -250,31 +249,24 @@ public class SapUserService extends BaseService {
 		update("SapUserMapper.updateAvatar", sapUser);
 	}
 
-	public void updatDelFlagByUserId(String userId, Integer delFlag) throws Exception {
-		PageData pd = new PageData();
-		pd.put("userId", userId);
-		pd.put("delFlag", delFlag);
-		update("SapUserMapper.updatDelFlagByUserId", pd);
-	}
-
 	public void deleteQuitUserByUserId(String userId, String oprUserId) throws Exception {
 		SapUser sapUser = selectByUserId(userId);
 		String personId = sapUser.getPersonId();
 		List<SapUser> sapUsers = selectListByPersonId(personId);
-		for(SapUser user : sapUsers) {
-			updatDelFlagByUserId(user.getUserId(), DelFlagEnum.DELETED);
+		for (SapUser user : sapUsers) {
+			updateDelFlag(user.getUserId(), DelFlagEnum.DELETED);
 		}
 		WXCpUserUtil.delete(personId);
 		sapOprLogService.saveOne(JSONUtil.toString(sapUsers), WebConstants.OPRTYPE_DELETE, oprUserId);
 	}
-	
+
 	public void updateUnableData() throws Exception {
 		List<SapUser> users = selectSuccessList();
-		for(SapUser user : users) {
+		for (SapUser user : users) {
 			WxCpUser wxUser = WXCpUserUtil.getByIdOrEmail(user.getUserId(), null);
-			if(wxUser == null) {
+			if (wxUser == null) {
 				System.out.println(user.getUserId());
-				updatDelFlagByUserId(user.getUserId(), DelFlagEnum.UNABLE);
+				updateDelFlag(user.getUserId(), DelFlagEnum.UNABLE);
 			}
 		}
 	}

+ 96 - 94
code/sapparent/sapservice/src/main/java/org/fouram/service/TaskService.java

@@ -1,94 +1,96 @@
-package org.fouram.service;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.lang3.StringUtils;
-import org.fouram.core.base.service.BaseService;
-import org.fouram.core.plugin.weixin.cp.util.WXCpMessageUtil;
-import org.fouram.core.plugin.weixin.cp.util.WXCpUserUtil;
-import org.fouram.core.util.DateUtil;
-import org.fouram.core.util.LoggerUtil;
-import org.fouram.entity.SapUser;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import me.chanjar.weixin.cp.bean.WxCpUser;
-
-@Service
-public class TaskService extends BaseService {
-
-	@Autowired
-	private SapOrgService sapOrgService;
-	@Autowired
-	private SapUserService sapUserService;
-
-	@Transactional
-	public void syncWeixinUser() throws Exception {
-		LoggerUtil.info("同步开始->" + DateUtil.getTime());
-
-		// 更新所有数据删除
-		sapUserService.updateAllDelete();
-
-		// 获取SAP所有用户数据
-		List<SapUser> sapUsers = sapUserService.getUsersFromSap();
-
-		// 根据机构获取对应企业微信id,同时更新企业微信对应部门名称
-		Map<String, Long> orgWxDepartMap = sapOrgService.updateAllWxDepartId();
-
-		LoggerUtil.info("接口获取所有有效数据->" + sapUsers.size());
-
-		// 遍历用户,企业微信用户没有,新增用户并且同步企业微信;数据已有情况,数据未发生变化的,更新为未删除;数据发生变化的,同步微信用户,更新为未删除
-		for (int i = 0; i < sapUsers.size(); i++) {
-			SapUser sapUser = sapUsers.get(i);
-			sapUser.setFirstOrgWxDepartId(orgWxDepartMap.get(sapUser.getFirstOrgId()));
-			sapUser.setSecondOrgWxDepartId(orgWxDepartMap.get(sapUser.getSecondOrgId()));
-			sapUser.setThirdOrgWxDepartId(orgWxDepartMap.get(sapUser.getThirdOrgId()));
-			sapUser.setFourthOrgWxDepartId(orgWxDepartMap.get(sapUser.getFourthOrgId()));
-			sapUser.setSortNumber(i + 1);
-			SapUser sapUserDb = sapUserService.selectByUserId(sapUser.getUserId());
-			if (sapUserDb == null) {
-				sapUserService.saveOneAndSyncWX(sapUser);
-			} else {
-				if (!isEquals(sapUserDb, sapUser)) {
-					sapUserService.updateOneAndSyncWX(sapUser);
-				} else {
-					sapUserService.updateEnable(sapUser.getUserId());
-				}
-			}
-		}
-
-		// 更新用户头像
-		List<SapUser> successUsers = sapUserService.selectSuccessList();
-		for (SapUser sapUser : successUsers) {
-			WxCpUser user = WXCpUserUtil.getByIdOrEmail(sapUser.getPersonId(), sapUser.getEmail());
-			if (user != null && StringUtils.isNotBlank(user.getAvatar())) {
-				sapUser.setAvatar(user.getAvatar());
-				sapUserService.updateAvatar(sapUser);
-			}
-		}
-
-		// 查询禁用企业微信账号
-		List<SapUser> unableSapUsers = sapUserService.selectDeleteList();
-		LoggerUtil.info("SAP禁用数据->" + unableSapUsers.size());
-		if (unableSapUsers.size() > 0) {
-			WXCpMessageUtil.sendQuitUserMsg("离职用户" + unableSapUsers.size() + "个,请确认");
-		}
-
-		// 部分数据插入微信未成功,处理数据后,重新插入
-		List<SapUser> unSyncSapUsers = sapUserService.selectUnSyncList();
-		LoggerUtil.info("部分未成功插入数据->" + unSyncSapUsers.size());
-		for (SapUser sapUser : unSyncSapUsers) {
-			sapUserService.updateOneAndSyncWX(sapUser);
-		}
-		LoggerUtil.info("同步结束->" + DateUtil.getTime());
-	}
-
-	private boolean isEquals(SapUser sapUserDb, SapUser sapUser) {
-		if (sapUserDb.toCompareString().equals(sapUser.toCompareString())) {
-			return true;
-		}
-		return false;
-	}
-}
+package org.fouram.service;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+import org.fouram.core.base.service.BaseService;
+import org.fouram.core.plugin.weixin.cp.util.WXCpMessageUtil;
+import org.fouram.core.plugin.weixin.cp.util.WXCpUserUtil;
+import org.fouram.core.util.DateUtil;
+import org.fouram.core.util.LoggerUtil;
+import org.fouram.entity.SapUser;
+import org.fouram.enums.DelFlagEnum;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import me.chanjar.weixin.cp.bean.WxCpUser;
+
+@Service
+public class SyncSapUserToWxService extends BaseService {
+
+	@Autowired
+	private SapOrgService sapOrgService;
+	@Autowired
+	private SapUserService sapUserService;
+
+	@Transactional
+	public void execute() throws Exception {
+
+		// 更新所有数据无效
+		sapUserService.updateAllDelFlag(DelFlagEnum.UNABLE.getCode());
+
+		// 获取SAP所有用户数据
+		List<SapUser> sapUsers = sapUserService.getUsersFromSap();
+
+		// 根据机构获取对应企业微信id,同时更新企业微信对应部门名称
+		Map<String, Long> orgWxDepartMap = sapOrgService.updateAllWxDepartId();
+
+		LoggerUtil.info("接口获取所有有效数据->" + sapUsers.size());
+
+		// 遍历用户,企业微信用户没有,新增用户并且同步企业微信;数据已有情况,数据未发生变化的,更新为未删除;数据发生变化的,同步微信用户,更新为未删除
+		for (int i = 0; i < sapUsers.size(); i++) {
+			SapUser sapUser = sapUsers.get(i);
+			sapUser.setFirstOrgWxDepartId(orgWxDepartMap.get(sapUser.getFirstOrgId()));
+			sapUser.setSecondOrgWxDepartId(orgWxDepartMap.get(sapUser.getSecondOrgId()));
+			sapUser.setThirdOrgWxDepartId(orgWxDepartMap.get(sapUser.getThirdOrgId()));
+			sapUser.setFourthOrgWxDepartId(orgWxDepartMap.get(sapUser.getFourthOrgId()));
+			sapUser.setSortNumber(i + 1);
+			SapUser sapUserDb = sapUserService.selectByUserId(sapUser.getUserId());
+			if (sapUserDb == null) {
+				sapUserService.saveSapUser(sapUser);
+			} else {
+				if (!sapUserDb.toString().equals(sapUser.toString())) {
+					sapUserService.updateSapUser(sapUser);
+				} else {
+					sapUserService.updateDelFlag(sapUser.getUserId(), DelFlagEnum.ENABLE);
+				}
+			}
+		}
+
+		// 更新用户头像
+		this.updateAvatar();
+
+		// 发送禁用企业微信账号信息
+		this.sendQuitUserMsg();
+
+		// 部分数据插入微信未成功,处理数据后,重新插入
+		List<SapUser> unSyncSapUsers = sapUserService.selectUnSyncList();
+		LoggerUtil.info("部分未成功插入数据->" + unSyncSapUsers.size());
+		for (SapUser sapUser : unSyncSapUsers) {
+			sapUserService.updateSyncWxResult(sapUser.getPersonId());
+		}
+		LoggerUtil.info("同步结束->" + DateUtil.getTime());
+	}
+
+	// 更新用户头像
+	private void updateAvatar() throws Exception {
+		List<SapUser> successUsers = sapUserService.selectSuccessList();
+		for (SapUser sapUser : successUsers) {
+			WxCpUser user = WXCpUserUtil.getByIdOrEmail(sapUser.getPersonId(), sapUser.getEmail());
+			if (user != null && StringUtils.isNotBlank(user.getAvatar())) {
+				sapUser.setAvatar(user.getAvatar());
+				sapUserService.updateAvatar(sapUser);
+			}
+		}
+	}
+
+	// 发送禁用企业微信账号信息
+	private void sendQuitUserMsg() throws Exception {
+		List<SapUser> unableSapUsers = sapUserService.selectDeleteList();
+		if (unableSapUsers.size() > 0) {
+			WXCpMessageUtil.sendQuitUserMsg("离职用户" + unableSapUsers.size() + "个,请确认");
+		}
+	}
+}