|
@@ -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 {
|