liupeng hace 4 años
padre
commit
856d9defc7

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

@@ -0,0 +1,30 @@
+package org.fouram.entity;
+
+import java.io.Serializable;
+
+import org.apache.ibatis.type.Alias;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Alias(value = "WxUserDepart")
+public class WxUserDepart implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	private String userId;
+	private Long departId;
+	private Long firstDepartId;
+	private String firstDepartName;
+	private Long secondDepartId;
+	private String secondDepartName;
+	private Long thirdDepartId;
+	private String thirdDepartName;
+	private Long fourthDepartId;
+	private String fourthDepartName;
+}

+ 2 - 1
code/sapparent/sapservice/src/main/java/org/fouram/enums/SapUserResultEnum.java

@@ -7,7 +7,8 @@ public enum SapUserResultEnum {
 	SENSITIVE("SENSITIVE", "敏感数据"), 
 	ENTRY("ENTRY", "入职"),
 	BLACKLIST("BLACKLIST", "黑名单"),
-	GARBAGE("GARBAGE", "垃圾数据");
+	GARBAGE("GARBAGE", "垃圾数据"),
+	INGORE("INGORE", "忽略不操作");
 
 	private final String code;
 	private final String desc;

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

@@ -46,7 +46,8 @@
 	</select>
 	
 	<select id="selectListByPersonId" resultType="SapUser">
-		select * from sap_user where personId=#{personId} order by isPrimary desc
+		select * from sap_user where personId=#{personId} 
+		order by isPrimary desc, sortNumber asc
 	</select>
 	
 	<select id="selectUnSyncList" resultType="SapUser">

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

@@ -28,4 +28,26 @@
 	<select id="selectAllUserIds" resultType="String">
 		SELECT userId from wx_user where delFlag=0
 	</select>
+	
+	<select id="selectWxUserDepart" resultType="WxUser">
+		select * from wx_user_depart where userId=#{userId} and departId=#{departId}
+	</select>
+
+	<insert id="saveWxUserDepart">
+		insert into wx_user_depart(userId,departId,firstDepartId,firstDepartName,
+			secondDepartId,secondDepartName,thirdDepartId,thirdDepartName,
+			fourthDepartId,fourthDepartName) 
+		values (#{userId},#{departId},#{firstDepartId},#{firstDepartName},
+			#{secondDepartId},#{secondDepartName},#{thirdDepartId},#{thirdDepartName},
+			#{fourthDepartId},#{fourthDepartName})
+	</insert>
+	
+	<update id="updateWxUserDepart">
+		update wx_user_depart 
+		set firstDepartName=#{firstDepartName},firstDepartId=#{firstDepartId},
+			secondDepartName=#{secondDepartName},secondDepartId=#{secondDepartId},
+			thirdDepartName=#{thirdDepartName},thirdDepartId=#{thirdDepartId},
+			fourthDepartName=#{fourthDepartName},fourthDepartId=#{fourthDepartId}
+		where userId=#{userId} and departId=#{departId}
+	</update>
 </mapper>

+ 4 - 4
code/sapparent/sapservice/src/main/java/org/fouram/service/CheckTaskService.java

@@ -39,10 +39,10 @@ public class CheckTaskService {
 	public void executeBiz(String checkinDay) throws Exception {
 		String startDay = checkinDay;
 		String endDay = checkinDay;
-		wxDepartService.saveDeparts();
-		LoggerUtil.info("saveDeparts:" + DateUtil.getTime());
-		wxUserService.saveUsers();
-		LoggerUtil.info("saveUsers:" + DateUtil.getTime());
+		wxDepartService.saveWxDeparts();
+		LoggerUtil.info("saveWxDeparts:" + DateUtil.getTime());
+		wxUserService.saveWxUsers();
+		LoggerUtil.info("saveWxUsers:" + DateUtil.getTime());
 		sapCheckService.saveCheckInOffOuts(startDay, endDay);
 		LoggerUtil.info("saveCheckInOffOuts:" + DateUtil.getTime());
 		// 判断打卡记录小于10条记录认为是假期

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

@@ -19,12 +19,12 @@ public class SyncSapUserToWxService extends BaseService {
 	@Transactional
 	public void taskBiz() throws Exception {
 		// 更新微信部门
-		wxDepartService.saveDeparts();
+		wxDepartService.saveWxDeparts();
 		// 更新微信用户
-		wxUserService.saveUsers();
+		wxUserService.saveWxUsers();
 		// 更新所有数据无效
 		sapUserService.updateAllDelFlag(DelFlagEnum.UNABLE.getCode());
-		// 保存SAP用户数据-数据没变化的result报错SUCCESS不变
+		// 保存SAP用户数据-数据没变化的result状态保持不变
 		sapUserService.saveOrUpdateSapUsers();
 		// 更新异常情况,敏感数据、入职
 		sapUserService.updateAbnormalResult();

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

@@ -18,7 +18,7 @@ import me.chanjar.weixin.cp.bean.WxCpDepart;
 @Service
 public class WxDepartService extends BaseService {
 
-	public void saveDeparts() throws Exception {
+	public void saveWxDeparts() throws Exception {
 		List<WxCpDepart> departs = WXCpDepartUtil.getAllChildDeparts(WebConstants.TOP_DEPART);
 		for (WxCpDepart depart : departs) {
 			if(selectById(depart.getId()) == null) {

+ 36 - 1
code/sapparent/sapservice/src/main/java/org/fouram/service/WxUserService.java

@@ -7,6 +7,7 @@ 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.fouram.entity.WxUserDepart;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -22,7 +23,7 @@ public class WxUserService extends BaseService {
 
 	private Map<Long, List<WxDepart>> userDepartMap = Maps.newHashMap();
 
-	public void saveUsers() throws Exception {
+	public void saveWxUsers() throws Exception {
 		update("WxUserMapper.updateAllDelete", null);
 
 		List<WxCpUser> users = WXCpUserUtil.listAllUser();
@@ -30,6 +31,8 @@ public class WxUserService extends BaseService {
 		WxUser wxUser = null;
 		WxUser dbUser = null;
 		String userId = null;
+		WxUserDepart wxUserDepart = null;
+		WxUserDepart dbUserDepart = null;
 		for (WxCpUser user : users) {
 			userId = user.getUserId();
 			wxUser = WxUser.builder().userId(userId).email(user.getEmail()).name(user.getName())
@@ -51,9 +54,41 @@ public class WxUserService extends BaseService {
 				wxUser.setUserId(dbUser.getUserId());
 				update("WxUserMapper.update", wxUser);
 			}
+
+			for (Long departId : user.getDepartIds()) {
+				wxUserDepart = WxUserDepart.builder().departId(departId).userId(userId).build();
+				departs = getUserDepart(departId);
+				if (departs.size() > 0) {
+					wxUserDepart.setFirstDepartName(departs.get(0).getName());
+					wxUserDepart.setFirstDepartId(departs.get(0).getId());
+				}
+				if (departs.size() > 1) {
+					wxUserDepart.setSecondDepartName(departs.get(1).getName());
+					wxUserDepart.setSecondDepartId(departs.get(1).getId());
+				}
+				if (departs.size() > 2) {
+					wxUserDepart.setThirdDepartName(departs.get(2).getName());
+					wxUserDepart.setThirdDepartId(departs.get(2).getId());
+				}
+				if (departs.size() > 3) {
+					wxUserDepart.setFourthDepartName(departs.get(3).getName());
+					wxUserDepart.setFourthDepartId(departs.get(3).getId());
+				}
+				dbUserDepart = selectWxUserDepart(userId, departId);
+				if (dbUserDepart == null) {
+					save("WxUserMapper.saveWxUserDepart", wxUserDepart);
+				} else {
+					update("WxUserMapper.updateWxUserDepart", wxUser);
+				}
+			}
 		}
 	}
 
+	public WxUserDepart selectWxUserDepart(String userId, Long departId) throws Exception {
+		WxUserDepart wxUserDepart = WxUserDepart.builder().userId(userId).departId(departId).build();
+		return (WxUserDepart) findObject("WxUserMapper.selectWxUserDepart", wxUserDepart);
+	}
+
 	public WxUser selectById(String userId) throws Exception {
 		return (WxUser) findObject("WxUserMapper.selectById", userId);
 	}