liupeng 4 years ago
parent
commit
9dfe087140

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

@@ -63,16 +63,18 @@ public class SapUser implements Serializable {
 
 	private List<List<SapOrg>> departList;
 
-	public String getOrgName() {
+	public String getFullOrgName() {
+		StringBuffer sb = new StringBuffer(firstOrgName);
+		if (secondOrgName != null) {
+			sb.append("->").append(secondOrgName);
+		}
+		if (thirdOrgName != null) {
+			sb.append("->").append(thirdOrgName);
+		}
 		if (fourthOrgName != null) {
-			return fourthOrgName;
-		} else if (thirdOrgName != null) {
-			return thirdOrgName;
-		} else if (secondOrgName != null) {
-			return secondOrgName;
-		} else {
-			return firstOrgName;
+			sb.append("->").append(fourthOrgName);
 		}
+		return sb.toString();
 	}
 
 	@Override

+ 14 - 0
code/sapparent/sapservice/src/main/java/org/fouram/entity/WxUserDepart.java

@@ -27,4 +27,18 @@ public class WxUserDepart implements Serializable {
 	private String thirdDepartName;
 	private Long fourthDepartId;
 	private String fourthDepartName;
+	
+	public String getFullDepartName() {
+		StringBuffer sb = new StringBuffer(firstDepartName);
+		if (secondDepartName != null) {
+			sb.append("->").append(secondDepartName);
+		}
+		if (thirdDepartName != null) {
+			sb.append("->").append(thirdDepartName);
+		}
+		if (fourthDepartName != null) {
+			sb.append("->").append(fourthDepartName);
+		}
+		return sb.toString();
+	}
 }

+ 5 - 1
code/sapparent/sapservice/src/main/java/org/fouram/mapper/WxUserMapper.xml

@@ -29,9 +29,13 @@
 		SELECT userId from wx_user where delFlag=0
 	</select>
 	
-	<select id="selectWxUserDepart" resultType="WxUser">
+	<select id="selectWxUserDepartByUserIdAndDepartId" resultType="WxUser">
 		select * from wx_user_depart where userId=#{userId} and departId=#{departId}
 	</select>
+	
+	<select id="selectWxUserDepartsByUserId" resultType="WxUser">
+		select * from wx_user_depart where userId=#{userId}
+	</select>
 
 	<insert id="saveWxUserDepart">
 		insert into wx_user_depart(userId,departId,firstDepartId,firstDepartName,

+ 19 - 1
code/sapparent/sapservice/src/main/java/org/fouram/service/SapUserService.java

@@ -123,12 +123,30 @@ public class SapUserService extends BaseService {
 		WxUser wxUser = wxUserService.selectById(sapUser.getPersonId());
 		if (wxUser == null) {
 			return SapUserResultEnum.ENTRY;
-		} else if (!wxUser.getPosition().equals(sapUser.getPosition())) {
+		} else if (!wxUser.getPosition().equals(sapUser.getPosition()) || !wxUserService
+				.getFullDepartName(sapUser.getPersonId()).equals(getFullOrgName(sapUser.getPersonId()))) {
 			return SapUserResultEnum.SENSITIVE;
 		}
 		return null;
 	}
 
+	/**
+	 * 根据personId查询多个用户完整的机构名称信息
+	 * @param personId
+	 * @return
+	 * @throws Exception
+	 */
+	public String getFullOrgName(String personId) throws Exception {
+		List<SapUser> users = selectListByPersonId(personId);
+		StringBuffer sb = new StringBuffer();
+		for (SapUser user : users) {
+			if(sb.indexOf(user.getFullOrgName()) < 0) {
+				sb.append(user.getFullOrgName()).append(";");
+			}
+		}
+		return sb.substring(0, sb.length() - 1);
+	}
+
 	public void saveSapUser(SapUser entity) throws Exception {
 		entity.setCreateDate(new Date());
 		entity.setResult(SapUserResultEnum.NORMAL.getCode());

+ 19 - 3
code/sapparent/sapservice/src/main/java/org/fouram/service/WxUserService.java

@@ -74,7 +74,7 @@ public class WxUserService extends BaseService {
 					wxUserDepart.setFourthDepartName(departs.get(3).getName());
 					wxUserDepart.setFourthDepartId(departs.get(3).getId());
 				}
-				dbUserDepart = selectWxUserDepart(userId, departId);
+				dbUserDepart = selectWxUserDepartByUserIdAndDepartId(userId, departId);
 				if (dbUserDepart == null) {
 					save("WxUserMapper.saveWxUserDepart", wxUserDepart);
 				} else {
@@ -84,9 +84,14 @@ public class WxUserService extends BaseService {
 		}
 	}
 
-	public WxUserDepart selectWxUserDepart(String userId, Long departId) throws Exception {
+	public WxUserDepart selectWxUserDepartByUserIdAndDepartId(String userId, Long departId) throws Exception {
 		WxUserDepart wxUserDepart = WxUserDepart.builder().userId(userId).departId(departId).build();
-		return (WxUserDepart) findObject("WxUserMapper.selectWxUserDepart", wxUserDepart);
+		return (WxUserDepart) findObject("WxUserMapper.selectWxUserDepartByUserIdAndDepartId", wxUserDepart);
+	}
+	
+	@SuppressWarnings("unchecked")
+	public List<WxUserDepart> selectWxUserDepartsByUserId(String userId) throws Exception {
+		return (List<WxUserDepart>) findObject("WxUserMapper.selectWxUserDepartsByUserId", userId);
 	}
 
 	public WxUser selectById(String userId) throws Exception {
@@ -104,4 +109,15 @@ public class WxUserService extends BaseService {
 	public List<String> selectAllUserIds() throws Exception {
 		return (List<String>) findList("WxUserMapper.selectAllUserIds", null);
 	}
+
+	public String getFullDepartName(String userId) throws Exception {
+		List<WxUserDepart> wxUserDeparts = selectWxUserDepartsByUserId(userId);
+		StringBuffer sb = new StringBuffer();
+		for(WxUserDepart wxUserDepart : wxUserDeparts) {
+			if(sb.indexOf(wxUserDepart.getFullDepartName()) < 0) {
+				sb.append(wxUserDepart.getFullDepartName()).append(";");
+			}
+		}
+		return sb.substring(0, sb.length() - 1);
+	}
 }