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

Merge branch 'frature/attendance715' into 'develop'

考勤,部分更新打卡记录接口修改

See merge request o2oa/o2oa!1221
o2null 5 лет назад
Родитель
Сommit
c0f6239653

+ 54 - 22
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/jaxrs/attendancedetail/ActionReciveSingleAttendance.java

@@ -42,10 +42,11 @@ public class ActionReciveSingleAttendance extends BaseAction {
 	protected ActionResult<Wo> execute( HttpServletRequest request, EffectivePerson effectivePerson, JsonElement jsonElement ) throws Exception {
 		ActionResult<Wo> result = new ActionResult<>();
 		DateOperation dateOperation = new DateOperation();
-		AttendanceDetail attendanceDetail = null;
+		AttendanceDetail attendanceDetail = new AttendanceDetail();
 		Boolean check = true;
 		List<String> ids = null;
 		Wi wrapIn = null;
+		Date datetime = null;
 		try {
 			wrapIn = this.convertToWrapIn(jsonElement, Wi.class);
 		} catch (Exception e) {
@@ -68,33 +69,20 @@ public class ActionReciveSingleAttendance extends BaseAction {
 				result.error(exception);
 			}
 		}
-
-		Date datetime = null;
-
-		if (check) {
+		
+		/*if (check) {
 			try {
 				ids = attendanceDetailServiceAdv.listDetailByNameAndDate( wrapIn.getEmpName(), wrapIn.getRecordDateString() );
 				if(ListTools.isNotEmpty(ids)){
 					attendanceDetail = attendanceDetailServiceAdv.get(ids.get(0));
 					if(attendanceDetail==null){
-						/*try {
-							datetime = dateOperation.getDateFromString(wrapIn.getRecordDateString());
-							attendanceDetail.setRecordDate(datetime);
-							attendanceDetail.setRecordDateString(dateOperation.getDateStringFromDate(datetime, "YYYY-MM-DD"));
-							attendanceDetail.setYearString(dateOperation.getYear(datetime));
-							attendanceDetail.setMonthString(dateOperation.getMonth(datetime));
-						} catch (Exception e) {
-							check = false;
-							Exception exception = new ExceptionAttendanceDetailProcess(e, "员工打卡信息中打卡日期格式异常,格式: yyyy-mm-dd. 日期:" + wrapIn.getRecordDateString());
-							result.error(exception);
-							logger.error(e, effectivePerson, request, null);
-						}
-					}else{*/
 						check = false;
 						Exception exception = new ExceptionDetailNotExists(ids.get(0));
 						result.error(exception);
 					}
 				}else{
+					attendanceDetail = new AttendanceDetail();
+					
 					check = false;
 					Exception exception = new ExceptionSingleDetailNotExists();
 					result.error(exception);
@@ -109,15 +97,59 @@ public class ActionReciveSingleAttendance extends BaseAction {
 			}
 			
 			
+		}*/
+		
+		if (check) {
+			try {
+				datetime = dateOperation.getDateFromString(wrapIn.getRecordDateString());
+				attendanceDetail.setRecordDate(datetime);
+				attendanceDetail.setRecordDateString(dateOperation.getDateStringFromDate(datetime, "YYYY-MM-DD"));
+				attendanceDetail.setYearString(dateOperation.getYear(datetime));
+				attendanceDetail.setMonthString(dateOperation.getMonth(datetime));
+			} catch (Exception e) {
+				check = false;
+				Exception exception = new ExceptionAttendanceDetailProcess(e, "员工打卡信息中打卡日期格式异常,格式: yyyy-mm-dd. 日期:" + wrapIn.getRecordDateString());
+				result.error(exception);
+				logger.error(e, effectivePerson, request, null);
+			}
 		}
+		
 		if (check) {
 			if (wrapIn.getOnDutyTime() != null && wrapIn.getOnDutyTime().trim().length() > 0) {
 				try {
 					datetime = dateOperation.getDateFromString(wrapIn.getOnDutyTime());
-					attendanceDetail.setOnDutyTime(dateOperation.getDateStringFromDate(datetime, "HH:mm:ss")); // 上班打卡时间
+					attendanceDetail.setOnDutyTime(dateOperation.getDateStringFromDate(datetime, "HH:mm:ss")); // 上午上班打卡时间
+				} catch (Exception e) {
+					check = false;
+					Exception exception = new ExceptionAttendanceDetailProcess(e, "员工上午上班打卡时间格式异常,格式: HH:mm:ss. 日期:" + wrapIn.getOnDutyTime());
+					result.error(exception);
+					logger.error(e, effectivePerson, request, null);
+				}
+			}
+		}
+		
+		if (check) {
+			if (wrapIn.getMorningOffdutyTime() != null && wrapIn.getMorningOffdutyTime().trim().length() > 0) {
+				try {
+					datetime = dateOperation.getDateFromString(wrapIn.getMorningOffdutyTime());
+					attendanceDetail.setMorningOffDutyTime(dateOperation.getDateStringFromDate(datetime, "HH:mm:ss")); // 上午下班打卡时间
+				} catch (Exception e) {
+					check = false;
+					Exception exception = new ExceptionAttendanceDetailProcess(e, "员工上午下班打卡时间格式异常,格式: HH:mm:ss. 日期:" + wrapIn.getMorningOffdutyTime());
+					result.error(exception);
+					logger.error(e, effectivePerson, request, null);
+				}
+			}
+		}
+		
+		if (check) {
+			if (wrapIn.getAfternoonOnDutyTime() != null && wrapIn.getAfternoonOnDutyTime().trim().length() > 0) {
+				try {
+					datetime = dateOperation.getDateFromString(wrapIn.getAfternoonOnDutyTime());
+					attendanceDetail.setAfternoonOnDutyTime(dateOperation.getDateStringFromDate(datetime, "HH:mm:ss")); // 下午上班打卡时间
 				} catch (Exception e) {
 					check = false;
-					Exception exception = new ExceptionAttendanceDetailProcess(e, "员工上班打卡时间格式异常,格式: HH:mm:ss. 日期:" + wrapIn.getOnDutyTime());
+					Exception exception = new ExceptionAttendanceDetailProcess(e, "员工下午上班打卡时间格式异常,格式: HH:mm:ss. 日期:" + wrapIn.getAfternoonOnDutyTime());
 					result.error(exception);
 					logger.error(e, effectivePerson, request, null);
 				}
@@ -128,7 +160,7 @@ public class ActionReciveSingleAttendance extends BaseAction {
 			if (wrapIn.getOffDutyTime() != null && wrapIn.getOffDutyTime().trim().length() > 0) {
 				try {
 					datetime = dateOperation.getDateFromString(wrapIn.getOffDutyTime());
-					attendanceDetail.setOffDutyTime(dateOperation.getDateStringFromDate(datetime, "HH:mm:ss")); // 班打卡时间
+					attendanceDetail.setOffDutyTime(dateOperation.getDateStringFromDate(datetime, "HH:mm:ss")); // 下午下班打卡时间
 				} catch (Exception e) {
 					check = false;
 					Exception exception = new ExceptionAttendanceDetailProcess(e, "员工下班打卡时间格式异常,格式: HH:mm:ss. 日期:" + wrapIn.getOffDutyTime());
@@ -169,7 +201,7 @@ public class ActionReciveSingleAttendance extends BaseAction {
 		if (check) {
 			try {
 				
-				attendanceDetail = attendanceDetailServiceAdv.save(attendanceDetail);
+				attendanceDetail = attendanceDetailServiceAdv.saveSingle(attendanceDetail);
 				result.setData( new Wo( attendanceDetail.getId() ));
 			} catch (Exception e) {
 				check = false;

+ 50 - 44
o2server/x_attendance_assemble_control/src/main/java/com/x/attendance/assemble/control/service/AttendanceDetailService.java

@@ -235,54 +235,60 @@ public class AttendanceDetailService {
 		if( attendanceDetail == null ){
 			throw new Exception("attendanceDetail can not be null!");
 		}
+		List<String> ids = null;
+		List<AttendanceDetail> attendanceDetailList = null;
+		AttendanceDetail attendanceDetail_old = null;
+		Business business = new Business( emc );
 		
-		emc.beginTransaction( AttendanceDetail.class );
-		emc.persist( attendanceDetail, CheckPersistType.all);	
-		emc.commit();
+		//如果不存在,则看看该员工当天的打卡信息是否已经存在?
+		ids = business.getAttendanceDetailFactory().listByEmployeeNameAndDate( attendanceDetail.getEmpName(), attendanceDetail.getRecordDateString() );
+		if( ids != null && !ids.isEmpty() ){
+			attendanceDetailList = business.getAttendanceDetailFactory().list(ids);
+		}
+		if( attendanceDetailList != null && !attendanceDetailList.isEmpty() ){
+			attendanceDetail_old = attendanceDetailList.get(0);
+		}
+		
+		if( attendanceDetail_old != null ){
+			//需要进行数据更新			
+			attendanceDetail_old.refresh();
+			attendanceDetail_old.setEmpName( attendanceDetail.getEmpName() );
+			attendanceDetail_old.setEmpNo( attendanceDetail.getEmpNo() );
+			attendanceDetail_old.setRecordDate( attendanceDetail.getRecordDate() );
+			attendanceDetail_old.setRecordDateString( attendanceDetail.getRecordDateString() );
+			attendanceDetail_old.setRecordStatus( 0 );
+			if(attendanceDetail.getOnDutyTime()!= null && attendanceDetail.getOffDutyTime().trim().length() > 0){
+				attendanceDetail_old.setOnDutyTime( attendanceDetail.getOnDutyTime() );
+			}
+			if(attendanceDetail.getMorningOffDutyTime()!= null && attendanceDetail.getMorningOffDutyTime().trim().length() > 0){
+				attendanceDetail_old.setMorningOffDutyTime( attendanceDetail.getMorningOffDutyTime() );
+			}
+			if(attendanceDetail.getAfternoonOnDutyTime()!= null && attendanceDetail.getAfternoonOnDutyTime().trim().length() > 0){
+				attendanceDetail_old.setAfternoonOnDutyTime( attendanceDetail.getAfternoonOnDutyTime() );
+			}
+			if(attendanceDetail.getOffDutyTime()!= null && attendanceDetail.getOffDutyTime().trim().length() > 0){
+				attendanceDetail_old.setOffDutyTime( attendanceDetail.getOffDutyTime() );
+			}
+			 
+			 
+			//emc.beginTransaction( AttendanceSetting.class );
+			emc.beginTransaction( AttendanceDetail.class );
+			emc.check( attendanceDetail_old, CheckPersistType.all);	
+			emc.commit();
+			attendanceDetail = attendanceDetail_old;
+		}else{
+			//需要新增打卡信息数据
+			if( attendanceDetail.getId() == null ) {
+				attendanceDetail.setId( AttendanceDetail.createId() );
+			}
+			emc.beginTransaction( AttendanceDetail.class );
+			emc.persist( attendanceDetail, CheckPersistType.all);	
+			emc.commit();
+		}
 		return attendanceDetail;
 	}
 	
-//	public AttendanceDetail save( EntityManagerContainer emc, AttendanceDetail attendanceDetail ) throws Exception {
-//		if( attendanceDetail == null ){
-//			throw new Exception("attendanceDetail can not be null!");
-//		}
-//		List<String> ids = null;
-//		List<AttendanceDetail> attendanceDetailList = null;
-//		AttendanceDetail attendanceDetail_old = null;
-//		Business business = new Business( emc );
-//		//先看看同一个ID是否存在
-//		attendanceDetail_old = emc.find( attendanceDetail.getId(), AttendanceDetail.class);
-//		//如果不存在,则看看该员工当天的打卡信息是否已经存在?
-//		if( attendanceDetail_old == null ){
-//			ids = business.getAttendanceDetailFactory().listByEmployeeNameAndDate( attendanceDetail.getEmpName(), attendanceDetail.getRecordDateString() );
-//			if( ids != null && !ids.isEmpty() ){
-//				attendanceDetailList = business.getAttendanceDetailFactory().list(ids);
-//			}
-//			if( attendanceDetailList != null && !attendanceDetailList.isEmpty() ){
-//				attendanceDetail_old = attendanceDetailList.get(0);
-//			}
-//		}
-//		if( attendanceDetail_old != null ){
-//			//需要进行数据更新
-//			emc.beginTransaction( AttendanceSetting.class );
-//			attendanceDetail_old.refresh();
-//			attendanceDetail_old.setEmpName( attendanceDetail.getEmpName() );
-//			attendanceDetail_old.setEmpNo( attendanceDetail.getEmpNo() );
-//			attendanceDetail_old.setRecordDate( attendanceDetail.getRecordDate() );
-//			attendanceDetail_old.setRecordDateString( attendanceDetail.getRecordDateString() );
-//			attendanceDetail_old.setRecordStatus( 0 );
-//			attendanceDetail_old.setOnDutyTime( attendanceDetail.getOnDutyTime() );
-//			attendanceDetail_old.setOffDutyTime( attendanceDetail.getOnWorkTime() );
-//			emc.check( attendanceDetail_old, CheckPersistType.all);	
-//			emc.commit();
-//		}else{
-//			//需要新增打卡信息数据
-//			emc.beginTransaction( AttendanceDetail.class );
-//			emc.persist( attendanceDetail, CheckPersistType.all);	
-//			emc.commit();
-//		}
-//		return attendanceDetail;
-//	}
+
 
 	public AttendanceDetailMobile save( EntityManagerContainer emc, AttendanceDetailMobile attendanceDetailMobile ) throws Exception {
 		if( attendanceDetailMobile == null ){