liupeng il y a 4 ans
Parent
commit
2d1fc7a293

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

@@ -119,7 +119,6 @@ public abstract class BaseService {
 			map.put("keyName" + keyToken, userIds);
 			keyToken++;
 		}
-
 		return map;
 	}
 }

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

@@ -28,7 +28,7 @@
 		)
 	</insert>
 	
-	<update id="deleteByExternalCode">
+	<update id="deleteById">
 		delete from sap_employee_time where externalCode=#{externalCode}
 	</update>
 

+ 73 - 69
code/sapparent/sapservice/src/main/java/org/fouram/service/SapEmployeeTimeService.java

@@ -2,6 +2,7 @@ package org.fouram.service;
 
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import org.fouram.core.base.service.BaseService;
@@ -32,81 +33,84 @@ public class SapEmployeeTimeService extends BaseService {
 
 	@SuppressWarnings("unchecked")
 	public void saveEmployeeTimes() throws Exception {
-		List<String> userIds = wxUserService.selectAllUserIds();
+		List<String> allUserIds = wxUserService.selectAllUserIds();
 		String url = "https://api15.sapsf.cn/odata/v2/EmployeeTime?$filter=userId in %s&$format=json";
-		url = String.format(url, getUserIdList(userIds));
-		JsonNode node = requestService.getForObject(url, getHttpHeaders());
-		SapEmployeeTime dbEmployeeTime = null;
-		SapEmployeeTime employeeTime = null;
-		if (node != null) {
-			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
-			while (iterator.hasNext()) {
-				JsonNode userNode = iterator.next();
-				String externalCode = JsonNodeUtil.getValue(userNode, "externalCode");
-				String lastModifiedDateTime = JsonNodeUtil.getValue(userNode, "lastModifiedDateTime");
-				String loaActualReturnDate = JsonNodeUtil.getValue(userNode, "loaActualReturnDate");
-				String createdDateTime = JsonNodeUtil.getValue(userNode, "createdDateTime");
-				String timeType = JsonNodeUtil.getValue(userNode, "timeType");
-				String loaExpectedReturnDate = JsonNodeUtil.getValue(userNode, "loaExpectedReturnDate");
-				String flexibleRequesting = JsonNodeUtil.getValue(userNode, "flexibleRequesting");
-				String timeRecordOrigin = JsonNodeUtil.getValue(userNode, "timeRecordOrigin");
-				String mdfSystemRecordStatus = JsonNodeUtil.getValue(userNode, "mdfSystemRecordStatus");
-				String custPeriod = JsonNodeUtil.getValue(userNode, "cust_period");
-				String quantityInHours = JsonNodeUtil.getValue(userNode, "quantityInHours");
-				String loaStartJobInfoId = JsonNodeUtil.getValue(userNode, "loaStartJobInfoId");
-				String startDate = JsonNodeUtil.getValue(userNode, "startDate");
-				String startDateTime = JsonNodeUtil.getTime(userNode, "startDate");
-				String endDate = JsonNodeUtil.getValue(userNode, "endDate");
-				String endDateTime = JsonNodeUtil.getTime(userNode, "endDate");
-				String displayQuantity = JsonNodeUtil.getValue(userNode, "displayQuantity");
-				String quantityInDays = JsonNodeUtil.getValue(userNode, "quantityInDays");
-				String startTime = JsonNodeUtil.getValue(userNode, "startTime");
-				String loaEndJobInfoId = JsonNodeUtil.getValue(userNode, "loaEndJobInfoId");
-				String approvalStatus = JsonNodeUtil.getValue(userNode, "approvalStatus");
-				String cancellationWorkflowRequestId = JsonNodeUtil.getValue(userNode, "cancellationWorkflowRequestId");
-				String deductionQuantity = JsonNodeUtil.getValue(userNode, "deductionQuantity");
-				String editable = JsonNodeUtil.getValue(userNode, "editable");
-				String lastModifiedBy = JsonNodeUtil.getValue(userNode, "lastModifiedBy");
-				String workflowRequestId = JsonNodeUtil.getValue(userNode, "workflowRequestId");
-				String undeterminedEndDate = JsonNodeUtil.getValue(userNode, "undeterminedEndDate");
-				String userId = JsonNodeUtil.getValue(userNode, "userId");
-				String recurrenceGroup = JsonNodeUtil.getValue(userNode, "recurrenceGroup");
-				String createdBy = JsonNodeUtil.getValue(userNode, "createdBy");
-				String workflowInitiatedByAdmin = JsonNodeUtil.getValue(userNode, "workflowInitiatedByAdmin");
-				String comment = JsonNodeUtil.getValue(userNode, "comment");
-				String fractionQuantity = JsonNodeUtil.getValue(userNode, "fractionQuantity");
-				String endTime = JsonNodeUtil.getValue(userNode, "endTime");
-				String originalQuantityInDays = JsonNodeUtil.getValue(userNode, "originalQuantityInDays");
+		Map<String, List<String>> map = groupList(allUserIds);
+		for (String key : map.keySet()) {
+			url = String.format(url, getUserIdList(map.get(key)));
+			JsonNode node = requestService.getForObject(url, getHttpHeaders());
+			SapEmployeeTime dbEmployeeTime = null;
+			SapEmployeeTime employeeTime = null;
+			if (node != null) {
+				Iterator<JsonNode> iterator = node.get("d").get("results").elements();
+				while (iterator.hasNext()) {
+					JsonNode userNode = iterator.next();
+					String externalCode = JsonNodeUtil.getValue(userNode, "externalCode");
+					String lastModifiedDateTime = JsonNodeUtil.getValue(userNode, "lastModifiedDateTime");
+					String loaActualReturnDate = JsonNodeUtil.getValue(userNode, "loaActualReturnDate");
+					String createdDateTime = JsonNodeUtil.getValue(userNode, "createdDateTime");
+					String timeType = JsonNodeUtil.getValue(userNode, "timeType");
+					String loaExpectedReturnDate = JsonNodeUtil.getValue(userNode, "loaExpectedReturnDate");
+					String flexibleRequesting = JsonNodeUtil.getValue(userNode, "flexibleRequesting");
+					String timeRecordOrigin = JsonNodeUtil.getValue(userNode, "timeRecordOrigin");
+					String mdfSystemRecordStatus = JsonNodeUtil.getValue(userNode, "mdfSystemRecordStatus");
+					String custPeriod = JsonNodeUtil.getValue(userNode, "cust_period");
+					String quantityInHours = JsonNodeUtil.getValue(userNode, "quantityInHours");
+					String loaStartJobInfoId = JsonNodeUtil.getValue(userNode, "loaStartJobInfoId");
+					String startDate = JsonNodeUtil.getValue(userNode, "startDate");
+					String startDateTime = JsonNodeUtil.getTime(userNode, "startDate");
+					String endDate = JsonNodeUtil.getValue(userNode, "endDate");
+					String endDateTime = JsonNodeUtil.getTime(userNode, "endDate");
+					String displayQuantity = JsonNodeUtil.getValue(userNode, "displayQuantity");
+					String quantityInDays = JsonNodeUtil.getValue(userNode, "quantityInDays");
+					String startTime = JsonNodeUtil.getValue(userNode, "startTime");
+					String loaEndJobInfoId = JsonNodeUtil.getValue(userNode, "loaEndJobInfoId");
+					String approvalStatus = JsonNodeUtil.getValue(userNode, "approvalStatus");
+					String cancellationWorkflowRequestId = JsonNodeUtil.getValue(userNode, "cancellationWorkflowRequestId");
+					String deductionQuantity = JsonNodeUtil.getValue(userNode, "deductionQuantity");
+					String editable = JsonNodeUtil.getValue(userNode, "editable");
+					String lastModifiedBy = JsonNodeUtil.getValue(userNode, "lastModifiedBy");
+					String workflowRequestId = JsonNodeUtil.getValue(userNode, "workflowRequestId");
+					String undeterminedEndDate = JsonNodeUtil.getValue(userNode, "undeterminedEndDate");
+					String userId = JsonNodeUtil.getValue(userNode, "userId");
+					String recurrenceGroup = JsonNodeUtil.getValue(userNode, "recurrenceGroup");
+					String createdBy = JsonNodeUtil.getValue(userNode, "createdBy");
+					String workflowInitiatedByAdmin = JsonNodeUtil.getValue(userNode, "workflowInitiatedByAdmin");
+					String comment = JsonNodeUtil.getValue(userNode, "comment");
+					String fractionQuantity = JsonNodeUtil.getValue(userNode, "fractionQuantity");
+					String endTime = JsonNodeUtil.getValue(userNode, "endTime");
+					String originalQuantityInDays = JsonNodeUtil.getValue(userNode, "originalQuantityInDays");
 
-				employeeTime = SapEmployeeTime.builder().externalCode(externalCode)
-						.lastModifiedDateTime(lastModifiedDateTime).loaActualReturnDate(loaActualReturnDate)
-						.createdDateTime(createdDateTime).timeType(timeType)
-						.loaExpectedReturnDate(loaExpectedReturnDate).flexibleRequesting(flexibleRequesting)
-						.timeRecordOrigin(timeRecordOrigin).mdfSystemRecordStatus(mdfSystemRecordStatus)
-						.custPeriod(custPeriod).quantityInHours(quantityInHours).loaStartJobInfoId(loaStartJobInfoId)
-						.startDate(startDate).startDateTime(startDateTime).endDate(endDate).endDateTime(endDateTime)
-						.displayQuantity(displayQuantity).quantityInDays(quantityInDays).startTime(startTime)
-						.loaEndJobInfoId(loaEndJobInfoId).approvalStatus(approvalStatus)
-						.cancellationWorkflowRequestId(cancellationWorkflowRequestId)
-						.deductionQuantity(deductionQuantity).editable(editable).lastModifiedBy(lastModifiedBy)
-						.workflowRequestId(workflowRequestId).undeterminedEndDate(undeterminedEndDate).userId(userId)
-						.recurrenceGroup(recurrenceGroup).createdBy(createdBy)
-						.workflowInitiatedByAdmin(workflowInitiatedByAdmin).comment(comment)
-						.fractionQuantity(fractionQuantity).endTime(endTime)
-						.originalQuantityInDays(originalQuantityInDays).build();
-				dbEmployeeTime = selectById(externalCode);
-				if (dbEmployeeTime != null) {
-					// 值变化,删掉重新插入
-					if (!dbEmployeeTime.getKeyString().equals(employeeTime.getKeyString())) {
-						deleteByExternalCode(externalCode);
+					employeeTime = SapEmployeeTime.builder().externalCode(externalCode)
+							.lastModifiedDateTime(lastModifiedDateTime).loaActualReturnDate(loaActualReturnDate)
+							.createdDateTime(createdDateTime).timeType(timeType)
+							.loaExpectedReturnDate(loaExpectedReturnDate).flexibleRequesting(flexibleRequesting)
+							.timeRecordOrigin(timeRecordOrigin).mdfSystemRecordStatus(mdfSystemRecordStatus)
+							.custPeriod(custPeriod).quantityInHours(quantityInHours).loaStartJobInfoId(loaStartJobInfoId)
+							.startDate(startDate).startDateTime(startDateTime).endDate(endDate).endDateTime(endDateTime)
+							.displayQuantity(displayQuantity).quantityInDays(quantityInDays).startTime(startTime)
+							.loaEndJobInfoId(loaEndJobInfoId).approvalStatus(approvalStatus)
+							.cancellationWorkflowRequestId(cancellationWorkflowRequestId)
+							.deductionQuantity(deductionQuantity).editable(editable).lastModifiedBy(lastModifiedBy)
+							.workflowRequestId(workflowRequestId).undeterminedEndDate(undeterminedEndDate).userId(userId)
+							.recurrenceGroup(recurrenceGroup).createdBy(createdBy)
+							.workflowInitiatedByAdmin(workflowInitiatedByAdmin).comment(comment)
+							.fractionQuantity(fractionQuantity).endTime(endTime)
+							.originalQuantityInDays(originalQuantityInDays).build();
+					dbEmployeeTime = selectById(externalCode);
+					if (dbEmployeeTime != null) {
+						// 值变化,删掉重新插入
+						if (!dbEmployeeTime.getKeyString().equals(employeeTime.getKeyString())) {
+							deleteByExternalCode(externalCode);
+							saveOne(employeeTime);
+						}
+					} else {
 						saveOne(employeeTime);
 					}
-				} else {
-					saveOne(employeeTime);
 				}
 			}
 		}
-
+		
 		// 更新所有未通过的为无效
 		update("SapEmployeeTimeMapper.updateUnApprovedDelete", null);
 
@@ -128,7 +132,7 @@ public class SapEmployeeTimeService extends BaseService {
 	}
 
 	public void deleteByExternalCode(String externalCode) throws Exception {
-		update("SapEmployeeTimeMapper.deleteByExternalCode", externalCode);
+		update("SapEmployeeTimeMapper.deleteById", externalCode);
 	}
 
 	public SapEmployeeTime selectById(String externalCode) throws Exception {