Просмотр исходного кода

[考勤管理]修复了考勤申诉使用流程时,启动流程和流程状态同步的问题

o2lee 5 лет назад
Родитель
Сommit
5e921ab9ac
16 измененных файлов с 502 добавлено и 46 удалено
  1. 10 1
      o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/factory/AttendanceAppealInfoFactory.java
  2. 27 0
      o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendanceappealinfo/ActionGet.java
  3. 32 0
      o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendanceappealinfo/ActionListNextWithFilter.java
  4. 33 0
      o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendanceappealinfo/ActionListPrevWithFilter.java
  5. 36 0
      o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendancedetail/ActionGet.java
  6. 46 13
      o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendancedetail/ActionListNextWithFilter.java
  7. 39 6
      o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendancedetail/ActionListPrevWithFilter.java
  8. 38 5
      o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendancedetail/ActionListWithEmployee.java
  9. 57 0
      o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendancedetail/ActionListWithFilter.java
  10. 62 0
      o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendancedetail/ActionListWithTopUnit.java
  11. 62 0
      o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendancedetail/ActionListWithUnit.java
  12. 29 11
      o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendancedetail/BaseAction.java
  13. 13 3
      o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/service/AttendanceAppealInfoService.java
  14. 11 0
      o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/service/AttendanceAppealInfoServiceAdv.java
  15. 1 1
      o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/service/AttendanceDetailAnalyseSignProxy2.java
  16. 6 6
      o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/service/ComposeDetailWithMobileInSignProxy2.java

+ 10 - 1
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/factory/AttendanceAppealInfoFactory.java

@@ -33,7 +33,16 @@ public class AttendanceAppealInfoFactory extends AbstractFactory {
 	public AttendanceAppealInfo get( String id ) throws Exception {
 		return this.entityManagerContainer().find(id, AttendanceAppealInfo.class, ExceptionWhen.none);
 	}
-	
+
+	public List<AttendanceAppealInfo> listWithDetailId(String id) throws Exception {
+		EntityManager em = this.entityManagerContainer().get(AttendanceAppealInfo.class);
+		CriteriaBuilder cb = em.getCriteriaBuilder();
+		CriteriaQuery<AttendanceAppealInfo> cq = cb.createQuery(AttendanceAppealInfo.class);
+		Root<AttendanceAppealInfo> root = cq.from( AttendanceAppealInfo.class);
+		Predicate p = cb.equal( root.get(AttendanceAppealInfo_.detailId),  id );
+		return em.createQuery(cq.where(p)).getResultList();
+	}
+
 	//@MethodDescribe("列示全部的AttendanceAppealInfo信息列表")
 	public List<String> listAll() throws Exception {
 		EntityManager em = this.entityManagerContainer().get(AttendanceAppealInfo.class);

+ 27 - 0
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendanceappealinfo/ActionGet.java

@@ -1,8 +1,12 @@
 package com.x.attendance.assemble.control.jaxrs.attendanceappealinfo;
 
 import javax.servlet.http.HttpServletRequest;
+
+import com.x.attendance.assemble.control.jaxrs.attendancedetail.ActionListNextWithFilter;
+import com.x.attendance.entity.AttendanceAppealAuditInfo;
 import com.x.attendance.entity.AttendanceAppealInfo;
 import com.x.base.core.entity.JpaObject;
+import com.x.base.core.project.annotation.FieldDescribe;
 import com.x.base.core.project.bean.WrapCopier;
 import com.x.base.core.project.bean.WrapCopierFactory;
 import com.x.base.core.project.http.ActionResult;
@@ -38,8 +42,12 @@ public class ActionGet extends BaseAction {
 		}
 		if (check) {
 			if (attendanceAppealInfo != null) {
+				AttendanceAppealAuditInfo auditInfo = attendanceAppealInfoServiceAdv.getAppealAuditInfo( attendanceAppealInfo.getId() );
 				try {
 					wrap = Wo.copier.copy(attendanceAppealInfo);
+					if( auditInfo != null ) {
+						wrap.setAppealAuditInfo( WoAttendanceAppealAuditInfo.copier.copy( auditInfo ));
+					}
 					result.setData(wrap);
 				} catch (Exception e) {
 					check = false;
@@ -59,5 +67,24 @@ public class ActionGet extends BaseAction {
 		public static WrapCopier<AttendanceAppealInfo, Wo> copier = WrapCopierFactory.wo(AttendanceAppealInfo.class,
 				Wo.class, null, JpaObject.FieldsInvisible);
 
+		@FieldDescribe("考勤申诉审核内容")
+		private WoAttendanceAppealAuditInfo appealAuditInfo = null;
+
+		public WoAttendanceAppealAuditInfo getAppealAuditInfo() {
+			return appealAuditInfo;
+		}
+
+		public void setAppealAuditInfo(WoAttendanceAppealAuditInfo appealAuditInfo) {
+			this.appealAuditInfo = appealAuditInfo;
+		}
+	}
+
+	public static class WoAttendanceAppealAuditInfo extends AttendanceAppealAuditInfo {
+
+		private static final long serialVersionUID = -5076990764713538973L;
+
+		public static WrapCopier<AttendanceAppealAuditInfo, WoAttendanceAppealAuditInfo> copier = WrapCopierFactory.wo(AttendanceAppealAuditInfo.class,
+				WoAttendanceAppealAuditInfo.class, null, JpaObject.FieldsInvisible);
+
 	}
 }

+ 32 - 0
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendanceappealinfo/ActionListNextWithFilter.java

@@ -4,6 +4,9 @@ import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.x.attendance.entity.AttendanceAppealAuditInfo;
+import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.tools.ListTools;
 import org.apache.commons.beanutils.PropertyUtils;
 import org.apache.commons.lang3.StringUtils;
 
@@ -65,6 +68,15 @@ public class ActionListNextWithFilter extends BaseAction {
 				// 将所有查询出来的有状态的对象转换为可以输出的过滤过属性的对象
 				wraps = Wo.copier.copy(detailList);
 
+				if(ListTools.isNotEmpty( wraps )){
+					AttendanceAppealAuditInfo auditInfo = null;
+					for( Wo wo : wraps ){
+						auditInfo = attendanceAppealInfoServiceAdv.getAppealAuditInfo( wo.getId() );
+						if( auditInfo != null ){
+							wo.setAppealAuditInfo( WoAttendanceAppealAuditInfo.copier.copy( auditInfo ));
+						}
+					}
+				}
 				// 对查询的列表进行排序
 				result.setCount(total);
 			} catch (Throwable th) {
@@ -83,5 +95,25 @@ public class ActionListNextWithFilter extends BaseAction {
 		public static WrapCopier<AttendanceAppealInfo, Wo> copier = WrapCopierFactory.wo(AttendanceAppealInfo.class,
 				Wo.class, null, JpaObject.FieldsInvisible);
 
+		@FieldDescribe("考勤申诉审核内容")
+		private WoAttendanceAppealAuditInfo appealAuditInfo = null;
+
+		public WoAttendanceAppealAuditInfo getAppealAuditInfo() {
+			return appealAuditInfo;
+		}
+
+		public void setAppealAuditInfo(WoAttendanceAppealAuditInfo appealAuditInfo) {
+			this.appealAuditInfo = appealAuditInfo;
+		}
+
+	}
+
+	public static class WoAttendanceAppealAuditInfo extends AttendanceAppealAuditInfo {
+
+		private static final long serialVersionUID = -5076990764713538973L;
+
+		public static WrapCopier<AttendanceAppealAuditInfo, WoAttendanceAppealAuditInfo> copier = WrapCopierFactory.wo(AttendanceAppealAuditInfo.class,
+				WoAttendanceAppealAuditInfo.class, null, JpaObject.FieldsInvisible);
+
 	}
 }

+ 33 - 0
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendanceappealinfo/ActionListPrevWithFilter.java

@@ -5,6 +5,9 @@ import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.x.attendance.entity.AttendanceAppealAuditInfo;
+import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.tools.ListTools;
 import org.apache.commons.beanutils.PropertyUtils;
 import org.apache.commons.lang3.StringUtils;
 
@@ -66,6 +69,16 @@ public class ActionListPrevWithFilter extends BaseAction {
 				// 将所有查询出来的有状态的对象转换为可以输出的过滤过属性的对象
 				wraps = Wo.copier.copy(detailList);
 
+				if(ListTools.isNotEmpty( wraps )){
+					AttendanceAppealAuditInfo auditInfo = null;
+					for( Wo wo : wraps ){
+						auditInfo = attendanceAppealInfoServiceAdv.getAppealAuditInfo( wo.getId() );
+						if( auditInfo != null ){
+							wo.setAppealAuditInfo( WoAttendanceAppealAuditInfo.copier.copy( auditInfo ));
+						}
+					}
+				}
+
 				// 对查询的列表进行排序
 				result.setCount(total);
 				
@@ -87,5 +100,25 @@ public class ActionListPrevWithFilter extends BaseAction {
 		public static WrapCopier<AttendanceAppealInfo, Wo> copier = WrapCopierFactory.wo(AttendanceAppealInfo.class,
 				Wo.class, null, JpaObject.FieldsInvisible);
 
+		@FieldDescribe("考勤申诉审核内容")
+		private WoAttendanceAppealAuditInfo appealAuditInfo = null;
+
+		public WoAttendanceAppealAuditInfo getAppealAuditInfo() {
+			return appealAuditInfo;
+		}
+
+		public void setAppealAuditInfo(WoAttendanceAppealAuditInfo appealAuditInfo) {
+			this.appealAuditInfo = appealAuditInfo;
+		}
+
+	}
+
+	public static class WoAttendanceAppealAuditInfo extends AttendanceAppealAuditInfo {
+
+		private static final long serialVersionUID = -5076990764713538973L;
+
+		public static WrapCopier<AttendanceAppealAuditInfo, WoAttendanceAppealAuditInfo> copier = WrapCopierFactory.wo(AttendanceAppealAuditInfo.class,
+				WoAttendanceAppealAuditInfo.class, null, JpaObject.FieldsInvisible);
+
 	}
 }

+ 36 - 0
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendancedetail/ActionGet.java

@@ -1,14 +1,21 @@
 package com.x.attendance.assemble.control.jaxrs.attendancedetail;
 
 import javax.servlet.http.HttpServletRequest;
+
+import com.x.attendance.entity.AttendanceAppealAuditInfo;
+import com.x.attendance.entity.AttendanceAppealInfo;
 import com.x.attendance.entity.AttendanceDetail;
 import com.x.base.core.entity.JpaObject;
+import com.x.base.core.project.annotation.FieldDescribe;
 import com.x.base.core.project.bean.WrapCopier;
 import com.x.base.core.project.bean.WrapCopierFactory;
 import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.EffectivePerson;
 import com.x.base.core.project.logger.Logger;
 import com.x.base.core.project.logger.LoggerFactory;
+import com.x.base.core.project.tools.ListTools;
+
+import java.util.List;
 
 public class ActionGet extends BaseAction {
 
@@ -49,6 +56,28 @@ public class ActionGet extends BaseAction {
 		if (check) {
 			try {
 				wrap = Wo.copier.copy(attendanceDetail);
+
+				//判断并补充申诉信息
+				List<AttendanceAppealInfo> appealInfos = null;
+				AttendanceAppealAuditInfo appealAuditInfo = null;
+				List<WoAttendanceAppealInfo> woAppealInfos = null;
+				if( wrap.getAppealStatus() != 0 ){
+					//十有八九已经提过申诉了,查询申诉信息
+					appealInfos = attendanceAppealInfoServiceAdv.listWithDetailId( wrap.getId() );
+					if(ListTools.isNotEmpty( appealInfos ) ){
+						woAppealInfos = WoAttendanceAppealInfo.copier.copy( appealInfos );
+					}
+					if(ListTools.isNotEmpty( woAppealInfos ) ){
+						for( WoAttendanceAppealInfo woAppealInfo : woAppealInfos ){
+							appealAuditInfo = attendanceAppealInfoServiceAdv.getAppealAuditInfo( woAppealInfo.getId() );
+							if( appealAuditInfo != null ){
+								woAppealInfo.setAppealAuditInfo( WoAttendanceAppealAuditInfo.copier.copy( appealAuditInfo ));
+							}
+						}
+					}
+					wrap.setAppealInfos(woAppealInfos);
+				}
+
 				result.setData(wrap);
 			} catch (Exception e) {
 				check = false;
@@ -66,6 +95,13 @@ public class ActionGet extends BaseAction {
 
 		public static WrapCopier<AttendanceDetail, Wo> copier = WrapCopierFactory.wo(AttendanceDetail.class, Wo.class,
 				null, JpaObject.FieldsInvisible);
+
+		@FieldDescribe("考勤申诉内容")
+		private List<WoAttendanceAppealInfo> appealInfos = null;
+
+		public List<WoAttendanceAppealInfo> getAppealInfos() { return appealInfos; }
+
+		public void setAppealInfos(List<WoAttendanceAppealInfo> appealInfos) { this.appealInfos = appealInfos; }
 	}
 
 }

+ 46 - 13
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendancedetail/ActionListNextWithFilter.java

@@ -5,8 +5,11 @@ import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.x.attendance.entity.AttendanceAppealAuditInfo;
+import com.x.attendance.entity.AttendanceAppealInfo;
 import com.x.attendance.entity.AttendanceScheduleSetting;
 import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.tools.ListTools;
 import org.apache.commons.beanutils.PropertyUtils;
 import org.apache.commons.lang3.StringUtils;
 
@@ -107,27 +110,49 @@ public class ActionListNextWithFilter extends BaseAction {
 					wrapIn.setUnitNames(unitNames);
 				}
 
-				// 从数据库中查询符合条件的一页数据对象
-				detailList = business.getAttendanceDetailFactory().listIdsNextWithFilter(id, count, sequence, wrapIn);
-				// 从数据库中查询符合条件的对象总数
-				total = business.getAttendanceDetailFactory().getCountWithFilter(wrapIn);
-				// 将所有查询出来的有状态的对象转换为可以输出的过滤过属性的对象
-				wraps = Wo.copier.copy(detailList);
+				if (check ) {
+					// 从数据库中查询符合条件的一页数据对象
+					detailList = business.getAttendanceDetailFactory().listIdsNextWithFilter(id, count, sequence, wrapIn);
+					// 从数据库中查询符合条件的对象总数
+					total = business.getAttendanceDetailFactory().getCountWithFilter(wrapIn);
+					// 将所有查询出来的有状态的对象转换为可以输出的过滤过属性的对象
+					wraps = Wo.copier.copy(detailList);
+				}
 
 				if( scheduleSetting == null ){
 					scheduleSetting = scheduleSetting_top;
 				}
 
-				if (check && scheduleSetting != null ) {
-					Integer signProxy = scheduleSetting.getSignProxy();
-					signProxy = ( signProxy == null || signProxy == 0 ) ? 1:signProxy;
-					if( scheduleSetting!= null  ){
-						for( Wo detail : wraps ){
-							detail.setSignProxy( signProxy );
+				if (check && ListTools.isNotEmpty( wraps )) {
+					Integer signProxy = 1;
+					List<AttendanceAppealInfo> appealInfos = null;
+					AttendanceAppealAuditInfo appealAuditInfo = null;
+					List<WoAttendanceAppealInfo> woAppealInfos = null;
+					for( Wo detail : wraps ){
+						if ( scheduleSetting != null ) {
+							signProxy = scheduleSetting.getSignProxy();
+						}
+						detail.setSignProxy( signProxy );
+
+						//判断并补充申诉信息
+						if( detail.getAppealStatus() != 0 ){
+							//十有八九已经提过申诉了,查询申诉信息
+							appealInfos = attendanceAppealInfoServiceAdv.listWithDetailId( detail.getId() );
+							if(ListTools.isNotEmpty( appealInfos ) ){
+								woAppealInfos = WoAttendanceAppealInfo.copier.copy( appealInfos );
+							}
+							if(ListTools.isNotEmpty( woAppealInfos ) ){
+								for( WoAttendanceAppealInfo woAppealInfo : woAppealInfos ){
+									appealAuditInfo = attendanceAppealInfoServiceAdv.getAppealAuditInfo( woAppealInfo.getId() );
+									if( appealAuditInfo != null ){
+										woAppealInfo.setAppealAuditInfo( WoAttendanceAppealAuditInfo.copier.copy( appealAuditInfo ));
+									}
+								}
+							}
+							detail.setAppealInfos(woAppealInfos);
 						}
 					}
 				}
-
 			} catch (Throwable th) {
 				th.printStackTrace();
 				result.error(th);
@@ -145,6 +170,13 @@ public class ActionListNextWithFilter extends BaseAction {
 		@FieldDescribe("员工所属组织的排班打卡策略:1-两次打卡(上午上班,下午下班) 2-三次打卡(上午上班,下午下班加中午一次共三次) 3-四次打卡(上午下午都打上班下班卡)")
 		private Integer signProxy = 1;
 
+		@FieldDescribe("考勤申诉内容")
+		private List<WoAttendanceAppealInfo> appealInfos = null;
+
+		public List<WoAttendanceAppealInfo> getAppealInfos() { return appealInfos; }
+
+		public void setAppealInfos(List<WoAttendanceAppealInfo> appealInfos) { this.appealInfos = appealInfos; }
+
 		public Integer getSignProxy() {
 			return signProxy;
 		}
@@ -156,4 +188,5 @@ public class ActionListNextWithFilter extends BaseAction {
 		public static WrapCopier<AttendanceDetail, Wo> copier = WrapCopierFactory.wo(AttendanceDetail.class, Wo.class,
 				null, JpaObject.FieldsInvisible);
 	}
+
 }

+ 39 - 6
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendancedetail/ActionListPrevWithFilter.java

@@ -5,8 +5,11 @@ import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.x.attendance.entity.AttendanceAppealAuditInfo;
+import com.x.attendance.entity.AttendanceAppealInfo;
 import com.x.attendance.entity.AttendanceScheduleSetting;
 import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.tools.ListTools;
 import org.apache.commons.beanutils.PropertyUtils;
 import org.apache.commons.lang3.StringUtils;
 
@@ -118,12 +121,33 @@ public class ActionListPrevWithFilter extends BaseAction {
 					scheduleSetting = scheduleSetting_top;
 				}
 
-				if (check && scheduleSetting != null ) {
-					Integer signProxy = scheduleSetting.getSignProxy();
-					signProxy = ( signProxy == null || signProxy == 0 ) ? 1:signProxy;
-					if( scheduleSetting!= null  ){
-						for( Wo detail : wraps ){
-							detail.setSignProxy( signProxy );
+				if (check && ListTools.isNotEmpty( wraps )) {
+					Integer signProxy = 1;
+					List<AttendanceAppealInfo> appealInfos = null;
+					AttendanceAppealAuditInfo appealAuditInfo = null;
+					List<WoAttendanceAppealInfo> woAppealInfos = null;
+					for( Wo detail : wraps ){
+						if ( scheduleSetting != null ) {
+							signProxy = scheduleSetting.getSignProxy();
+						}
+						detail.setSignProxy( signProxy );
+
+						//判断并补充申诉信息
+						if( detail.getAppealStatus() != 0 ){
+							//十有八九已经提过申诉了,查询申诉信息
+							appealInfos = attendanceAppealInfoServiceAdv.listWithDetailId( detail.getId() );
+							if(ListTools.isNotEmpty( appealInfos ) ){
+								woAppealInfos = WoAttendanceAppealInfo.copier.copy( appealInfos );
+							}
+							if(ListTools.isNotEmpty( woAppealInfos ) ){
+								for( WoAttendanceAppealInfo woAppealInfo : woAppealInfos ){
+									appealAuditInfo = attendanceAppealInfoServiceAdv.getAppealAuditInfo( woAppealInfo.getId() );
+									if( appealAuditInfo != null ){
+										woAppealInfo.setAppealAuditInfo( WoAttendanceAppealAuditInfo.copier.copy( appealAuditInfo ));
+									}
+								}
+							}
+							detail.setAppealInfos(woAppealInfos);
 						}
 					}
 				}
@@ -145,6 +169,13 @@ public class ActionListPrevWithFilter extends BaseAction {
 		@FieldDescribe("员工所属组织的排班打卡策略:1-两次打卡(上午上班,下午下班) 2-三次打卡(上午上班,下午下班加中午一次共三次) 3-四次打卡(上午下午都打上班下班卡)")
 		private Integer signProxy = 1;
 
+		@FieldDescribe("考勤申诉内容")
+		private List<WoAttendanceAppealInfo> appealInfos = null;
+
+		public List<WoAttendanceAppealInfo> getAppealInfos() { return appealInfos; }
+
+		public void setAppealInfos(List<WoAttendanceAppealInfo> appealInfos) { this.appealInfos = appealInfos; }
+
 		public Integer getSignProxy() {
 			return signProxy;
 		}
@@ -156,4 +187,6 @@ public class ActionListPrevWithFilter extends BaseAction {
 		public static WrapCopier<AttendanceDetail, Wo> copier = WrapCopierFactory.wo(AttendanceDetail.class, Wo.class,
 				null, JpaObject.FieldsInvisible);
 	}
+
+
 }

+ 38 - 5
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendancedetail/ActionListWithEmployee.java

@@ -7,8 +7,11 @@ import java.util.List;
 import javax.servlet.http.HttpServletRequest;
 
 import com.x.attendance.assemble.control.jaxrs.attendanceschedulesetting.ActionGet;
+import com.x.attendance.entity.AttendanceAppealAuditInfo;
+import com.x.attendance.entity.AttendanceAppealInfo;
 import com.x.attendance.entity.AttendanceScheduleSetting;
 import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.tools.ListTools;
 import org.apache.commons.lang3.StringUtils;
 
 import com.google.gson.JsonElement;
@@ -139,12 +142,35 @@ public class ActionListWithEmployee extends BaseAction {
 			}
 		}
 
-		if (check) {
+		if (check && ListTools.isNotEmpty( wraps )) {
 			scheduleSetting = attendanceScheduleSettingServiceAdv.getAttendanceScheduleSettingWithPerson( q_empName, effectivePerson.getDebugger() );
-			Integer signProxy = scheduleSetting.getSignProxy();
-			if( scheduleSetting!= null  ){
-				for( Wo detail : wraps ){
-					detail.setSignProxy( signProxy );
+
+			Integer signProxy = 1;
+			List<AttendanceAppealInfo> appealInfos = null;
+			AttendanceAppealAuditInfo appealAuditInfo = null;
+			List<WoAttendanceAppealInfo> woAppealInfos = null;
+			for( Wo detail : wraps ){
+				if ( scheduleSetting != null ) {
+					signProxy = scheduleSetting.getSignProxy();
+				}
+				detail.setSignProxy( signProxy );
+
+				//判断并补充申诉信息
+				if( detail.getAppealStatus() != 0 ){
+					//十有八九已经提过申诉了,查询申诉信息
+					appealInfos = attendanceAppealInfoServiceAdv.listWithDetailId( detail.getId() );
+					if(ListTools.isNotEmpty( appealInfos ) ){
+						woAppealInfos = WoAttendanceAppealInfo.copier.copy( appealInfos );
+					}
+					if(ListTools.isNotEmpty( woAppealInfos ) ){
+						for( WoAttendanceAppealInfo woAppealInfo : woAppealInfos ){
+							appealAuditInfo = attendanceAppealInfoServiceAdv.getAppealAuditInfo( woAppealInfo.getId() );
+							if( appealAuditInfo != null ){
+								woAppealInfo.setAppealAuditInfo( WoAttendanceAppealAuditInfo.copier.copy( appealAuditInfo ));
+							}
+						}
+					}
+					detail.setAppealInfos(woAppealInfos);
 				}
 			}
 		}
@@ -334,6 +360,13 @@ public class ActionListWithEmployee extends BaseAction {
 		@FieldDescribe("员工所属组织的排班打卡策略:1-两次打卡(上午上班,下午下班) 2-三次打卡(上午上班,下午下班加中午一次共三次) 3-四次打卡(上午下午都打上班下班卡)")
 		private Integer signProxy = 1;
 
+		@FieldDescribe("考勤申诉内容")
+		private List<WoAttendanceAppealInfo> appealInfos = null;
+
+		public List<WoAttendanceAppealInfo> getAppealInfos() { return appealInfos; }
+
+		public void setAppealInfos(List<WoAttendanceAppealInfo> appealInfos) { this.appealInfos = appealInfos; }
+
 		public Integer getSignProxy() {
 			return signProxy;
 		}

+ 57 - 0
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendancedetail/ActionListWithFilter.java

@@ -9,7 +9,10 @@ import javax.servlet.http.HttpServletRequest;
 import com.google.gson.JsonElement;
 import com.x.attendance.assemble.common.date.DateOperation;
 import com.x.attendance.assemble.control.ExceptionWrapInConvert;
+import com.x.attendance.entity.AttendanceAppealAuditInfo;
+import com.x.attendance.entity.AttendanceAppealInfo;
 import com.x.attendance.entity.AttendanceDetail;
+import com.x.attendance.entity.AttendanceScheduleSetting;
 import com.x.base.core.entity.JpaObject;
 import com.x.base.core.project.annotation.FieldDescribe;
 import com.x.base.core.project.bean.WrapCopier;
@@ -19,6 +22,7 @@ import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.EffectivePerson;
 import com.x.base.core.project.logger.Logger;
 import com.x.base.core.project.logger.LoggerFactory;
+import com.x.base.core.project.tools.ListTools;
 
 public class ActionListWithFilter extends BaseAction {
 
@@ -112,6 +116,40 @@ public class ActionListWithFilter extends BaseAction {
 				}
 			}
 		}
+
+		if (check && ListTools.isNotEmpty( wraps )) {
+			AttendanceScheduleSetting scheduleSetting = attendanceScheduleSettingServiceAdv.getAttendanceScheduleSettingWithPerson( q_empName, effectivePerson.getDebugger() );
+
+			Integer signProxy = 1;
+			List<AttendanceAppealInfo> appealInfos = null;
+			AttendanceAppealAuditInfo appealAuditInfo = null;
+			List<WoAttendanceAppealInfo> woAppealInfos = null;
+			for( Wo detail : wraps ){
+				if ( scheduleSetting != null ) {
+					signProxy = scheduleSetting.getSignProxy();
+				}
+				detail.setSignProxy( signProxy );
+
+				//判断并补充申诉信息
+				if( detail.getAppealStatus() != 0 ){
+					//十有八九已经提过申诉了,查询申诉信息
+					appealInfos = attendanceAppealInfoServiceAdv.listWithDetailId( detail.getId() );
+					if(ListTools.isNotEmpty( appealInfos ) ){
+						woAppealInfos = WoAttendanceAppealInfo.copier.copy( appealInfos );
+					}
+					if(ListTools.isNotEmpty( woAppealInfos ) ){
+						for( WoAttendanceAppealInfo woAppealInfo : woAppealInfos ){
+							appealAuditInfo = attendanceAppealInfoServiceAdv.getAppealAuditInfo( woAppealInfo.getId() );
+							if( appealAuditInfo != null ){
+								woAppealInfo.setAppealAuditInfo( WoAttendanceAppealAuditInfo.copier.copy( appealAuditInfo ));
+							}
+						}
+					}
+					detail.setAppealInfos(woAppealInfos);
+				}
+			}
+		}
+
 		result.setData(wraps);
 		return result;
 	}
@@ -158,5 +196,24 @@ public class ActionListWithFilter extends BaseAction {
 
 		public static WrapCopier<AttendanceDetail, Wo> copier = WrapCopierFactory.wo(AttendanceDetail.class, Wo.class,
 				null, JpaObject.FieldsInvisible);
+
+		@FieldDescribe("员工所属组织的排班打卡策略:1-两次打卡(上午上班,下午下班) 2-三次打卡(上午上班,下午下班加中午一次共三次) 3-四次打卡(上午下午都打上班下班卡)")
+		private Integer signProxy = 1;
+
+		@FieldDescribe("考勤申诉内容")
+		private List<WoAttendanceAppealInfo> appealInfos = null;
+
+		public List<WoAttendanceAppealInfo> getAppealInfos() { return appealInfos; }
+
+		public void setAppealInfos(List<WoAttendanceAppealInfo> appealInfos) { this.appealInfos = appealInfos; }
+
+		public Integer getSignProxy() {
+			return signProxy;
+		}
+
+		public void setSignProxy(Integer signProxy) {
+			this.signProxy = signProxy;
+		}
+
 	}
 }

+ 62 - 0
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendancedetail/ActionListWithTopUnit.java

@@ -6,6 +6,11 @@ import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.x.attendance.entity.AttendanceAppealAuditInfo;
+import com.x.attendance.entity.AttendanceAppealInfo;
+import com.x.attendance.entity.AttendanceScheduleSetting;
+import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.tools.ListTools;
 import org.apache.commons.lang3.StringUtils;
 
 import com.google.gson.JsonElement;
@@ -127,6 +132,45 @@ public class ActionListWithTopUnit extends BaseAction {
 				}
 			}
 		}
+
+		if (check && ListTools.isNotEmpty( wraps )) {
+			AttendanceScheduleSetting scheduleSetting = null;
+			try {
+				scheduleSetting = attendanceScheduleSettingServiceAdv.getAttendanceScheduleSettingWithUnit( wraps.get(0).getTopUnitName(), effectivePerson.getDebugger() );
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+
+			Integer signProxy = 1;
+			List<AttendanceAppealInfo> appealInfos = null;
+			AttendanceAppealAuditInfo appealAuditInfo = null;
+			List<WoAttendanceAppealInfo> woAppealInfos = null;
+			for( Wo detail : wraps ){
+				if ( scheduleSetting != null ) {
+					signProxy = scheduleSetting.getSignProxy();
+				}
+				detail.setSignProxy( signProxy );
+
+				//判断并补充申诉信息
+				if( detail.getAppealStatus() != 0 ){
+					//十有八九已经提过申诉了,查询申诉信息
+					appealInfos = attendanceAppealInfoServiceAdv.listWithDetailId( detail.getId() );
+					if(ListTools.isNotEmpty( appealInfos ) ){
+						woAppealInfos = WoAttendanceAppealInfo.copier.copy( appealInfos );
+					}
+					if(ListTools.isNotEmpty( woAppealInfos ) ){
+						for( WoAttendanceAppealInfo woAppealInfo : woAppealInfos ){
+							appealAuditInfo = attendanceAppealInfoServiceAdv.getAppealAuditInfo( woAppealInfo.getId() );
+							if( appealAuditInfo != null ){
+								woAppealInfo.setAppealAuditInfo( WoAttendanceAppealAuditInfo.copier.copy( appealAuditInfo ));
+							}
+						}
+					}
+					detail.setAppealInfos(woAppealInfos);
+				}
+			}
+		}
+
 		result.setData(wraps);
 		return result;
 	}
@@ -311,5 +355,23 @@ public class ActionListWithTopUnit extends BaseAction {
 
 		public static WrapCopier<AttendanceDetail, Wo> copier = WrapCopierFactory.wo(AttendanceDetail.class, Wo.class,
 				null, JpaObject.FieldsInvisible);
+
+		@FieldDescribe("员工所属组织的排班打卡策略:1-两次打卡(上午上班,下午下班) 2-三次打卡(上午上班,下午下班加中午一次共三次) 3-四次打卡(上午下午都打上班下班卡)")
+		private Integer signProxy = 1;
+
+		@FieldDescribe("考勤申诉内容")
+		private List<WoAttendanceAppealInfo> appealInfos = null;
+
+		public List<WoAttendanceAppealInfo> getAppealInfos() { return appealInfos; }
+
+		public void setAppealInfos(List<WoAttendanceAppealInfo> appealInfos) { this.appealInfos = appealInfos; }
+
+		public Integer getSignProxy() {
+			return signProxy;
+		}
+
+		public void setSignProxy(Integer signProxy) {
+			this.signProxy = signProxy;
+		}
 	}
 }

+ 62 - 0
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendancedetail/ActionListWithUnit.java

@@ -6,6 +6,11 @@ import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.x.attendance.entity.AttendanceAppealAuditInfo;
+import com.x.attendance.entity.AttendanceAppealInfo;
+import com.x.attendance.entity.AttendanceScheduleSetting;
+import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.tools.ListTools;
 import org.apache.commons.lang3.StringUtils;
 
 import com.google.gson.JsonElement;
@@ -126,6 +131,45 @@ public class ActionListWithUnit extends BaseAction {
 				}
 			}
 		}
+
+		if (check && ListTools.isNotEmpty( wraps )) {
+			AttendanceScheduleSetting scheduleSetting = null;
+			try {
+				scheduleSetting = attendanceScheduleSettingServiceAdv.getAttendanceScheduleSettingWithUnit( wraps.get(0).getUnitName(), effectivePerson.getDebugger() );
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+
+			Integer signProxy = 1;
+			List<AttendanceAppealInfo> appealInfos = null;
+			AttendanceAppealAuditInfo appealAuditInfo = null;
+			List<WoAttendanceAppealInfo> woAppealInfos = null;
+			for( Wo detail : wraps ){
+				if ( scheduleSetting != null ) {
+					signProxy = scheduleSetting.getSignProxy();
+				}
+				detail.setSignProxy( signProxy );
+
+				//判断并补充申诉信息
+				if( detail.getAppealStatus() != 0 ){
+					//十有八九已经提过申诉了,查询申诉信息
+					appealInfos = attendanceAppealInfoServiceAdv.listWithDetailId( detail.getId() );
+					if(ListTools.isNotEmpty( appealInfos ) ){
+						woAppealInfos = WoAttendanceAppealInfo.copier.copy( appealInfos );
+					}
+					if(ListTools.isNotEmpty( woAppealInfos ) ){
+						for( WoAttendanceAppealInfo woAppealInfo : woAppealInfos ){
+							appealAuditInfo = attendanceAppealInfoServiceAdv.getAppealAuditInfo( woAppealInfo.getId() );
+							if( appealAuditInfo != null ){
+								woAppealInfo.setAppealAuditInfo( WoAttendanceAppealAuditInfo.copier.copy( appealAuditInfo ));
+							}
+						}
+					}
+					detail.setAppealInfos(woAppealInfos);
+				}
+			}
+		}
+
 		result.setData(wraps);
 		return result;
 	}
@@ -310,5 +354,23 @@ public class ActionListWithUnit extends BaseAction {
 
 		public static WrapCopier<AttendanceDetail, Wo> copier = WrapCopierFactory.wo(AttendanceDetail.class, Wo.class,
 				null, JpaObject.FieldsInvisible);
+
+		@FieldDescribe("员工所属组织的排班打卡策略:1-两次打卡(上午上班,下午下班) 2-三次打卡(上午上班,下午下班加中午一次共三次) 3-四次打卡(上午下午都打上班下班卡)")
+		private Integer signProxy = 1;
+
+		@FieldDescribe("考勤申诉内容")
+		private List<WoAttendanceAppealInfo> appealInfos = null;
+
+		public List<WoAttendanceAppealInfo> getAppealInfos() { return appealInfos; }
+
+		public void setAppealInfos(List<WoAttendanceAppealInfo> appealInfos) { this.appealInfos = appealInfos; }
+
+		public Integer getSignProxy() {
+			return signProxy;
+		}
+
+		public void setSignProxy(Integer signProxy) {
+			this.signProxy = signProxy;
+		}
 	}
 }

+ 29 - 11
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendancedetail/BaseAction.java

@@ -1,15 +1,9 @@
 package com.x.attendance.assemble.control.jaxrs.attendancedetail;
 
 import com.x.attendance.assemble.common.date.DateOperation;
-import com.x.attendance.assemble.control.service.AttendanceDetailAnalyseServiceAdv;
-import com.x.attendance.assemble.control.service.AttendanceDetailMobileAnalyseServiceAdv;
-import com.x.attendance.assemble.control.service.AttendanceDetailServiceAdv;
-import com.x.attendance.assemble.control.service.AttendanceEmployeeConfigServiceAdv;
-import com.x.attendance.assemble.control.service.AttendanceScheduleSettingServiceAdv;
-import com.x.attendance.assemble.control.service.AttendanceSelfHolidayServiceAdv;
-import com.x.attendance.assemble.control.service.AttendanceStatisticalCycleServiceAdv;
-import com.x.attendance.assemble.control.service.AttendanceWorkDayConfigServiceAdv;
-import com.x.attendance.assemble.control.service.UserManagerService;
+import com.x.attendance.assemble.control.service.*;
+import com.x.attendance.entity.AttendanceAppealAuditInfo;
+import com.x.attendance.entity.AttendanceAppealInfo;
 import com.x.attendance.entity.AttendanceDetailMobile;
 import com.x.attendance.entity.AttendanceScheduleSetting;
 import com.x.base.core.entity.JpaObject;
@@ -31,9 +25,8 @@ public class BaseAction extends StandardJaxrsAction{
 	protected AttendanceStatisticalCycleServiceAdv attendanceStatisticCycleServiceAdv = new AttendanceStatisticalCycleServiceAdv();
 	protected AttendanceDetailServiceAdv attendanceDetailServiceAdv = new AttendanceDetailServiceAdv();
 	protected AttendanceEmployeeConfigServiceAdv attendanceEmployeeConfigServiceAdv = new AttendanceEmployeeConfigServiceAdv();
-	protected AttendanceSelfHolidayServiceAdv attendanceSelfHolidayServiceAdv = new AttendanceSelfHolidayServiceAdv();
 	protected AttendanceScheduleSettingServiceAdv attendanceScheduleSettingServiceAdv = new AttendanceScheduleSettingServiceAdv();
-	protected AttendanceDetailMobileAnalyseServiceAdv attendanceDetailMobileAnalyseServiceAdv = new AttendanceDetailMobileAnalyseServiceAdv();
+	protected AttendanceAppealInfoServiceAdv attendanceAppealInfoServiceAdv = new AttendanceAppealInfoServiceAdv();
 
 	public static class WoSignFeature{
 
@@ -367,4 +360,29 @@ public class BaseAction extends StandardJaxrsAction{
 		public static WrapCopier<AttendanceDetailMobile, WoMobileRecord> copier = WrapCopierFactory.wo(AttendanceDetailMobile.class,
 				WoMobileRecord.class, null, JpaObject.FieldsInvisible);
 	}
+
+	public static class WoAttendanceAppealInfo extends AttendanceAppealInfo {
+
+		private static final long serialVersionUID = -5076990764713538973L;
+
+		@FieldDescribe("考勤申诉内容")
+		private WoAttendanceAppealAuditInfo appealAuditInfo = null;
+
+		public WoAttendanceAppealAuditInfo getAppealAuditInfo() { return appealAuditInfo; }
+
+		public void setAppealAuditInfo(WoAttendanceAppealAuditInfo appealAuditInfo) { this.appealAuditInfo = appealAuditInfo; }
+
+		public static WrapCopier<AttendanceAppealInfo, WoAttendanceAppealInfo> copier = WrapCopierFactory.wo(AttendanceAppealInfo.class,
+				WoAttendanceAppealInfo.class, null, JpaObject.FieldsInvisible);
+
+	}
+
+	public static class WoAttendanceAppealAuditInfo extends AttendanceAppealAuditInfo {
+
+		private static final long serialVersionUID = -5076990764713538973L;
+
+		public static WrapCopier<AttendanceAppealAuditInfo, WoAttendanceAppealAuditInfo> copier = WrapCopierFactory.wo(AttendanceAppealAuditInfo.class,
+				WoAttendanceAppealAuditInfo.class, null, JpaObject.FieldsInvisible);
+
+	}
 }

+ 13 - 3
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/service/AttendanceAppealInfoService.java

@@ -5,6 +5,7 @@ import java.util.List;
 
 import com.x.attendance.assemble.common.date.DateOperation;
 import com.x.attendance.entity.AttendanceAppealAuditInfo;
+import com.x.base.core.project.tools.ListTools;
 import org.apache.commons.lang3.StringUtils;
 
 import com.x.attendance.assemble.control.Business;
@@ -19,17 +20,25 @@ import com.x.base.core.entity.annotation.CheckRemoveType;
 public class AttendanceAppealInfoService {
 
 	public AttendanceAppealInfo get( EntityManagerContainer emc, String id ) throws Exception {
-		if( id == null || id.isEmpty() || "(0)".equals( id )){
+		if( StringUtils.isEmpty( id ) || "(0)".equals( id )){
     		return null;
     	}
 		return emc.find(id, AttendanceAppealInfo.class);
 	}
 	public List<AttendanceAppealInfo> list(EntityManagerContainer emc, List<String> ids) throws Exception {
-		if( ids == null || ids.isEmpty() ){
+		if(ListTools.isEmpty( ids ) ){
     		return null;
     	}
 		return new Business(emc).getAttendanceAppealInfoFactory().list(ids);
 	}
+
+	public List<AttendanceAppealInfo> listWithDetailId(EntityManagerContainer emc, String id) throws Exception {
+		if( StringUtils.isEmpty( id ) ){
+			return null;
+		}
+		return new Business(emc).getAttendanceAppealInfoFactory().listWithDetailId(id);
+	}
+
 	public void delete( EntityManagerContainer emc, String id ) throws Exception {
 		AttendanceAppealInfo attendanceAppealInfo = null;
 		if( StringUtils.isNotEmpty( id ) && !"(0)".equals( id )){
@@ -176,5 +185,6 @@ public class AttendanceAppealInfoService {
 		emc.commit();
 	}
 
-	
+
+
 }

+ 11 - 0
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/service/AttendanceAppealInfoServiceAdv.java

@@ -29,6 +29,15 @@ public class AttendanceAppealInfoServiceAdv {
 			throw e;
 		}
 	}
+
+	public List<AttendanceAppealInfo> listWithDetailId(String id) throws Exception {
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			return attendanceAppealInfoService.listWithDetailId( emc, id );
+		} catch ( Exception e ) {
+			throw e;
+		}
+	}
+
 	public List<AttendanceAppealInfo> list(List<String> ids) throws Exception {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			return attendanceAppealInfoService.list( emc, ids );	
@@ -409,4 +418,6 @@ public class AttendanceAppealInfoServiceAdv {
 
 
 	}
+
+
 }

+ 1 - 1
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/service/AttendanceDetailAnalyseSignProxy2.java

@@ -43,7 +43,7 @@ class AttendanceDetailAnalyseSignProxy2 {
 		//先初始化当前打卡信息中的上下班时间要求,该要求是是根据员工所在组织排班信息获取到的
 		onWorkTime = AttendanceDetailAnalyseCoreService.getOnWorkTimeFromDetail( detail, debugger );
 		offWorkTime = AttendanceDetailAnalyseCoreService.getOffWorkTimeFromDetail( detail, debugger );
-		middleDutyTime = AttendanceDetailAnalyseCoreService.getMorningOffdutyTimeFromDetail( detail, debugger );
+		middleDutyTime = AttendanceDetailAnalyseCoreService.getAfternoonOndutyTimeFromDetail( detail, debugger );
 
 		lateStartTime = AttendanceDetailAnalyseCoreService.getLateStartTimeFromDetail( detail, scheduleSetting, debugger );
 		leaveEarlyStartTime = AttendanceDetailAnalyseCoreService.getLeaveEarlyStartTimeFromDetail( detail, scheduleSetting, debugger );

+ 6 - 6
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/service/ComposeDetailWithMobileInSignProxy2.java

@@ -46,7 +46,7 @@ class ComposeDetailWithMobileInSignProxy2 {
 			scheduleSetting.setMiddayRestStartTime("13:30");
 		}
 
-		String morningOffdutyTime = getMorningOffDutyTime( mobileDetails, scheduleSetting.getMiddayRestStartTime(), scheduleSetting.getMiddayRestEndTime() );
+		String afternonnOnDutyTime =  getAfternoonOnDutyTime( mobileDetails, scheduleSetting.getMiddayRestStartTime(), scheduleSetting.getMiddayRestEndTime() );
 
 		//组织员工当天的考勤打卡记录
 		AttendanceDetail detail = new AttendanceDetail();
@@ -58,12 +58,12 @@ class ComposeDetailWithMobileInSignProxy2 {
 		}
 		detail.setRecordDateString( mobileDetail.getRecordDateString() );
 		detail.setOnDutyTime( onDutyTime ); //最早的一次打卡作为当天的上班签到打卡
-		if( StringUtils.equals(morningOffdutyTime, onDutyTime )){
-			detail.setMorningOffDutyTime( null );
+		if( StringUtils.equals( afternonnOnDutyTime, onDutyTime )){
+			detail.setAfternoonOnDutyTime( null );
 		}else{
-			detail.setMorningOffDutyTime( morningOffdutyTime ); //午休打卡时间
+			detail.setAfternoonOnDutyTime( afternonnOnDutyTime ); //午休打卡时间
 		}
-		if( StringUtils.equals(offDutyTime, onDutyTime ) || StringUtils.equals(morningOffdutyTime, offDutyTime ) ){
+		if( StringUtils.equals(offDutyTime, onDutyTime ) || StringUtils.equals( afternonnOnDutyTime, offDutyTime ) ){
 			detail.setOffDutyTime( null );
 		}else{
 			detail.setOffDutyTime( offDutyTime ); //最晚的一次打卡作为当天的下班签退打卡
@@ -80,7 +80,7 @@ class ComposeDetailWithMobileInSignProxy2 {
 	 * @param middayRestEndTime
 	 * @return
 	 */
-	private String getMorningOffDutyTime(List<AttendanceDetailMobile> mobileDetails, String middayRestStartTime, String middayRestEndTime) throws Exception {
+	private String getAfternoonOnDutyTime(List<AttendanceDetailMobile> mobileDetails, String middayRestStartTime, String middayRestEndTime) throws Exception {
 		Date moningOndutyTime = null;
 		Date signTime = null, restStartTime=null, restEndTime = null;
 		String resultTime = null;