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

[考勤管理]修复了以前的打卡在某些情况下会被误判为缺勤的问题,添加了每日定时分析前一天所有未签退的打卡信息

o2lee 5 лет назад
Родитель
Сommit
ef405eaac1

+ 0 - 8
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/factory/AttendanceDetailFactory.java

@@ -978,23 +978,15 @@ public class AttendanceDetailFactory extends AbstractFactory {
 	}
 
 	public List<String> listRecordWithDateAndNoOffDuty( String recordDate ) throws Exception {
-		List<Integer> statusArray = new ArrayList<Integer>();
-		statusArray.add( 0 ); //未分析的
-		statusArray.add( -1 ); //有错误的
-
 		EntityManager em = this.entityManagerContainer().get( AttendanceDetail.class );
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<AttendanceDetail> root = cq.from( AttendanceDetail.class);
 		cq.select(root.get(AttendanceDetail_.id));
 		Predicate p = cb.equal( root.get( AttendanceDetail_.recordDate ), recordDate );
-
 		Predicate offDutyTime_1 = cb.isNull(root.get( AttendanceDetail_.offDutyTime ));
 		Predicate offDutyTime_2 = cb.equal( root.get( AttendanceDetail_.offDutyTime ), "" );
-		Predicate status0 = root.get( AttendanceDetail_.recordStatus).in( statusArray );
-
 		p = cb.and( p, cb.or( offDutyTime_1, offDutyTime_2 ));
-
 		return em.createQuery(cq.where(p)).setMaxResults(100000).getResultList();
 	}
 

+ 9 - 6
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendanceappealinfo/ActionAppealCreateWithWorkFlow.java

@@ -72,6 +72,9 @@ public class ActionAppealCreateWithWorkFlow extends BaseAction {
 					wrapIn.getReason(), wrapIn.getAppealReason(),  wrapIn.getSelfHolidayType(),  wrapIn.getAddress(), 
 					wrapIn.getStartTime(),  wrapIn.getEndTime(),  wrapIn.getAppealDescription() );
 
+//			// 申诉状态:0-未申诉,1-申诉中,-1-申诉未通过,9-申诉通过!
+//			attendanceAppealInfo.setStatus(wrapIn.getStatus());
+
 			// 创建一个申诉审批记录信息
 			attendanceAppealAuditInfo = new AttendanceAppealAuditInfo();
 			attendanceAppealAuditInfo.setId( attendanceAppealInfo.getId());
@@ -124,8 +127,8 @@ public class ActionAppealCreateWithWorkFlow extends BaseAction {
 		@FieldDescribe("申诉详细说明, 500字")
 		private String appealDescription;
 
-		@FieldDescribe("审批状态:0-待处理,1-审批通过,-1-审批不能过,2-需要下一次审批")
-		private Integer status = 0;
+//		@FieldDescribe("审批状态:申诉状态:0-未申诉,1-申诉中,-1-申诉未通过,9-申诉通过")
+//		private Integer status = 0;
 
 		public String getWorkId() { return workId; }
 
@@ -162,10 +165,10 @@ public class ActionAppealCreateWithWorkFlow extends BaseAction {
 		public String getAppealDescription() { return appealDescription; }
 
 		public void setAppealDescription(String appealDescription) { this.appealDescription = appealDescription; }
-
-		public Integer getStatus() { return status; }
-
-		public void setStatus(Integer status) { this.status = status; }
+//
+//		public Integer getStatus() { return status; }
+//
+//		public void setStatus(Integer status) { this.status = status; }
 	}
 	
 	public static class Wo extends WoId {

+ 1 - 1
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendanceappealinfo/ActionWorkFlowSync.java

@@ -149,7 +149,7 @@ public class ActionWorkFlowSync extends BaseAction {
 	public static class Wi {
 
 		@FieldDescribe("申诉状态:0-未申诉,1-申诉中,-1-申诉未通过,9-申诉通过.")
-		private Integer status = null;
+		private Integer status = 1;
 
 		public Integer getStatus() {
 			return status;

+ 6 - 1
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/schedule/DetailLastDayRecordAnalyseTask.java

@@ -11,6 +11,7 @@ import com.x.base.core.project.schedule.AbstractJob;
 import com.x.base.core.project.tools.ListTools;
 import org.quartz.JobExecutionContext;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -27,12 +28,16 @@ public class DetailLastDayRecordAnalyseTask extends AbstractJob {
 	public void schedule(JobExecutionContext jobExecutionContext) throws Exception {
 		List<String> ids = null;
 		DateOperation dateOperation = new DateOperation();
+
+		//获取前一天的日期,后面需要查询前一天所有没有签退的打卡数据
+		String date = dateOperation.getDayAdd( new Date(), -1 );
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ids = attendanceDetailServiceAdv.listRecordWithDateAndNoOffDuty( dateOperation.getNowDate() );
+			ids = attendanceDetailServiceAdv.listRecordWithDateAndNoOffDuty( date  );
 		} catch (Exception e) {
 			logger.error(new QueryMobileDetailWithStatusException(0));
 		}
 		if(ListTools.isNotEmpty( ids )){
+			logger.debug( date + "有 " + ids.size() + "条考勤打卡数据需要重新分析。");
 			for( String id : ids ){
 				try {
 					ThisApplication.detailAnalyseQueue.send( id );

+ 2 - 2
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/service/AttendanceDetailAnalyseSignProxy1.java

@@ -175,12 +175,12 @@ class AttendanceDetailAnalyseSignProxy1 {
 							detail.setLeaveEarlierTimeDuration( 0L );
 							detail.setIsLeaveEarlier( false );
 						}else{
-							if(StringUtils.isNotEmpty( detail.getAbnormalDutyDayTime() )){
+							if( StringUtils.equals( "上午", detail.getAbnormalDutyDayTime()) ){
 								detail.setAbnormalDutyDayTime("上午|下午");
 							}else {
 								detail.setAbnormalDutyDayTime("下午");
 							}
-							if(StringUtils.isNotEmpty( detail.getAbsentDayTime() )){
+							if( StringUtils.equals( "上午", detail.getAbsentDayTime()) ){
 								detail.setAbsentDayTime("全天");
 							}else{
 								detail.setAbsentDayTime("下午");

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

@@ -156,7 +156,7 @@ class AttendanceDetailAnalyseSignProxy2 {
 						detail.setAbsence(0.0);
 					} else {
 						logger.debug(debugger, "没请假,中午缺卡");
-						if(StringUtils.isNotEmpty( detail.getAbnormalDutyDayTime() )){
+						if( StringUtils.equals( "上午", detail.getAbnormalDutyDayTime()) ){
 							detail.setAbnormalDutyDayTime("上午|中午");
 						}else {
 							detail.setAbnormalDutyDayTime("中午");
@@ -220,12 +220,17 @@ class AttendanceDetailAnalyseSignProxy2 {
 							detail.setLeaveEarlierTimeDuration( 0L );
 							detail.setIsLeaveEarlier( false );
 						}else{
-							if(StringUtils.isNotEmpty( detail.getAbnormalDutyDayTime() )){
+							if( StringUtils.equals( "上午", detail.getAbnormalDutyDayTime()) ){
 								detail.setAbnormalDutyDayTime("上午|下午");
-							}else {
+							}else if( StringUtils.equals( "中午", detail.getAbnormalDutyDayTime()) ){
+								detail.setAbnormalDutyDayTime("中午|下午");
+							}else if( StringUtils.equals( "上午|中午", detail.getAbnormalDutyDayTime()) ){
+								detail.setAbnormalDutyDayTime("上午|中午|下午");
+							}else{
 								detail.setAbnormalDutyDayTime("下午");
 							}
-							if(StringUtils.isNotEmpty( detail.getAbsentDayTime() )){
+
+							if( StringUtils.equals( "上午", detail.getAbsentDayTime()) ){
 								detail.setAbsentDayTime("全天");
 							}else{
 								detail.setAbsentDayTime("下午");

+ 2 - 2
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/service/AttendanceDetailAnalyseSignProxy3.java

@@ -253,12 +253,12 @@ class AttendanceDetailAnalyseSignProxy3 {
 							detail.setLeaveEarlierTimeDuration( 0L );
 							detail.setIsLeaveEarlier( false );
 						}else{
-							if(StringUtils.isNotEmpty( detail.getAbnormalDutyDayTime() )){
+							if( StringUtils.equals( "上午", detail.getAbnormalDutyDayTime()) ){
 								detail.setAbnormalDutyDayTime("上午|下午");
 							}else {
 								detail.setAbnormalDutyDayTime("下午");
 							}
-							if(StringUtils.isNotEmpty( detail.getAbsentDayTime() )){
+							if( StringUtils.equals( "上午", detail.getAbsentDayTime()) ){
 								detail.setAbsentDayTime("全天");
 							}else{
 								detail.setAbsentDayTime("下午");