liupeng 5 éve
szülő
commit
cc41c9000c

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

@@ -90,6 +90,22 @@ public class TaskController extends BaseController {
 	}
 	
 	/**
+	 * http://localhost:8080/sapcms/task/saveCheckoutStartAndEnd
+	 * @return
+	 */
+	@RequestMapping(value = "/saveCheckoutStartAndEnd", produces = "application/json;charset=utf-8")
+	@ResponseBody
+	public Object saveCheckoutStartAndEnd() {
+		try {
+			sapCheckService.saveCheckoutStartAndEnd();
+			return AppUtil.success();
+		} catch (Exception e) {
+			LoggerUtil.error(e);
+			return AppUtil.error(ResultConstant.WEB_ERR_MSG);
+		}
+	}
+	
+	/**
 	 * http://localhost:8080/sapcms/task/saveEmployeeTimes
 	 * @return
 	 */

+ 12 - 0
code/sapparent/sapservice/src/main/java/org/fouram/core/util/JsonNodeUtil.java

@@ -17,6 +17,18 @@ public class JsonNodeUtil {
 		}
 		return value;
 	}
+	
+	public static String getTime(JsonNode userNode, String key) {
+		String value = userNode.get(key).asText().trim();
+		if (Tools.isEmpty(value)) {
+			return "";
+		}
+		if (value.contains("/Date(")) {
+			Date date = new Date(Long.valueOf(value.replace("/Date(", "").replace(")/", "").replace("+0000", "")));
+			return DateUtil.getTime(date);
+		}
+		return value;
+	}
 
 	public static String getValue(JsonNode userNode, String key1, String key2) {
 		String value = null;

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

@@ -19,7 +19,6 @@ public class SapEmployeeTime implements Serializable {
 	
 	private String externalCode;
 	private String lastModifiedDateTime;
-	private String endDate;
 	private String loaActualReturnDate;
 	private String createdDateTime;
 	private String timeType;
@@ -31,6 +30,9 @@ public class SapEmployeeTime implements Serializable {
 	private String quantityInHours;
 	private String loaStartJobInfoId;
 	private String startDate;
+	private String startDateTime;
+	private String endDate;
+	private String endDateTime;
 	private String displayQuantity;
 	private String quantityInDays;
 	private String startTime;

+ 24 - 0
code/sapparent/sapservice/src/main/java/org/fouram/mapper/SapCheckMapper.xml

@@ -21,4 +21,28 @@
 		values (#{userId},#{groupName},#{checkinType},#{checkinDate},#{checkinDay},#{exceptionType},
 			#{checkinTime},#{locationTitle},#{locationDetail},#{wifiName},#{wifiMac})
 	</insert>
+	
+	<select id="selectCheckoutList" resultType="SapCheck">
+		select * from sap_checkout order by userId, checkinDate
+	</select>
+	
+	<select id="selectCheckoutGroupbyList" resultType="SapCheck">
+		SELECT a.* from sap_checkout a, 
+		(select userId, checkinDay from sap_checkout group by userId, checkinDay HAVING count(1) > 1) b 
+		where a.userId = b.userId and a.checkinDay = b.checkinDay order by a.userId, a.checkinDay desc
+	</select>
+	
+	<insert id="saveCheckoutStart">
+		insert into sap_checkout_start(userId,groupName,checkinType,checkinDate,checkinDay,exceptionType,
+			checkinTime,locationTitle,locationDetail,wifiName,wifiMac) 
+		values (#{userId},#{groupName},#{checkinType},#{checkinDate},#{checkinDay},#{exceptionType},
+			#{checkinTime},#{locationTitle},#{locationDetail},#{wifiName},#{wifiMac})
+	</insert>
+	
+	<insert id="saveCheckoutEnd">
+		insert into sap_checkout_end(userId,groupName,checkinType,checkinDate,checkinDay,exceptionType,
+			checkinTime,locationTitle,locationDetail,wifiName,wifiMac) 
+		values (#{userId},#{groupName},#{checkinType},#{checkinDate},#{checkinDay},#{exceptionType},
+			#{checkinTime},#{locationTitle},#{locationDetail},#{wifiName},#{wifiMac})
+	</insert>
 </mapper>

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

@@ -2,20 +2,20 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="SapEmployeeTimeMapper">
 	<insert id="saveOne">
-		insert into sap_employee_time(externalCode,lastModifiedDateTime,endDate,loaActualReturnDate,
+		insert into sap_employee_time(externalCode,lastModifiedDateTime,endDate,endDateTime,loaActualReturnDate,
 			createdDateTime,timeType,loaExpectedReturnDate,flexibleRequesting,
 			timeRecordOrigin,mdfSystemRecordStatus,custPeriod,quantityInHours,
-			loaStartJobInfoId,startDate,displayQuantity,quantityInDays,
+			loaStartJobInfoId,startDate,startDateTime,displayQuantity,quantityInDays,
 			startTime,loaEndJobInfoId,approvalStatus,cancellationWorkflowRequestId,
 			deductionQuantity,editable,lastModifiedBy,workflowRequestId,
 			undeterminedEndDate,userId,recurrenceGroup,createdBy,
 			workflowInitiatedByAdmin,comment,fractionQuantity,endTime,
 			originalQuantityInDays
 		) 
-		values (#{externalCode},#{lastModifiedDateTime},#{endDate},#{loaActualReturnDate},
+		values (#{externalCode},#{lastModifiedDateTime},#{endDate},#{endDateTime},#{loaActualReturnDate},
 			#{createdDateTime},#{timeType},#{loaExpectedReturnDate},#{flexibleRequesting},
 			#{timeRecordOrigin},#{mdfSystemRecordStatus},#{custPeriod},#{quantityInHours},
-			#{loaStartJobInfoId},#{startDate},#{displayQuantity},#{quantityInDays},
+			#{loaStartJobInfoId},#{startDate},#{startDateTime},#{displayQuantity},#{quantityInDays},
 			#{startTime},#{loaEndJobInfoId},#{approvalStatus},#{cancellationWorkflowRequestId},
 			#{deductionQuantity},#{editable},#{lastModifiedBy},#{workflowRequestId},
 			#{undeterminedEndDate},#{userId},#{recurrenceGroup},#{createdBy},

+ 42 - 0
code/sapparent/sapservice/src/main/java/org/fouram/service/SapCheckService.java

@@ -4,6 +4,7 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import org.fouram.core.base.service.BaseService;
 import org.fouram.core.plugin.weixin.cp.util.WXCpOaUtil;
@@ -15,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
 
 import me.chanjar.weixin.cp.bean.WxCpCheckinData;
 
@@ -76,6 +78,28 @@ public class SapCheckService extends BaseService {
 			System.out.println(count);
 		}
 	}
+	
+	public void saveCheckoutStartAndEnd() throws Exception {
+		List<SapCheck> sapChecks = selectCheckoutList();
+		Set<String> startSet = Sets.newHashSet();
+		// 保存每个用户每天第一个
+		for(SapCheck check : sapChecks) {
+			if(!startSet.contains(check.getUserId() + check.getCheckinDay())) {
+				saveCheckoutStart(check);
+				startSet.add(check.getUserId() + check.getCheckinDay());
+			}
+		}
+		// 保存每个用户每天最后一个
+		Set<String> endSet = Sets.newHashSet();
+		sapChecks = selectCheckoutGroupbyList();
+		for(SapCheck check : sapChecks) {
+			if(startSet.contains(check.getUserId() + check.getCheckinDay()) 
+					&& !endSet.contains(check.getUserId() + check.getCheckinDay())) {
+				saveCheckoutEnd(check);
+				endSet.add(check.getUserId() + check.getCheckinDay());
+			}
+		}
+	}
 
 	public void saveCheckin(SapCheck check) throws Exception {
 		save("SapCheckMapper.saveCheckin", check);
@@ -88,4 +112,22 @@ public class SapCheckService extends BaseService {
 	public void saveCheckout(SapCheck check) throws Exception {
 		save("SapCheckMapper.saveCheckout", check);
 	}
+	
+	public void saveCheckoutStart(SapCheck check) throws Exception {
+		save("SapCheckMapper.saveCheckoutStart", check);
+	}
+	
+	public void saveCheckoutEnd(SapCheck check) throws Exception {
+		save("SapCheckMapper.saveCheckoutEnd", check);
+	}
+	
+	@SuppressWarnings("unchecked")
+	public List<SapCheck> selectCheckoutList() throws Exception {
+		return (List<SapCheck>) findList("SapCheckMapper.selectCheckoutList", null);
+	}
+	
+	@SuppressWarnings("unchecked")
+	public List<SapCheck> selectCheckoutGroupbyList() throws Exception {
+		return (List<SapCheck>) findList("SapCheckMapper.selectCheckoutGroupbyList", null);
+	}
 }

+ 9 - 6
code/sapparent/sapservice/src/main/java/org/fouram/service/SapEmployeeTimeService.java

@@ -33,7 +33,6 @@ public class SapEmployeeTimeService extends BaseService {
 				JsonNode userNode = iterator.next();
 				String externalCode = JsonNodeUtil.getValue(userNode, "externalCode");
 				String lastModifiedDateTime = JsonNodeUtil.getValue(userNode, "lastModifiedDateTime");
-				String endDate = JsonNodeUtil.getValue(userNode, "endDate");
 				String loaActualReturnDate = JsonNodeUtil.getValue(userNode, "loaActualReturnDate");
 				String createdDateTime = JsonNodeUtil.getValue(userNode, "createdDateTime");
 				String timeType = JsonNodeUtil.getValue(userNode, "timeType");
@@ -45,6 +44,9 @@ public class SapEmployeeTimeService extends BaseService {
 				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");
@@ -66,13 +68,14 @@ public class SapEmployeeTimeService extends BaseService {
 				String originalQuantityInDays = JsonNodeUtil.getValue(userNode, "originalQuantityInDays");
 
 				SapEmployeeTime employeeTime = SapEmployeeTime.builder().externalCode(externalCode)
-						.lastModifiedDateTime(lastModifiedDateTime).endDate(endDate)
-						.loaActualReturnDate(loaActualReturnDate).createdDateTime(createdDateTime).timeType(timeType)
+						.lastModifiedDateTime(lastModifiedDateTime).loaActualReturnDate(loaActualReturnDate)
+						.createdDateTime(createdDateTime).timeType(timeType)
 						.loaExpectedReturnDate(loaExpectedReturnDate).flexibleRequesting(flexibleRequesting)
 						.timeRecordOrigin(timeRecordOrigin).mdfSystemRecordStatus(mdfSystemRecordStatus)
 						.custPeriod(custPeriod).quantityInHours(quantityInHours).loaStartJobInfoId(loaStartJobInfoId)
-						.startDate(startDate).displayQuantity(displayQuantity).quantityInDays(quantityInDays)
-						.startTime(startTime).loaEndJobInfoId(loaEndJobInfoId).approvalStatus(approvalStatus)
+						.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)
@@ -82,7 +85,7 @@ public class SapEmployeeTimeService extends BaseService {
 						.originalQuantityInDays(originalQuantityInDays).build();
 
 				saveOne(employeeTime);
-				
+
 				count = count + 1;
 				System.out.println(count);
 			}