liupeng 5 lat temu
rodzic
commit
b2f1b5f13c

+ 10 - 1
code/sapparent/sapservice/src/main/java/org/fouram/mapper/SapOrgMapper.xml

@@ -17,13 +17,22 @@
 	<select id="selectListByParentId" resultType="SapOrg">
 		select * from sap_org 
 		where 1=1
+		and id in (SELECT DISTINCT firstOrgId from sap_user where delFlag = 0
+			union all SELECT DISTINCT secondOrgId from sap_user where delFlag = 0
+			union all SELECT DISTINCT thirdOrgId from sap_user where delFlag = 0
+			union all SELECT DISTINCT fourthOrgId from sap_user where delFlag = 0)
 		<if test="parentId != null and parentId != ''">
 			and parentId=#{parentId} 
 		</if>
 	</select>
 	
 	<select id="selectListByName" resultType="SapOrg">
-		select * from sap_org where sapName like CONCAT(CONCAT('%', #{pd.name}),'%')
+		select * from sap_org 
+		where sapName like CONCAT(CONCAT('%', #{pd.name}),'%')
+		and id in (SELECT DISTINCT firstOrgId from sap_user where delFlag = 0
+			union all SELECT DISTINCT secondOrgId from sap_user where delFlag = 0
+			union all SELECT DISTINCT thirdOrgId from sap_user where delFlag = 0
+			union all SELECT DISTINCT fourthOrgId from sap_user where delFlag = 0)
 	</select>
 	
 	<select id="selectById" resultType="SapOrg">

+ 50 - 54
code/sapparent/sapservice/src/main/java/org/fouram/service/TaskService.java

@@ -24,65 +24,61 @@ public class TaskService extends BaseService {
 	private SapUserService sapUserService;
 
 	@Transactional
-	public void syncWeixinUser() {
+	public void syncWeixinUser() throws Exception {
 		LoggerUtil.info("同步开始->" + DateUtil.getTime());
-		try {
-			// 更新所有数据删除
-			sapUserService.updateAllDelete();
-			
-			// 获取SAP所有用户数据
-			List<SapUser> getSapUsers = sapUserService.getSapUsers();
-			
-			// 根据机构获取对应企业微信id,同时更新企业微信对应部门名称
-			Map<String, Long> orgWxDepartMap = sapOrgService.updateAllWxDepartId();
-			
-			LoggerUtil.info("接口获取所有有效数据->" + getSapUsers.size());
-			
-			// 遍历用户,企业微信用户没有,新增用户并且同步企业微信;数据已有情况,数据未发生变化的,更新为未删除;数据发生变化的,同步微信用户,更新为未删除
-			for (int i = 0; i < getSapUsers.size(); i ++) {
-				SapUser sapUser = getSapUsers.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);
+		// 更新所有数据删除
+		sapUserService.updateAllDelete();
+
+		// 获取SAP所有用户数据
+		List<SapUser> getSapUsers = sapUserService.getSapUsers();
+
+		// 根据机构获取对应企业微信id,同时更新企业微信对应部门名称
+		Map<String, Long> orgWxDepartMap = sapOrgService.updateAllWxDepartId();
+
+		LoggerUtil.info("接口获取所有有效数据->" + getSapUsers.size());
+
+		// 遍历用户,企业微信用户没有,新增用户并且同步企业微信;数据已有情况,数据未发生变化的,更新为未删除;数据发生变化的,同步微信用户,更新为未删除
+		for (int i = 0; i < getSapUsers.size(); i++) {
+			SapUser sapUser = getSapUsers.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 {
-					if (!isEquals(sapUserDb, sapUser)) {
-						sapUserService.updateOneAndSyncWX(sapUser);
-					} else {
-						sapUserService.updateEnable(sapUser.getUserId());
-					}
-				}
-			}
-			
-			// 更新用户头像
-			List<SapUser> successUsers = sapUserService.selectSuccessList();
-			for (SapUser sapUser : successUsers) {
-				WxCpUser user = WXCpUserUtil.getById(sapUser.getPersonId());
-				if(user != null && StringUtils.isNotBlank(user.getAvatar())) {
-					sapUser.setAvatar(user.getAvatar());
-					sapUserService.updateAvatar(sapUser);
+					sapUserService.updateEnable(sapUser.getUserId());
 				}
 			}
-			
-			// 查询未更新delFlag数据对应企业微信账号
-			List<SapUser> deleteSapUsers = sapUserService.selectDeleteList();
-			LoggerUtil.info("SAP删除数据->" + deleteSapUsers.size());
-//			for(SapUser sapUser : deleteSapUsers) {
-//				WXCpUserUtil.delete(sapUser.getPersonId());
-//			}
-			
-			// 部分数据插入微信未成功,处理数据后,重新插入
-			List<SapUser> unSyncSapUsers = sapUserService.selectUnSyncList();
-			LoggerUtil.info("部分未成功插入数据->" + unSyncSapUsers.size());
-			for (SapUser sapUser : unSyncSapUsers) {
-				sapUserService.updateOneAndSyncWX(sapUser);
+		}
+
+		// 更新用户头像
+		List<SapUser> successUsers = sapUserService.selectSuccessList();
+		for (SapUser sapUser : successUsers) {
+			WxCpUser user = WXCpUserUtil.getById(sapUser.getPersonId());
+			if (user != null && StringUtils.isNotBlank(user.getAvatar())) {
+				sapUser.setAvatar(user.getAvatar());
+				sapUserService.updateAvatar(sapUser);
 			}
-		} catch (Exception e) {
-			LoggerUtil.error(e);
+		}
+
+		// 查询未更新delFlag数据对应企业微信账号
+		List<SapUser> deleteSapUsers = sapUserService.selectDeleteList();
+		LoggerUtil.info("SAP删除数据->" + deleteSapUsers.size());
+//		for(SapUser sapUser : deleteSapUsers) {
+//			WXCpUserUtil.delete(sapUser.getPersonId());
+//		}
+
+		// 部分数据插入微信未成功,处理数据后,重新插入
+		List<SapUser> unSyncSapUsers = sapUserService.selectUnSyncList();
+		LoggerUtil.info("部分未成功插入数据->" + unSyncSapUsers.size());
+		for (SapUser sapUser : unSyncSapUsers) {
+			sapUserService.updateOneAndSyncWX(sapUser);
 		}
 		LoggerUtil.info("同步结束->" + DateUtil.getTime());
 	}