Преглед изворни кода

增加工作时间接口,两个时间点之间的工作分钟数,指定时间点+分钟数,工作日分钟数,是否是工作日

zhourui пре 5 година
родитељ
комит
d4958d868b

+ 3 - 3
o2server/configSample/node_127.0.0.1.json

@@ -57,7 +57,7 @@
     "###proxyHost": "代理主机,当服务器是通过apache/nginx等代理服务器映射到公网或者通过路由器做端口映射,在这样的情况下需要设置此地址以标明公网访问地址.###",
     "###proxyPort": "代理端口,当服务器是通过apache/nginx等代理服务器映射到公网或者通过路由器做端口映射,在这样的情况下需要设置此地址以标明公网访问端口.###",
     "###redeploy": "每次启动是否重载全部应用.###",
-    "###scanInterval": "应用reload扫描间隔,\u003c0 表示不会reload应用,扫描到应用文件发生了变化.###",
+    "###scanInterval": "应用reload扫描间隔,<0 表示不会reload应用,扫描到应用文件发生了变化.###",
     "###includes": "承载的应用,在集群环境下可以选择仅承载部分应用以降低服务器负载,可以使用*作为通配符.###",
     "###excludes": "选择不承载的应用,和includes的值配合使用可以选择或者排除承载的应用,可以使用*作为通配符.###",
     "###weights": "设置应用的Web访问权重,在集群环境中,一个应用可以部署多个实例提供负载均衡.通过合计占比来分配应用占比.###",
@@ -90,7 +90,7 @@
     "###cacheControlMaxAge": "服务器max-age缓存时间(秒)###",
     "###proxyCenterEnable": "是否启用center服务器代理.###",
     "###proxyApplicationEnable": "是否启用application服务器代理###",
-    "###persistentConnectionsEnable": "是否启用长连接,默认false.###"
+    "###persistentConnectionsEnable": "是否启用长连接,默认true.###"
   },
   "data": {
     "enable": true,
@@ -114,7 +114,7 @@
     "###excludes": "在此节点上不存储的类,和includes一起设置实际存储的类,可以使用通配符*###",
     "###jmxEnable": "是否启动jmx,如果启用,可以通过本地的jmx客户端进行访问,不支持远程jmx客户端.###",
     "###cacheSize": "H2数据库缓存大小,设置H2用于作为缓存的内存大小,以M作为单位,这里默认为512M.###",
-    "###logLevel": "默认日志级别,FATAL, ERROR, WARN, INFO, TRACE. 完整的配置为DefaultLevel\u003dWARN, Tool\u003dTRACE, Enhance\u003dTRACE, METADATA\u003dTRACE, Runtime\u003dTRACE, Query\u003dTRACE, DataCache\u003dTRACE, JDBC\u003dTRACE, SQL\u003dTRACE###",
+    "###logLevel": "默认日志级别,FATAL, ERROR, WARN, INFO, TRACE. 完整的配置为DefaultLevel=WARN, Tool=TRACE, Enhance=TRACE, METADATA=TRACE, Runtime=TRACE, Query=TRACE, DataCache=TRACE, JDBC=TRACE, SQL=TRACE###",
     "###maxTotal": "最大使用连接数###",
     "###maxIdle": "最大空闲连接数###",
     "###statEnable": "启用统计,默认启用###",

+ 3 - 3
o2server/configSample/token.json

@@ -36,14 +36,14 @@
       "clientId": "",
       "clientSecret": "",
       "authAddress": "",
-      "authParameter": "client_id\u003d{$client_id}\u0026redirect_uri\u003d{$redirect_uri}",
+      "authParameter": "client_id={$client_id}&redirect_uri={$redirect_uri}",
       "authMethod": "GET",
       "tokenAddress": "",
-      "tokenParameter": "client_id\u003d{$client_id}\u0026client_secret\u003d{$client_secret}\u0026redirect_uri\u003d{$redirect_uri}\u0026grant_type\u003dauthorization_code\u0026code\u003d{$code}",
+      "tokenParameter": "client_id={$client_id}&client_secret={$client_secret}&redirect_uri={$redirect_uri}&grant_type=authorization_code&code={$code}",
       "tokenMethod": "POST",
       "tokenType": "json",
       "infoAddress": "",
-      "infoParameter": "access_token\u003d{$access_token}",
+      "infoParameter": "access_token={$access_token}",
       "infoMethod": "GET",
       "infoType": "json",
       "infoCredentialField": "openId",

+ 2 - 0
o2server/x_general_assemble_control/src/main/java/com/x/general/assemble/control/jaxrs/ActionApplication.java

@@ -8,6 +8,7 @@ import com.x.base.core.project.jaxrs.AbstractActionApplication;
 import com.x.general.assemble.control.jaxrs.area.AreaAction;
 import com.x.general.assemble.control.jaxrs.ecnet.EcnetAction;
 import com.x.general.assemble.control.jaxrs.office.OfficeAction;
+import com.x.general.assemble.control.jaxrs.worktime.WorkTimeAction;
 
 @ApplicationPath("jaxrs")
 public class ActionApplication extends AbstractActionApplication {
@@ -16,6 +17,7 @@ public class ActionApplication extends AbstractActionApplication {
 		classes.add(AreaAction.class);
 		classes.add(EcnetAction.class);
 		classes.add(OfficeAction.class);
+		classes.add(WorkTimeAction.class);
 		return classes;
 	}
 

+ 10 - 0
o2server/x_general_assemble_control/src/main/java/com/x/general/assemble/control/jaxrs/WorkTimeJaxrsFilter.java

@@ -0,0 +1,10 @@
+package com.x.general.assemble.control.jaxrs;
+
+import javax.servlet.annotation.WebFilter;
+
+import com.x.base.core.project.jaxrs.AnonymousCipherManagerUserJaxrsFilter;
+
+@WebFilter(urlPatterns = "/jaxrs/worktime/*", asyncSupported = true)
+public class WorkTimeJaxrsFilter extends AnonymousCipherManagerUserJaxrsFilter {
+
+}

+ 27 - 0
o2server/x_general_assemble_control/src/main/java/com/x/general/assemble/control/jaxrs/worktime/ActionBetweenMinutes.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.WrapInteger;
+import com.x.base.core.project.tools.DateTools;
+
+public class ActionBetweenMinutes extends BaseAction {
+
+	ActionResult<Wo> execute(EffectivePerson effectivePerson, String start, String end) throws Exception {
+		ActionResult<Wo> result = new ActionResult<>();
+		Date dateOfStart = DateTools.parse(start);
+		Date dateOfEnd = DateTools.parse(end);
+		Wo wo = new Wo();
+		wo.setValue((int) Config.workTime().betweenMinutes(dateOfStart, dateOfEnd));
+		result.setData(wo);
+		return result;
+	}
+
+	public static class Wo extends WrapInteger {
+
+	}
+
+}

+ 26 - 0
o2server/x_general_assemble_control/src/main/java/com/x/general/assemble/control/jaxrs/worktime/ActionForwardMinutes.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.WrapString;
+import com.x.base.core.project.tools.DateTools;
+
+public class ActionForwardMinutes extends BaseAction {
+
+	ActionResult<Wo> execute(EffectivePerson effectivePerson, String start, long minutes) throws Exception {
+		ActionResult<Wo> result = new ActionResult<>();
+		Date dateOfStart = DateTools.parse(start);
+		Wo wo = new Wo();
+		wo.setValue(DateTools.format(Config.workTime().forwardMinutes(dateOfStart, minutes)));
+		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/ActionIsWorkTime.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 ActionIsWorkTime 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().isWorkTime(dateObject));
+		result.setData(wo);
+		return result;
+	}
+
+	public static class Wo extends WrapBoolean {
+
+	}
+
+}

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

@@ -0,0 +1,22 @@
+package com.x.general.assemble.control.jaxrs.worktime;
+
+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.WrapInteger;
+
+public class ActionMinutesOfWorkDay extends BaseAction {
+
+	ActionResult<Wo> execute(EffectivePerson effectivePerson) throws Exception {
+		ActionResult<Wo> result = new ActionResult<>();
+		Wo wo = new Wo();
+		wo.setValue((int) Config.workTime().minutesOfWorkDay());
+		result.setData(wo);
+		return result;
+	}
+
+	public static class Wo extends WrapInteger {
+
+	}
+
+}

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

@@ -0,0 +1,7 @@
+package com.x.general.assemble.control.jaxrs.worktime;
+
+import com.x.base.core.project.jaxrs.StandardJaxrsAction;
+
+abstract class BaseAction extends StandardJaxrsAction {
+
+}

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

@@ -0,0 +1,104 @@
+package com.x.general.assemble.control.jaxrs.worktime;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.container.AsyncResponse;
+import javax.ws.rs.container.Suspended;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+
+import com.x.base.core.project.annotation.JaxrsDescribe;
+import com.x.base.core.project.annotation.JaxrsMethodDescribe;
+import com.x.base.core.project.annotation.JaxrsParameterDescribe;
+import com.x.base.core.project.http.ActionResult;
+import com.x.base.core.project.http.EffectivePerson;
+import com.x.base.core.project.http.HttpMediaType;
+import com.x.base.core.project.jaxrs.ResponseFactory;
+import com.x.base.core.project.jaxrs.StandardJaxrsAction;
+import com.x.base.core.project.logger.Logger;
+import com.x.base.core.project.logger.LoggerFactory;
+
+@Path("worktime")
+@JaxrsDescribe("工作时间")
+public class WorkTimeAction extends StandardJaxrsAction {
+
+	private static Logger logger = LoggerFactory.getLogger(WorkTimeAction.class);
+
+	@JaxrsMethodDescribe(value = "计算开始时间和结束时间之间的工作时间间隔(分钟).", action = ActionBetweenMinutes.class)
+	@GET
+	@Path("betweenminutes/start/{start}/end/{end}")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void betweenMinutes(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("开始时间") @PathParam("start") String start,
+			@JaxrsParameterDescribe("结束时间") @PathParam("end") String end) {
+		ActionResult<ActionBetweenMinutes.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionBetweenMinutes().execute(effectivePerson, start, end);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "计算开始时间前进指定分钟数后的工作时间.", action = ActionForwardMinutes.class)
+	@GET
+	@Path("forwardminutes/start/{start}/minutes/{minutes}")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void forwardMinutes(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("开始时间") @PathParam("start") String start,
+			@JaxrsParameterDescribe("前进分钟数") @PathParam("minutes") int minutes) {
+		ActionResult<ActionForwardMinutes.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionForwardMinutes().execute(effectivePerson, start, minutes);
+		} 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")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void minutesOfWorkDay(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request) {
+		ActionResult<ActionMinutesOfWorkDay.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionMinutesOfWorkDay().execute(effectivePerson);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+	@JaxrsMethodDescribe(value = "返回指定时间是否是工作时间.", action = ActionIsWorkTime.class)
+	@GET
+	@Path("isworktime/date/{date}")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void isWorkTime(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
+			@JaxrsParameterDescribe("指定时间") @PathParam("date") String date) {
+		ActionResult<ActionIsWorkTime.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionIsWorkTime().execute(effectivePerson, date);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
+	}
+
+}