liupeng пре 5 година
родитељ
комит
459bf57f10

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

@@ -35,6 +35,10 @@ public class TaskController extends BaseController {
 	@Autowired
 	private SapEmployeeTimeService employeeTimeService;
 
+	/**
+	 * http://localhost:8080/sapcms/task/syncWeixinUser
+	 * @return
+	 */
 	@RequestMapping(value = "/syncWeixinUser", produces = "application/json;charset=utf-8")
 	@ResponseBody
 	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;
 	}
-
+	
 	public static String formatPosition(String str) {
 		if(Tools.isEmpty(str)) {
 			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"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="SapCheckMapper">
+	<select id="selectCheckUserList" resultType="String">
+		SELECT userId from sap_check_user
+	</select>
 	<update id="truncateCheckin">
 		truncate table sap_checkin
 	</update>
@@ -59,43 +62,25 @@
 			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.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_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_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'
 		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>
-	<update id="truncateCheckReportUser">
-		truncate table sap_check_report_user
+	<update id="dropCheckReportUser">
+		drop table sap_check_report_user
 	</update>
 	<insert id="saveCheckReportUser">
-		insert into sap_check_report_user
+		create table sap_check_report_user
 		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;
 	</insert>
 	<update id="truncateCheckOption">
@@ -127,6 +112,10 @@
 		SELECT * from sap_check_report where result = '异常' and checkoutDate1 is not null;
 	</select>
 	
+	<select id="selectExceptionList" resultType="SapCheckReport">
+		SELECT * from sap_check_report where result = '异常'
+	</select>
+	
 	<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
 		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.SapCheckOption;
 import org.fouram.entity.SapCheckReport;
-import org.fouram.entity.SapUser;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.google.common.collect.Lists;
@@ -29,10 +27,12 @@ import me.chanjar.weixin.cp.bean.WxCpCheckinOption.CheckinTime;
 @Service
 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 toIndex = 100;
 		Map<String, List<String>> map = new HashMap<>(); // 用map存起来新的分组后数据
@@ -41,10 +41,10 @@ public class SapCheckService extends BaseService {
 			if (i + 100 > listSize) { // 作用为toIndex最后没有100条数据则剩余几条newList中就装几条
 				toIndex = listSize - i;
 			}
-			List<SapUser> newList = list.subList(i, i + toIndex);
+			List<String> newList = list.subList(i, i + toIndex);
 			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);
 			keyToken++;
@@ -59,8 +59,8 @@ public class SapCheckService extends BaseService {
 		update("SapCheckMapper.truncateCheckoff", 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;
 		for (String key : map.keySet()) {
 			count = count + 1;
@@ -99,16 +99,11 @@ public class SapCheckService extends BaseService {
 	public void saveAllUserCheckOption() throws Exception {
 		update("SapCheckMapper.truncateCheckOption", null);
 
-		List<SapUser> users = userService.selectSuccessList();
+		List<String> users = selectCheckUserList();
 		Map<String, List<String>> map = groupList(users);
 		int count = 0;
 		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-08 00:00:00"));
-		datetimes.add(DateUtil.sdfTime.parse("2020-05-09 00:00:00"));
 		for (String key : map.keySet()) {
 			count = count + 1;
 			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) {
 			// TODO 由于刚开始使用微信打开,所以特殊处理下,上下班只要一个正常就算正常
 			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.util.JsonNodeUtil;
 import org.fouram.entity.SapEmployeeTime;
-import org.fouram.entity.SapUser;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -17,14 +16,22 @@ import com.fasterxml.jackson.databind.JsonNode;
 public class SapEmployeeTimeService extends BaseService {
 
 	@Autowired
-	RequestService requestService;
+	private RequestService requestService;
 	@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 {
-		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";
-		url = String.format(url, getUserIds(sapUsers));
+		url = String.format(url, getUserIdList(sapUsers));
 		JsonNode node = requestService.getForObject(url, getHttpHeaders());
 		if (node != null) {
 			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 {
 		List<SapUser> users = selectSuccessList();
 		for(SapUser user : users) {
-			WxCpUser wxUser = WXCpUserUtil.getByIdOrEmail(user.getUserId(), user.getEmail());
+			WxCpUser wxUser = WXCpUserUtil.getByIdOrEmail(user.getUserId(), null);
 			if(wxUser == null) {
 				System.out.println(user.getUserId());
 				updateUnableByUserId(user.getUserId());