liupeng 4 years ago
parent
commit
cb0263a305

+ 6 - 3
code/sapparent/sapservice/src/main/java/org/fouram/entity/SapEmployeeTime.java

@@ -16,7 +16,7 @@ import lombok.NoArgsConstructor;
 @Alias(value = "SapEmployeeTime")
 public class SapEmployeeTime implements Serializable {
 	private static final long serialVersionUID = 1L;
-	
+
 	private String externalCode;
 	private String lastModifiedDateTime;
 	private String loaActualReturnDate;
@@ -52,6 +52,9 @@ public class SapEmployeeTime implements Serializable {
 	private String fractionQuantity;
 	private String endTime;
 	private String originalQuantityInDays;
-	
-	
+
+	public String getKeyString() {
+		return new StringBuffer().append(externalCode).append(startDate).append(endDate).append(approvalStatus)
+				.toString();
+	}
 }

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

@@ -28,6 +28,10 @@
 		)
 	</insert>
 	
+	<update id="deleteByExternalCode">
+		delete from sap_employee_time where externalCode=#{externalCode}
+	</update>
+
 	<update id="updateUnApprovedDelete">
 		update sap_employee_time set delFlag=1 where approvalStatus != 'APPROVED'
 	</update>

+ 30 - 18
code/sapparent/sapservice/src/main/java/org/fouram/service/SapEmployeeTimeService.java

@@ -36,6 +36,8 @@ public class SapEmployeeTimeService extends BaseService {
 		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()) {
@@ -76,24 +78,30 @@ public class SapEmployeeTimeService extends BaseService {
 				String endTime = JsonNodeUtil.getValue(userNode, "endTime");
 				String originalQuantityInDays = JsonNodeUtil.getValue(userNode, "originalQuantityInDays");
 
-				if (selectById(externalCode) == null) {
-					SapEmployeeTime 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();
-
+				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);
 				}
 			}
@@ -119,6 +127,10 @@ public class SapEmployeeTimeService extends BaseService {
 		save("SapEmployeeTimeMapper.saveOne", employeeTime);
 	}
 
+	public void deleteByExternalCode(String externalCode) throws Exception {
+		update("SapEmployeeTimeMapper.deleteByExternalCode", externalCode);
+	}
+
 	public SapEmployeeTime selectById(String externalCode) throws Exception {
 		return (SapEmployeeTime) findObject("SapEmployeeTimeMapper.selectById", externalCode);
 	}