liupeng 5 éve
szülő
commit
11be9df72d

+ 2 - 0
code/sapparent/sapservice/src/main/java/org/fouram/entity/WxUser.java

@@ -20,4 +20,6 @@ public class WxUser implements Serializable {
 	private String userId;
 	private String name;
 	private Long departId;
+	private String firstDepartName;
+	private String secondDepartName;
 }

+ 4 - 0
code/sapparent/sapservice/src/main/java/org/fouram/mapper/WxDepartMapper.xml

@@ -5,4 +5,8 @@
 		insert into wx_depart(id,name,parentId,orderBy) 
 		values (#{id},#{name},#{parentId},#{order})
 	</insert>
+	
+	<select id="findById" resultType="WxDepart">
+		select * from wx_depart where id=#{id}
+	</select>
 </mapper>

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

@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="WxUserMapper">
 	<insert id="save">
-		insert into wx_user(userId,name,sapExists) 
-		values (#{userId},#{name},'0')
+		insert into wx_user(userId,name,firstDepartName,secondDepartName,sapExists) 
+		values (#{userId},#{name},#{firstDepartName},#{secondDepartName},'0')
 	</insert>
 </mapper>

+ 25 - 0
code/sapparent/sapservice/src/main/java/org/fouram/service/WxDepartService.java

@@ -1,9 +1,13 @@
 package org.fouram.service;
 
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
+import org.fouram.constants.WebConstants;
 import org.fouram.core.base.service.BaseService;
 import org.fouram.core.plugin.weixin.cp.util.WXCpDepartUtil;
+import org.fouram.entity.WxDepart;
 import org.springframework.stereotype.Service;
 
 import me.chanjar.weixin.cp.bean.WxCpDepart;
@@ -17,4 +21,25 @@ public class WxDepartService extends BaseService {
 			save("WxDepartMapper.save", depart);
 		}
 	}
+	
+	public List<WxDepart> findParentList(Long id) throws Exception {
+		List<WxDepart> wxDeparts = new ArrayList<>();
+		Collections.reverse(findParent(wxDeparts, id));
+		return wxDeparts;
+	}
+	
+	private List<WxDepart> findParent(List<WxDepart> wxDeparts, Long id) throws Exception {
+		WxDepart wxDepart = selectById(id);
+		if(wxDepart != null){
+			wxDeparts.add(wxDepart);
+			if (!WebConstants.TOP_DEPART.equals(wxDepart.getParentId())) {
+				findParent(wxDeparts, wxDepart.getParentId());
+			}
+		}
+		return wxDeparts;
+	}
+	
+	public WxDepart selectById(Long id) throws Exception {
+		return (WxDepart) findObject("WxDepartMapper.selectById", id);
+	}
 }

+ 25 - 0
code/sapparent/sapservice/src/main/java/org/fouram/service/WxUserService.java

@@ -1,24 +1,49 @@
 package org.fouram.service;
 
 import java.util.List;
+import java.util.Map;
 
 import org.fouram.core.base.service.BaseService;
 import org.fouram.core.plugin.weixin.cp.util.WXCpUserUtil;
+import org.fouram.entity.WxDepart;
 import org.fouram.entity.WxUser;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import com.google.common.collect.Maps;
+
 import me.chanjar.weixin.cp.bean.WxCpUser;
 
 @Service
 public class WxUserService extends BaseService {
+	
+	@Autowired
+	private WxDepartService wxDepartService;
+	
+	private Map<Long, List<WxDepart>> userDepartMap = Maps.newHashMap();
 
 	public void saveUsers() throws Exception {
 		List<WxCpUser> users = WXCpUserUtil.listAllUser();
+		List<WxDepart> departs = null;
 		WxUser wxUser = null;
 		for (WxCpUser user : users) {
 			wxUser = WxUser.builder().userId(user.getUserId()).name(user.getName()).departId(user.getDepartIds()[0])
 					.build();
+			departs = getUserDepart(wxUser.getDepartId());
+			if(departs.size() > 0) {
+				wxUser.setFirstDepartName(departs.get(0).getName());
+			}
+			if(departs.size() > 1) {
+				wxUser.setSecondDepartName(departs.get(1).getName());
+			}
 			save("WxUserMapper.save", wxUser);
 		}
 	}
+
+	private List<WxDepart> getUserDepart(Long departId) throws Exception {
+		if(!userDepartMap.containsKey(departId)) {
+			userDepartMap.put(departId, wxDepartService.findParentList(departId));
+		}
+		return userDepartMap.get(departId);
+	}
 }