liupeng 5 years ago
parent
commit
8104a4fff5

+ 30 - 9
code/sapparent/sapservice/src/main/java/org/fouram/core/plugin/weixin/cp/util/WXCpDepartUtil.java

@@ -72,18 +72,18 @@ public class WXCpDepartUtil {
 		return create(thirdOrgId, fourthOrg);
 	}
 
-	public static Long create(Long firstOrgWxId, Long secondOrgWxId, Long thirdOrgWxId, Long fourthOrgWxId)
-			throws WxErrorException {
-		if (secondOrgWxId == null) {
-			return firstOrgWxId;
+	public static Long create(Long firstOrgWxDepartId, Long secondOrgWxDepartId, Long thirdOrgWxDepartId,
+			Long fourthOrgWxDepartId) throws WxErrorException {
+		if (secondOrgWxDepartId == null) {
+			return firstOrgWxDepartId;
 		}
-		if (thirdOrgWxId == null) {
-			return secondOrgWxId;
+		if (thirdOrgWxDepartId == null) {
+			return secondOrgWxDepartId;
 		}
-		if (fourthOrgWxId == null) {
-			return thirdOrgWxId;
+		if (fourthOrgWxDepartId == null) {
+			return thirdOrgWxDepartId;
 		}
-		return fourthOrgWxId;
+		return fourthOrgWxDepartId;
 	}
 
 	private static Long create(Long parentId, String depatment) throws WxErrorException {
@@ -97,6 +97,27 @@ public class WXCpDepartUtil {
 		}
 		return depatmentId;
 	}
+	
+	public static Long createOrUpdate(Long id, Long parentId, String name) throws WxErrorException {
+		if(id == null) {
+			Map<String, Long> map = getChildDepartMap(parentId);
+			Long depatmentId = map.get(name);
+			if (depatmentId == null) {
+				WxCpDepart depart = new WxCpDepart();
+				depart.setName(name);
+				depart.setParentId(parentId);
+				depatmentId = departService.create(depart);
+			}
+			return depatmentId;
+		} else {
+			WxCpDepart depart = new WxCpDepart();
+			depart.setId(id);
+			depart.setName(name);
+			depart.setParentId(parentId);
+			departService.update(depart);
+			return id;
+		}
+	}
 
 	public static List<WxCpDepart> getAllChildDeparts(Long id) throws WxErrorException {
 		return departService.list(id);

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

@@ -35,18 +35,18 @@ public class WXCpUserUtil {
 		}
 	}
 
-	public static String createOrUpdate(String userId, String name, Long[] firstOrgWxIdList,
-			Long[] secondOrgWxIdList, Long[] thirdOrgWxIdList, Long[] fourthOrgWxIdList, String position,
-			String mobile, String gender, String email, String telephone, String firstOrgName) {
+	public static String createOrUpdate(String userId, String name, Long[] firstOrgWxDepartIdList,
+			Long[] secondOrgWxDepartIdList, Long[] thirdOrgWxDepartIdList, Long[] fourthOrgWxDepartIdList,
+			String position, String mobile, String gender, String email, String telephone, String firstOrgName) {
 		WxCpUser user = getById(userId);
 		try {
 			if (user == null) {
-				user = getUser(userId, name, firstOrgWxIdList, secondOrgWxIdList, thirdOrgWxIdList, fourthOrgWxIdList,
-						position, mobile, gender, email, telephone, firstOrgName);
+				user = getUser(userId, name, firstOrgWxDepartIdList, secondOrgWxDepartIdList, thirdOrgWxDepartIdList,
+						fourthOrgWxDepartIdList, position, mobile, gender, email, telephone, firstOrgName);
 				userService.create(user);
 			} else {
-				user = getUser(userId, name, firstOrgWxIdList, secondOrgWxIdList, thirdOrgWxIdList, fourthOrgWxIdList,
-						position, mobile, gender, email, telephone, firstOrgName);
+				user = getUser(userId, name, firstOrgWxDepartIdList, secondOrgWxDepartIdList, thirdOrgWxDepartIdList,
+						fourthOrgWxDepartIdList, position, mobile, gender, email, telephone, firstOrgName);
 				userService.update(user);
 			}
 			return "SUCCESS";
@@ -55,9 +55,10 @@ public class WXCpUserUtil {
 		}
 	}
 
-	private static WxCpUser getUser(String userId, String name, Long[] firstOrgWxIdList, Long[] secondOrgWxIdList,
-			Long[] thirdOrgWxIdList, Long[] fourthOrgWxIdList, String position, String mobile, String gender,
-			String email, String telephone, String firstOrgName) throws WxErrorException {
+	private static WxCpUser getUser(String userId, String name, Long[] firstOrgWxDepartIdList,
+			Long[] secondOrgWxDepartIdList, Long[] thirdOrgWxDepartIdList, Long[] fourthOrgWxDepartIdList,
+			String position, String mobile, String gender, String email, String telephone, String firstOrgName)
+			throws WxErrorException {
 		WxCpUser user = new WxCpUser();
 		if (Tools.notEmpty(userId)) {
 			user.setUserId(userId);
@@ -65,10 +66,10 @@ public class WXCpUserUtil {
 		if (Tools.notEmpty(name)) {
 			user.setName(name);
 		}
-		Long[] departIds = new Long[firstOrgWxIdList.length];
-		for (int i = 0; i < firstOrgWxIdList.length; i++) {
-			departIds[i] = WXCpDepartUtil.create(firstOrgWxIdList[i], secondOrgWxIdList[i], thirdOrgWxIdList[i],
-					fourthOrgWxIdList[i]);
+		Long[] departIds = new Long[firstOrgWxDepartIdList.length];
+		for (int i = 0; i < firstOrgWxDepartIdList.length; i++) {
+			departIds[i] = WXCpDepartUtil.create(firstOrgWxDepartIdList[i], secondOrgWxDepartIdList[i],
+					thirdOrgWxDepartIdList[i], fourthOrgWxDepartIdList[i]);
 		}
 		user.setDepartIds(departIds);
 		if (Tools.notEmpty(position)) {

+ 1 - 2
code/sapparent/sapservice/src/main/java/org/fouram/entity/SapOrg.java

@@ -22,6 +22,5 @@ public class SapOrg implements Serializable {
 	private String sapCode;
 	private String sapName; 
 	private String level;
-	private String wxDepartId;
-	private String wxDepartName; 
+	private Long wxDepartId;
 }

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

@@ -23,17 +23,17 @@ public class SapUser implements Serializable {
 	private String username;
 	private String name;
 	private String firstOrgId;
-	private String firstOrgName;
-	private Long firstOrgWxId;
 	private String secondOrgId;
-	private String secondOrgName;
-	private Long secondOrgWxId;
 	private String thirdOrgId;
-	private String thirdOrgName;
-	private Long thirdOrgWxId;
 	private String fourthOrgId;
+	private String firstOrgName;
+	private String secondOrgName;
+	private String thirdOrgName;
 	private String fourthOrgName;
-	private Long fourthOrgWxId;
+	private Long firstOrgWxDepartId;
+	private Long secondOrgWxDepartId;
+	private Long thirdOrgWxDepartId;
+	private Long fourthOrgWxDepartId;
 	private String position;
 	private String formatPosition;
 	private String mobile;

+ 12 - 0
code/sapparent/sapservice/src/main/java/org/fouram/mapper/SapOrgMapper.xml

@@ -13,4 +13,16 @@
 	<select id="selectOne" resultType="SapOrg">
 		select * from sap_org where parentId=#{parentId} and sapCode=#{sapCode} and level=#{level}
 	</select>
+	
+	<select id="findListByParentId" resultType="SapOrg">
+		select * from sap_org 
+		where 1=1
+		<if test="parentId != null and parentId != ''">
+			and parentId=#{parentId} 
+		</if>
+	</select>
+	
+	<update id="updateWxDepartId">
+		update sap_org set wxDepartId=#{wxDepartId} where id=#{id}
+	</update>
 </mapper>

+ 39 - 0
code/sapparent/sapservice/src/main/java/org/fouram/service/SapOrgService.java

@@ -6,6 +6,7 @@ import java.util.Map;
 
 import org.fouram.core.base.service.BaseService;
 import org.fouram.core.base.service.RequestService;
+import org.fouram.core.plugin.weixin.cp.util.WXCpDepartUtil;
 import org.fouram.core.util.Tools;
 import org.fouram.core.util.UUIDUtil;
 import org.fouram.entity.SapOrg;
@@ -118,4 +119,42 @@ public class SapOrgService extends BaseService {
 		}
 		return sapUsers;
 	}
+	
+	public void updateAllWxDepartId() throws Exception {
+		Map<String, Long> map = Maps.newHashMap();
+		List<SapOrg> firstOrgs = findListByParentId("0");
+		for (SapOrg firstOrg : firstOrgs) {
+			map.put(firstOrg.getId(),
+					WXCpDepartUtil.createOrUpdate(firstOrg.getWxDepartId(), 1L, firstOrg.getSapName()));
+			List<SapOrg> sencodOrgs = findListByParentId(firstOrg.getParentId());
+			for (SapOrg sencodOrg : sencodOrgs) {
+				map.put(firstOrg.getId(), WXCpDepartUtil.createOrUpdate(sencodOrg.getWxDepartId(),
+						firstOrg.getWxDepartId(), sencodOrg.getSapName()));
+				List<SapOrg> thirdOrgs = findListByParentId(sencodOrg.getParentId());
+				for (SapOrg thirdOrg : thirdOrgs) {
+					map.put(firstOrg.getId(), WXCpDepartUtil.createOrUpdate(thirdOrg.getWxDepartId(),
+							sencodOrg.getWxDepartId(), thirdOrg.getSapName()));
+					List<SapOrg> fourthOrgs = findListByParentId(thirdOrg.getParentId());
+					for (SapOrg fourthOrg : fourthOrgs) {
+						map.put(firstOrg.getId(), WXCpDepartUtil.createOrUpdate(fourthOrg.getWxDepartId(),
+								thirdOrg.getWxDepartId(), fourthOrg.getSapName()));
+					}
+				}
+			}
+		}
+		List<SapOrg> orgs = findListByParentId(null);
+		for(SapOrg org : orgs) {
+			org.setWxDepartId(map.get(org.getId()));
+			updateWxDepartId(org);
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+	public List<SapOrg> findListByParentId(String parentId) throws Exception {
+		return (List<SapOrg>) findList("SapOrgMapper.findListByParentId", parentId);
+	}
+
+	public void updateWxDepartId(SapOrg org) throws Exception {
+		update("SapOrgMapper.updateWxDepartId", org);
+	}
 }

+ 12 - 11
code/sapparent/sapservice/src/main/java/org/fouram/service/SapUserService.java

@@ -134,24 +134,25 @@ public class SapUserService extends BaseService {
 		System.out.println(personId);
 		List<SapUser> sapUsers = selectListByPersonId(personId);
 		SapUser wxSapUser = sapUsers.get(0);
-		Long[] firstOrgWxIdList = new Long[sapUsers.size()];
-		Long[] secondOrgWxIdList = new Long[sapUsers.size()];
-		Long[] thirdOrgWxIdList = new Long[sapUsers.size()];
-		Long[] fourthOrgWxIdList = new Long[sapUsers.size()];
+		Long[] firstOrgWxDepartIdList = new Long[sapUsers.size()];
+		Long[] secondOrgWxDepartIdList = new Long[sapUsers.size()];
+		Long[] thirdOrgWxDepartIdList = new Long[sapUsers.size()];
+		Long[] fourthOrgWxDepartIdList = new Long[sapUsers.size()];
 		for (int i = 0; i < sapUsers.size(); i++) {
 			SapUser sapUser = sapUsers.get(i);
 			String checkResult = checkSapUser(sapUser);
 			if (StringUtils.isNotBlank(checkResult)) {
 				return checkResult;
 			}
-			firstOrgWxIdList[i] = sapUser.getFirstOrgWxId();
-			secondOrgWxIdList[i] = sapUser.getSecondOrgWxId();
-			thirdOrgWxIdList[i] = sapUser.getThirdOrgWxId();
-			fourthOrgWxIdList[i] = sapUser.getFourthOrgWxId();
+			firstOrgWxDepartIdList[i] = sapUser.getFirstOrgWxDepartId();
+			secondOrgWxDepartIdList[i] = sapUser.getSecondOrgWxDepartId();
+			thirdOrgWxDepartIdList[i] = sapUser.getThirdOrgWxDepartId();
+			fourthOrgWxDepartIdList[i] = sapUser.getFourthOrgWxDepartId();
 		}
-		return WXCpUserUtil.createOrUpdate(personId, wxSapUser.getName(), firstOrgWxIdList, secondOrgWxIdList, thirdOrgWxIdList,
-				fourthOrgWxIdList, wxSapUser.getFormatPosition(), wxSapUser.getFormatMobile(), wxSapUser.getGender(),
-				wxSapUser.getFormatEmail(), wxSapUser.getFormatBusinessPhone(), wxSapUser.getFirstOrgName());
+		return WXCpUserUtil.createOrUpdate(personId, wxSapUser.getName(), firstOrgWxDepartIdList,
+				secondOrgWxDepartIdList, thirdOrgWxDepartIdList, fourthOrgWxDepartIdList, wxSapUser.getFormatPosition(),
+				wxSapUser.getFormatMobile(), wxSapUser.getGender(), wxSapUser.getFormatEmail(),
+				wxSapUser.getFormatBusinessPhone(), wxSapUser.getFirstOrgName());
 	}
 
 	public String checkSapUser(SapUser sapUser) {

+ 6 - 1
code/sapparent/sapservice/src/main/java/org/fouram/service/TaskService.java

@@ -13,6 +13,8 @@ import org.springframework.stereotype.Service;
 public class TaskService extends BaseService {
 
 	@Autowired
+	private SapOrgService sapOrgService;
+	@Autowired
 	private SapUserService sapUserService;
 
 	public void syncWeixinUser() {
@@ -22,6 +24,9 @@ public class TaskService extends BaseService {
 			sapUserService.updateAllDelete();
 			// 接口获取所有有效数据,保存或者更新delFlag=0
 			List<SapUser> getSapUsers = sapUserService.getSapUsers();
+
+			sapOrgService.updateAllWxDepartId();
+
 			LoggerUtil.info("接口获取所有有效数据->" + getSapUsers.size());
 			for (SapUser sapUser : getSapUsers) {
 				SapUser sapUserDb = sapUserService.selectOne(sapUser.getUserId());
@@ -30,7 +35,7 @@ public class TaskService extends BaseService {
 				} else {
 					if (!isEquals(sapUserDb, sapUser)) {
 						sapUserService.updateOneAndSyncWX(sapUser);
-					}else {
+					} else {
 						sapUserService.updateEnable(sapUser.getUserId());
 					}
 				}