ソースを参照

Merge branch 'feature/etag' into 'wrdp'

工作时间增加判断是否是工作日

See merge request o2oa/o2oa!2149
o2null 5 年 前
コミット
065cd9b55a

+ 8 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/utils/time/WorkTime.java

@@ -85,4 +85,12 @@ public class WorkTime extends BaseWorkTime {
 		return false;
 	}
 
+	public boolean isWorkDay(Date d) {
+		return !this.isHoliday(DateUtils.toCalendar(d));
+	}
+
+	public boolean isWorkDay(Calendar c) {
+		return !this.isHoliday(c);
+	}
+
 }

+ 27 - 0
o2server/x_general_assemble_control/src/main/java/com/x/general/assemble/control/jaxrs/worktime/ActionForwardDays.java

@@ -0,0 +1,27 @@
+package com.x.general.assemble.control.jaxrs.worktime;
+
+import java.util.Date;
+
+import com.x.base.core.project.config.Config;
+import com.x.base.core.project.http.ActionResult;
+import com.x.base.core.project.http.EffectivePerson;
+import com.x.base.core.project.jaxrs.WrapString;
+import com.x.base.core.project.tools.DateTools;
+
+public class ActionForwardDays extends BaseAction {
+
+	ActionResult<Wo> execute(EffectivePerson effectivePerson, String start, long days) throws Exception {
+		ActionResult<Wo> result = new ActionResult<>();
+		Date dateOfStart = DateTools.parse(start);
+		Wo wo = new Wo();
+		wo.setValue(DateTools
+				.format(Config.workTime().forwardMinutes(dateOfStart, days * Config.workTime().minutesOfWorkDay())));
+		result.setData(wo);
+		return result;
+	}
+
+	public static class Wo extends WrapString {
+
+	}
+
+}

+ 26 - 0
o2server/x_general_assemble_control/src/main/java/com/x/general/assemble/control/jaxrs/worktime/ActionIsWorkDay.java

@@ -0,0 +1,26 @@
+package com.x.general.assemble.control.jaxrs.worktime;
+
+import java.util.Date;
+
+import com.x.base.core.project.config.Config;
+import com.x.base.core.project.http.ActionResult;
+import com.x.base.core.project.http.EffectivePerson;
+import com.x.base.core.project.jaxrs.WrapBoolean;
+import com.x.base.core.project.tools.DateTools;
+
+public class ActionIsWorkDay extends BaseAction {
+
+	ActionResult<Wo> execute(EffectivePerson effectivePerson, String date) throws Exception {
+		ActionResult<Wo> result = new ActionResult<>();
+		Date dateObject = DateTools.parse(date);
+		Wo wo = new Wo();
+		wo.setValue(Config.workTime().isWorkDay(dateObject));
+		result.setData(wo);
+		return result;
+	}
+
+	public static class Wo extends WrapBoolean {
+
+	}
+
+}

+ 38 - 1
o2server/x_general_assemble_control/src/main/java/com/x/general/assemble/control/jaxrs/worktime/WorkTimeAction.java

@@ -66,6 +66,25 @@ public class WorkTimeAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "计算开始时间前进指定工作天数后的工作时间.", action = ActionForwardMinutes.class)
+	@GET
+	@Path("forwarddays/start/{start}/days/{days}")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void forwardDays(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("开始时间") @PathParam("start") String start,
+			@JaxrsParameterDescribe("前进工作天数") @PathParam("days") int days) {
+		ActionResult<ActionForwardMinutes.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionForwardMinutes().execute(effectivePerson, start, days);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 	@JaxrsMethodDescribe(value = "返回一个工作日的工作分钟数.", action = ActionMinutesOfWorkDay.class)
 	@GET
 	@Path("minutesofworkday")
@@ -85,7 +104,7 @@ public class WorkTimeAction extends StandardJaxrsAction {
 
 	@JaxrsMethodDescribe(value = "返回指定时间是否是工作时间.", action = ActionIsWorkTime.class)
 	@GET
-	@Path("isworktime/date/{date}")
+	@Path("isworktime/{date}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
 	public void isWorkTime(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
@@ -101,4 +120,22 @@ public class WorkTimeAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
+	@JaxrsMethodDescribe(value = "返回指定时间是否是工作日.", action = ActionIsWorkDay.class)
+	@GET
+	@Path("isworkday/{date}")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void isWorkDay(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("指定日期") @PathParam("date") String date) {
+		ActionResult<ActionIsWorkDay.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionIsWorkDay().execute(effectivePerson, date);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
 }