liupeng 5 anos atrás
pai
commit
459bf57f10

+ 4 - 0
code/sapparent/sapcms/src/main/java/org/fouram/controller/TaskController.java

@@ -35,6 +35,10 @@ public class TaskController extends BaseController {
 	@Autowired
 	@Autowired
 	private SapEmployeeTimeService employeeTimeService;
 	private SapEmployeeTimeService employeeTimeService;
 
 
+	/**
+	 * http://localhost:8080/sapcms/task/syncWeixinUser
+	 * @return
+	 */
 	@RequestMapping(value = "/syncWeixinUser", produces = "application/json;charset=utf-8")
 	@RequestMapping(value = "/syncWeixinUser", produces = "application/json;charset=utf-8")
 	@ResponseBody
 	@ResponseBody
 	public Object syncWeixinUser() {
 	public Object syncWeixinUser() {

+ 1 - 1
code/sapparent/sapservice/src/main/java/org/fouram/core/base/service/BaseService.java

@@ -75,7 +75,7 @@ public abstract class BaseService {
 		}
 		}
 		return userIds;
 		return userIds;
 	}
 	}
-
+	
 	public static String formatPosition(String str) {
 	public static String formatPosition(String str) {
 		if(Tools.isEmpty(str)) {
 		if(Tools.isEmpty(str)) {
 			return "";
 			return "";

+ 16 - 27
code/sapparent/sapservice/src/main/java/org/fouram/mapper/SapCheckMapper.xml

@@ -1,6 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="SapCheckMapper">
 <mapper namespace="SapCheckMapper">
+	<select id="selectCheckUserList" resultType="String">
+		SELECT userId from sap_check_user
+	</select>
 	<update id="truncateCheckin">
 	<update id="truncateCheckin">
 		truncate table sap_checkin
 		truncate table sap_checkin
 	</update>
 	</update>
@@ -59,43 +62,25 @@
 			d.checkinDate as checkoffDate,d.exceptionType as checkoffException,e.checkinDate as checkoutDate1,g.checkinDate as checkoutDate2,
 			d.checkinDate as checkoffDate,d.exceptionType as checkoffException,e.checkinDate as checkoutDate1,g.checkinDate as checkoutDate2,
 			f.createdDateTime as leaveCreatedTime, f.startDate as leaveStartDate,
 			f.createdDateTime as leaveCreatedTime, f.startDate as leaveStartDate,
 			f.endDate as leaveEndDate,f.deductionQuantity as leaveDay,f.`comment` as leaveComment, '正常' as result
 			f.endDate as leaveEndDate,f.deductionQuantity as leaveDay,f.`comment` as leaveComment, '正常' as result
-		from sap_user a join sap_checkdate b on a.result = 'SUCCESS' and a.isPrimary = 1 and a.delFlag = 0 and b.weekday = 1
+		from sap_check_user a join sap_checkdate b on b.weekday = 1
 		LEFT JOIN sap_checkin c on a.userId = c.userId and b.checkinDay = c.checkinDay
 		LEFT JOIN sap_checkin c on a.userId = c.userId and b.checkinDay = c.checkinDay
 		LEFT JOIN sap_checkoff d on a.userId = d.userId and b.checkinDay = d.checkinDay
 		LEFT JOIN sap_checkoff d on a.userId = d.userId and b.checkinDay = d.checkinDay
 		LEFT JOIN sap_checkout_start e on a.userId = e.userId and b.checkinDay = e.checkinDay
 		LEFT JOIN sap_checkout_start e on a.userId = e.userId and b.checkinDay = e.checkinDay
 		LEFT JOIN sap_checkout_end g on a.userId = g.userId and b.checkinDay = g.checkinDay
 		LEFT JOIN sap_checkout_end g on a.userId = g.userId and b.checkinDay = g.checkinDay
 		LEFT JOIN sap_employee_time f on a.userId = f.userId and b.checkinDay = f.startDate and f.approvalStatus = 'APPROVED'
 		LEFT JOIN sap_employee_time f on a.userId = f.userId and b.checkinDay = f.startDate and f.approvalStatus = 'APPROVED'
 		where EXISTS (SELECT 1 from sap_checkin_option o where a.userId = o.userId)
 		where EXISTS (SELECT 1 from sap_checkin_option o where a.userId = o.userId)
-		order by a.sortNumber ASC, b.checkinDay asc;
+		order by a.userId ASC, b.checkinDay asc;
 	</insert>
 	</insert>
-	<update id="truncateCheckReportUser">
-		truncate table sap_check_report_user
+	<update id="dropCheckReportUser">
+		drop table sap_check_report_user
 	</update>
 	</update>
 	<insert id="saveCheckReportUser">
 	<insert id="saveCheckReportUser">
-		insert into sap_check_report_user
+		create table sap_check_report_user
 		SELECT a.userId, a.name, 
 		SELECT a.userId, a.name, 
-		replace(group_concat(case when a.checkinDay = '2020-04-01' then a.result else '' end ),',','') as '2020-04-01',
-		replace(group_concat(case when a.checkinDay = '2020-04-02' then a.result else '' end ),',','') as '2020-04-02',
-		replace(group_concat(case when a.checkinDay = '2020-04-03' then a.result else '' end ),',','') as '2020-04-03',
-		replace(group_concat(case when a.checkinDay = '2020-04-07' then a.result else '' end ),',','') as '2020-04-07',
-		replace(group_concat(case when a.checkinDay = '2020-04-08' then a.result else '' end ),',','') as '2020-04-08',
-		replace(group_concat(case when a.checkinDay = '2020-04-09' then a.result else '' end ),',','') as '2020-04-09',
-		replace(group_concat(case when a.checkinDay = '2020-04-10' then a.result else '' end ),',','') as '2020-04-10',
-		replace(group_concat(case when a.checkinDay = '2020-04-13' then a.result else '' end ),',','') as '2020-04-13',
-		replace(group_concat(case when a.checkinDay = '2020-04-14' then a.result else '' end ),',','') as '2020-04-14',
-		replace(group_concat(case when a.checkinDay = '2020-04-15' then a.result else '' end ),',','') as '2020-04-15',
-		replace(group_concat(case when a.checkinDay = '2020-04-16' then a.result else '' end ),',','') as '2020-04-16',
-		replace(group_concat(case when a.checkinDay = '2020-04-17' then a.result else '' end ),',','') as '2020-04-17',
-		replace(group_concat(case when a.checkinDay = '2020-04-20' then a.result else '' end ),',','') as '2020-04-20',
-		replace(group_concat(case when a.checkinDay = '2020-04-21' then a.result else '' end ),',','') as '2020-04-21',
-		replace(group_concat(case when a.checkinDay = '2020-04-22' then a.result else '' end ),',','') as '2020-04-22',
-		replace(group_concat(case when a.checkinDay = '2020-04-23' then a.result else '' end ),',','') as '2020-04-23',
-		replace(group_concat(case when a.checkinDay = '2020-04-24' then a.result else '' end ),',','') as '2020-04-24',
-		replace(group_concat(case when a.checkinDay = '2020-04-26' then a.result else '' end ),',','') as '2020-04-26',
-		replace(group_concat(case when a.checkinDay = '2020-04-27' then a.result else '' end ),',','') as '2020-04-27',
-		replace(group_concat(case when a.checkinDay = '2020-04-28' then a.result else '' end ),',','') as '2020-04-28',
-		replace(group_concat(case when a.checkinDay = '2020-04-29' then a.result else '' end ),',','') as '2020-04-29',
-		replace(group_concat(case when a.checkinDay = '2020-04-30' then a.result else '' end ),',','') as '2020-04-30'
+		replace(group_concat(case when a.checkinDay = '2020-05-06' then a.result else '' end ),',','') as '2020-05-06',
+		replace(group_concat(case when a.checkinDay = '2020-05-07' then a.result else '' end ),',','') as '2020-05-07',
+		replace(group_concat(case when a.checkinDay = '2020-05-08' then a.result else '' end ),',','') as '2020-05-08',
+		replace(group_concat(case when a.checkinDay = '2020-05-09' then a.result else '' end ),',','') as '2020-05-09'
 		from sap_check_report a group by a.userId, a.name;
 		from sap_check_report a group by a.userId, a.name;
 	</insert>
 	</insert>
 	<update id="truncateCheckOption">
 	<update id="truncateCheckOption">
@@ -127,6 +112,10 @@
 		SELECT * from sap_check_report where result = '异常' and checkoutDate1 is not null;
 		SELECT * from sap_check_report where result = '异常' and checkoutDate1 is not null;
 	</select>
 	</select>
 	
 	
+	<select id="selectExceptionList" resultType="SapCheckReport">
+		SELECT * from sap_check_report where result = '异常'
+	</select>
+	
 	<select id="selectRepeatCheckin" resultType="SapCheck">
 	<select id="selectRepeatCheckin" resultType="SapCheck">
 		SELECT a.* from sap_checkin a, (SELECT userId, checkinDay from sap_checkin GROUP BY userId, checkinDay having count(1) > 1) b
 		SELECT a.* from sap_checkin a, (SELECT userId, checkinDay from sap_checkin GROUP BY userId, checkinDay having count(1) > 1) b
 		where a.userId = b.userId and a.checkinDay = b.checkinDay order by a.exceptionType, a.checkinDate;
 		where a.userId = b.userId and a.checkinDay = b.checkinDay order by a.exceptionType, a.checkinDate;

+ 15 - 19
code/sapparent/sapservice/src/main/java/org/fouram/service/SapCheckService.java

@@ -15,8 +15,6 @@ import org.fouram.core.util.Tools;
 import org.fouram.entity.SapCheck;
 import org.fouram.entity.SapCheck;
 import org.fouram.entity.SapCheckOption;
 import org.fouram.entity.SapCheckOption;
 import org.fouram.entity.SapCheckReport;
 import org.fouram.entity.SapCheckReport;
-import org.fouram.entity.SapUser;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Lists;
@@ -29,10 +27,12 @@ import me.chanjar.weixin.cp.bean.WxCpCheckinOption.CheckinTime;
 @Service
 @Service
 public class SapCheckService extends BaseService {
 public class SapCheckService extends BaseService {
 
 
-	@Autowired
-	private SapUserService userService;
+	@SuppressWarnings("unchecked")
+	public List<String> selectCheckUserList() throws Exception {
+		return (List<String>) findList("SapCheckMapper.selectCheckUserList", null);
+	}
 
 
-	public Map<String, List<String>> groupList(List<SapUser> list) {
+	public Map<String, List<String>> groupList(List<String> list) {
 		int listSize = list.size();
 		int listSize = list.size();
 		int toIndex = 100;
 		int toIndex = 100;
 		Map<String, List<String>> map = new HashMap<>(); // 用map存起来新的分组后数据
 		Map<String, List<String>> map = new HashMap<>(); // 用map存起来新的分组后数据
@@ -41,10 +41,10 @@ public class SapCheckService extends BaseService {
 			if (i + 100 > listSize) { // 作用为toIndex最后没有100条数据则剩余几条newList中就装几条
 			if (i + 100 > listSize) { // 作用为toIndex最后没有100条数据则剩余几条newList中就装几条
 				toIndex = listSize - i;
 				toIndex = listSize - i;
 			}
 			}
-			List<SapUser> newList = list.subList(i, i + toIndex);
+			List<String> newList = list.subList(i, i + toIndex);
 			List<String> userIds = Lists.newArrayList();
 			List<String> userIds = Lists.newArrayList();
-			for (SapUser user : newList) {
-				userIds.add(user.getUserId());
+			for (String userId : newList) {
+				userIds.add(userId);
 			}
 			}
 			map.put("keyName" + keyToken, userIds);
 			map.put("keyName" + keyToken, userIds);
 			keyToken++;
 			keyToken++;
@@ -59,8 +59,8 @@ public class SapCheckService extends BaseService {
 		update("SapCheckMapper.truncateCheckoff", null);
 		update("SapCheckMapper.truncateCheckoff", null);
 		update("SapCheckMapper.truncateCheckout", null);
 		update("SapCheckMapper.truncateCheckout", null);
 
 
-		List<SapUser> users = userService.selectSuccessList();
-		Map<String, List<String>> map = groupList(users);
+		List<String> userIds = selectCheckUserList();
+		Map<String, List<String>> map = groupList(userIds);
 		int count = 0;
 		int count = 0;
 		for (String key : map.keySet()) {
 		for (String key : map.keySet()) {
 			count = count + 1;
 			count = count + 1;
@@ -99,16 +99,11 @@ public class SapCheckService extends BaseService {
 	public void saveAllUserCheckOption() throws Exception {
 	public void saveAllUserCheckOption() throws Exception {
 		update("SapCheckMapper.truncateCheckOption", null);
 		update("SapCheckMapper.truncateCheckOption", null);
 
 
-		List<SapUser> users = userService.selectSuccessList();
+		List<String> users = selectCheckUserList();
 		Map<String, List<String>> map = groupList(users);
 		Map<String, List<String>> map = groupList(users);
 		int count = 0;
 		int count = 0;
 		List<Date> datetimes = Lists.newArrayList();
 		List<Date> datetimes = Lists.newArrayList();
-		datetimes.add(DateUtil.sdfTime.parse("2020-04-09 00:00:00"));
-		datetimes.add(DateUtil.sdfTime.parse("2020-04-10 00:00:00"));
-		datetimes.add(DateUtil.sdfTime.parse("2020-04-13 00:00:00"));
 		datetimes.add(DateUtil.sdfTime.parse("2020-05-07 00:00:00"));
 		datetimes.add(DateUtil.sdfTime.parse("2020-05-07 00:00:00"));
-		datetimes.add(DateUtil.sdfTime.parse("2020-05-08 00:00:00"));
-		datetimes.add(DateUtil.sdfTime.parse("2020-05-09 00:00:00"));
 		for (String key : map.keySet()) {
 		for (String key : map.keySet()) {
 			count = count + 1;
 			count = count + 1;
 			List<WxCpCheckinOption> options = WXCpOaUtil.getCheckinOption(datetimes, map.get(key));
 			List<WxCpCheckinOption> options = WXCpOaUtil.getCheckinOption(datetimes, map.get(key));
@@ -217,7 +212,8 @@ public class SapCheckService extends BaseService {
 			}
 			}
 		}
 		}
 
 
-		checkReports = (List<SapCheckReport>) findList("SapCheckMapper.selectCheckoutList", null);
+//		checkReports = (List<SapCheckReport>) findList("SapCheckMapper.selectCheckoutList", null);
+		checkReports = (List<SapCheckReport>) findList("SapCheckMapper.selectExceptionList", null);
 		for (SapCheckReport checkReport : checkReports) {
 		for (SapCheckReport checkReport : checkReports) {
 			// TODO 由于刚开始使用微信打开,所以特殊处理下,上下班只要一个正常就算正常
 			// TODO 由于刚开始使用微信打开,所以特殊处理下,上下班只要一个正常就算正常
 			if (isOkWorkTime(checkReport) || isOkOffWorkTime(checkReport)) {
 			if (isOkWorkTime(checkReport) || isOkOffWorkTime(checkReport)) {
@@ -225,8 +221,8 @@ public class SapCheckService extends BaseService {
 			}
 			}
 		}
 		}
 		// 生成报表用户数据
 		// 生成报表用户数据
-//		update("SapCheckMapper.truncateCheckReportUser", null);
-//		update("SapCheckMapper.saveCheckReportUser", null);
+		update("SapCheckMapper.dropCheckReportUser", null);
+		update("SapCheckMapper.saveCheckReportUser", null);
 	}
 	}
 
 
 	// 是不是正确的上班时间
 	// 是不是正确的上班时间

+ 12 - 5
code/sapparent/sapservice/src/main/java/org/fouram/service/SapEmployeeTimeService.java

@@ -7,7 +7,6 @@ import org.fouram.core.base.service.BaseService;
 import org.fouram.core.base.service.RequestService;
 import org.fouram.core.base.service.RequestService;
 import org.fouram.core.util.JsonNodeUtil;
 import org.fouram.core.util.JsonNodeUtil;
 import org.fouram.entity.SapEmployeeTime;
 import org.fouram.entity.SapEmployeeTime;
-import org.fouram.entity.SapUser;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
@@ -17,14 +16,22 @@ import com.fasterxml.jackson.databind.JsonNode;
 public class SapEmployeeTimeService extends BaseService {
 public class SapEmployeeTimeService extends BaseService {
 
 
 	@Autowired
 	@Autowired
-	RequestService requestService;
+	private RequestService requestService;
 	@Autowired
 	@Autowired
-	private SapUserService userService;
+	private SapCheckService checkService;
+	
+	public String getUserIdList(List<String> sapUsers) {
+		String userIds = "";
+		for (String sapUser : sapUsers) {
+			userIds += "'" + sapUser + "',";
+		}
+		return userIds;
+	}
 
 
 	public void saveEmployeeTimes() throws Exception {
 	public void saveEmployeeTimes() throws Exception {
-		List<SapUser> sapUsers = userService.selectSuccessList();
+		List<String> sapUsers = checkService.selectCheckUserList();
 		String url = "https://api15.sapsf.cn/odata/v2/EmployeeTime?$filter=userId in %s&$format=json";
 		String url = "https://api15.sapsf.cn/odata/v2/EmployeeTime?$filter=userId in %s&$format=json";
-		url = String.format(url, getUserIds(sapUsers));
+		url = String.format(url, getUserIdList(sapUsers));
 		JsonNode node = requestService.getForObject(url, getHttpHeaders());
 		JsonNode node = requestService.getForObject(url, getHttpHeaders());
 		if (node != null) {
 		if (node != null) {
 			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
 			Iterator<JsonNode> iterator = node.get("d").get("results").elements();

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

@@ -272,7 +272,7 @@ public class SapUserService extends BaseService {
 	public void updateUnableData() throws Exception {
 	public void updateUnableData() throws Exception {
 		List<SapUser> users = selectSuccessList();
 		List<SapUser> users = selectSuccessList();
 		for(SapUser user : users) {
 		for(SapUser user : users) {
-			WxCpUser wxUser = WXCpUserUtil.getByIdOrEmail(user.getUserId(), user.getEmail());
+			WxCpUser wxUser = WXCpUserUtil.getByIdOrEmail(user.getUserId(), null);
 			if(wxUser == null) {
 			if(wxUser == null) {
 				System.out.println(user.getUserId());
 				System.out.println(user.getUserId());
 				updateUnableByUserId(user.getUserId());
 				updateUnableByUserId(user.getUserId());