Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/action/SupplyRoomConfigAction.java
===================================================================
diff -u -r34766 -r35031
--- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/action/SupplyRoomConfigAction.java (.../SupplyRoomConfigAction.java) (revision 34766)
+++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/action/SupplyRoomConfigAction.java (.../SupplyRoomConfigAction.java) (revision 35031)
@@ -14,6 +14,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@@ -46,6 +47,7 @@
import com.forgon.tools.MathTools;
import com.forgon.tools.StrutsParamUtils;
import com.forgon.tools.StrutsResponseUtils;
+import com.forgon.tools.date.DateTools;
import com.forgon.tools.db.DatabaseUtil;
import com.forgon.tools.hibernate.ObjectDao;
import com.forgon.tools.json.JSONUtil;
@@ -1097,6 +1099,23 @@
}
}
+ //启用数据实时看板功能; 配置为true时,启用数据实时看板功能,配置为false或不配置时,不启用;(QYSRMYY-46)
+ boolean enableRealTimeDashboardsForDataFunction = ConfigUtils.getSystemSetConfigByNameBool("enableRealTimeDashboardsForDataFunction");
+ if(enableRealTimeDashboardsForDataFunction){
+ //“数据实时看板刷新频率”
+ String dashboardsRefreshFrequencyStr = rq.getParameter("dashboardsRefreshFrequency");
+ if(DatabaseUtil.isPoIdValid(dashboardsRefreshFrequencyStr)){
+ supplyRoomConfig.setDashboardsRefreshFrequency(Integer.valueOf(dashboardsRefreshFrequencyStr));
+ }
+ //闲置时将实时看板设为屏保
+ supplyRoomConfig.setDashboardsScreenSaver(StringTools.defaultIfBlank(rq.getParameter("dashboardsScreenSaver"), Constants.STR_YES));
+ //无操作切换为闲置(分钟)
+ String noOperationTime = rq.getParameter("noOperationTime");
+ if(DatabaseUtil.isPoIdValid(noOperationTime)){
+ supplyRoomConfig.setNoOperationTime(Integer.valueOf(noOperationTime));
+ }
+ }
+
supplyRoomConfigManager.save(supplyRoomConfig);
StrutsResponseUtils.output(true, "保存成功!");
@@ -1935,6 +1954,44 @@
StrutsResponseUtils.output(resultJsonObject);
}
+ /**
+ * 判断闲置时间是否超过“无操作切换为闲置(分钟)”,
+ * success = true表示超过“无操作切换为闲置(分钟)”,需要跳转到数据实时看板QYSRMYY-46
+ * @param noOperationStartTime session记录的无操作开始时间,由过滤器赋值
+ * @param showingDashboards 是否已经显示屏保
+ */
+ public void dashboardsScreenSaver(){
+ boolean success = false;
+ JSONObject json = new JSONObject();
+ boolean showingDashboards = StrutsParamUtils.getBoolPraramValue("showingDashboards", false);
+ boolean enableRealTimeDashboardsForDataFunction = ConfigUtils.getSystemSetConfigByNameBool("enableRealTimeDashboardsForDataFunction");
+ if(enableRealTimeDashboardsForDataFunction){
+ SupplyRoomConfig supplyRoomConfig = supplyRoomConfigManager.getSystemParamsObj();
+ Integer noOperationTime = supplyRoomConfig.getNoOperationTime();
+ if(supplyRoomConfig != null
+ && StringUtils.equals(supplyRoomConfig.getDashboardsScreenSaver(), Constants.STR_YES)
+ && noOperationTime != null && noOperationTime > 0){
+ HttpSession session = StrutsParamUtils.getRequest().getSession();
+ Date noOperationStartTime = (Date)session.getAttribute("noOperationStartTime");
+ if(noOperationStartTime != null){
+ Calendar cal = Calendar.getInstance();
+ long startTime = noOperationStartTime.getTime();
+ long nowTime = cal.getTime().getTime();
+ long diff = (nowTime - startTime) / 1000 / 60;
+ if(diff >= noOperationTime.intValue()
+ && !showingDashboards){
+ success = true;
+ }
+ json.put("noOperationStartTime", DateTools.getFormatDateStr(noOperationStartTime, DateTools.COMMON_DATE_HMS));
+ json.put("nowTime", DateTools.getFormatDateStr(cal.getTime(), DateTools.COMMON_DATE_HMS));
+ }
+ }
+
+ }
+ json.put("success", success);
+ StrutsResponseUtils.output(json);
+ }
+
public String getDayStartTime() {
return dayStartTime;
}
Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/supplyroomconfig/SupplyRoomConfig.java
===================================================================
diff -u -r34740 -r35031
--- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/supplyroomconfig/SupplyRoomConfig.java (.../SupplyRoomConfig.java) (revision 34740)
+++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/supplyroomconfig/SupplyRoomConfig.java (.../SupplyRoomConfig.java) (revision 35031)
@@ -489,6 +489,21 @@
*/
public static final String DEFAULT_RECEIPTOR = "系统签收";
+ /**
+ * “数据实时看板刷新频率,单位为分钟”(QYSRMYY-46)
+ */
+ private Integer dashboardsRefreshFrequency = 30;
+
+ /**
+ * “闲置时将实时看板设为屏保”(QYSRMYY-46)
+ */
+ private String dashboardsScreenSaver = Constants.STR_YES;
+
+ /**
+ * “无操作切换为闲置(分钟)”(QYSRMYY-46)
+ */
+ private Integer noOperationTime = 5;
+
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
@@ -1352,4 +1367,31 @@
}
return false;
}
+
+ @Column(columnDefinition = "int default 30 not null ")
+ public Integer getDashboardsRefreshFrequency() {
+ return dashboardsRefreshFrequency;
+ }
+
+ public void setDashboardsRefreshFrequency(Integer dashboardsRefreshFrequency) {
+ this.dashboardsRefreshFrequency = dashboardsRefreshFrequency;
+ }
+
+ @Column(columnDefinition=" varchar(255) default '" + Constants.STR_YES + "' not null ")
+ public String getDashboardsScreenSaver() {
+ return dashboardsScreenSaver;
+ }
+
+ public void setDashboardsScreenSaver(String dashboardsScreenSaver) {
+ this.dashboardsScreenSaver = dashboardsScreenSaver;
+ }
+
+ @Column(columnDefinition = "int default 5 not null")
+ public Integer getNoOperationTime() {
+ return noOperationTime;
+ }
+
+ public void setNoOperationTime(Integer noOperationTime) {
+ this.noOperationTime = noOperationTime;
+ }
}
Index: forgon-core/src/main/java/com/forgon/security/filter/SessionTimeOutFilter.java
===================================================================
diff -u -r34486 -r35031
--- forgon-core/src/main/java/com/forgon/security/filter/SessionTimeOutFilter.java (.../SessionTimeOutFilter.java) (revision 34486)
+++ forgon-core/src/main/java/com/forgon/security/filter/SessionTimeOutFilter.java (.../SessionTimeOutFilter.java) (revision 35031)
@@ -35,29 +35,43 @@
HttpServletResponse response = (HttpServletResponse) res;
String requestURI = request.getRequestURI();
- String loginSecurirtyConfig = ConfigUtils.getSystemSetConfigByName("loginSecurirtyConfig");
- if(StringUtils.isNotBlank(loginSecurirtyConfig)){
- JSONObject json = JSONObject.fromObject(loginSecurirtyConfig);
- int sessionTimeoutMinute = json.optInt("sessionTimeout", 480);
- if(sessionTimeoutMinute <= 0){
- sessionTimeoutMinute = 480;
- }
- //System.out.println("请求URI:" + requestURI);
+ if(requestURI.contains(".do") || requestURI.contains(".mhtml") || requestURI.contains(".dwr")){
HttpSession session = request.getSession();
- Date sessionTimeOut = (Date)session.getAttribute("sessionTimeOut");
- if(!notFilterURIList.contains(requestURI)
- || (notFilterURIList.contains(requestURI) && sessionTimeOut == null)){
- Calendar cal = Calendar.getInstance();
- cal.add(Calendar.MINUTE, sessionTimeoutMinute);
- session.setAttribute("sessionTimeOut", cal.getTime());
- //System.out.println("session 失效时间:" + DateTools.getFormatDateStr(cal.getTime(), DateTools.COMMON_DATE_HMS));
- }else{
- Calendar cal = Calendar.getInstance();
- if(cal.getTimeInMillis() >= sessionTimeOut.getTime()){
- session.invalidate();
- //System.out.println("session失效,退出登录! 失效时间:" + DateTools.getFormatDateStr(sessionTimeOut, DateTools.COMMON_DATE_HMS));
+ boolean enableRealTimeDashboardsForDataFunction = ConfigUtils.getSystemSetConfigByNameBool("enableRealTimeDashboardsForDataFunction");
+ if(enableRealTimeDashboardsForDataFunction){
+ Date noOperationStartTime = (Date)session.getAttribute("noOperationStartTime");
+ if(!notFilterURIList.contains(requestURI)
+ || (notFilterURIList.contains(requestURI) && noOperationStartTime == null)){
+ //非闲置操作时,实时更新闲置操作开始时间
+ Calendar cal = Calendar.getInstance();
+ session.setAttribute("noOperationStartTime", cal.getTime());
}
}
+
+
+ String loginSecurirtyConfig = ConfigUtils.getSystemSetConfigByName("loginSecurirtyConfig");
+ if(StringUtils.isNotBlank(loginSecurirtyConfig)){
+ JSONObject json = JSONObject.fromObject(loginSecurirtyConfig);
+ int sessionTimeoutMinute = json.optInt("sessionTimeout", 480);
+ if(sessionTimeoutMinute <= 0){
+ sessionTimeoutMinute = 480;
+ }
+ //System.out.println("请求URI:" + requestURI);
+ Date sessionTimeOut = (Date)session.getAttribute("sessionTimeOut");
+ if(!notFilterURIList.contains(requestURI)
+ || (notFilterURIList.contains(requestURI) && sessionTimeOut == null)){
+ Calendar cal = Calendar.getInstance();
+ cal.add(Calendar.MINUTE, sessionTimeoutMinute);
+ session.setAttribute("sessionTimeOut", cal.getTime());
+ //System.out.println("session 失效时间:" + DateTools.getFormatDateStr(cal.getTime(), DateTools.COMMON_DATE_HMS));
+ }else{
+ Calendar cal = Calendar.getInstance();
+ if(cal.getTimeInMillis() >= sessionTimeOut.getTime()){
+ session.invalidate();
+ //System.out.println("session失效,退出登录! 失效时间:" + DateTools.getFormatDateStr(sessionTimeOut, DateTools.COMMON_DATE_HMS));
+ }
+ }
+ }
}
chain.doFilter(request, response);
Index: ssts-web/src/main/webapp/WEB-INF/web-xml-standard/web.xml
===================================================================
diff -u -r34613 -r35031
--- ssts-web/src/main/webapp/WEB-INF/web-xml-standard/web.xml (.../web.xml) (revision 34613)
+++ ssts-web/src/main/webapp/WEB-INF/web-xml-standard/web.xml (.../web.xml) (revision 35031)
@@ -33,7 +33,7 @@
com.forgon.security.filter.SessionTimeOutFilter
notFilterURIs
- /disinfectSystem/packingAction!loadWaitPackingTaskPageJson.do;/system/timeoutAction!getTimeoutSetting.do;/disinfectSystem/packingAction!getErrorAndDamageCount.do;/disinfectSystem/packingAction!loadWaitPackingTaskJson.do;/disinfectSystem/recyclingRecordAction!loadPoItems.do;/disinfectSystem/recyclingRecordAction!getAwaitForRecyclingInvoicePlan.do;/dwr/call/plaincall/OnlineUserManager.getTotalOnlineUsers.dwr;/systemmanage/user/userAction!getLoginUserData.do;/dwr/call/plaincall/ForeignTousseApplicationTableManager.getUnFinishedForeignTousseApplicationCountForSelfDepart.dwr
+ /disinfectSystem/packingAction!loadWaitPackingTaskPageJson.do;/system/timeoutAction!getTimeoutSetting.do;/disinfectSystem/packingAction!getErrorAndDamageCount.do;/disinfectSystem/packingAction!loadWaitPackingTaskJson.do;/disinfectSystem/recyclingRecordAction!loadPoItems.do;/disinfectSystem/recyclingRecordAction!getAwaitForRecyclingInvoicePlan.do;/dwr/call/plaincall/OnlineUserManager.getTotalOnlineUsers.dwr;/systemmanage/user/userAction!getLoginUserData.do;/dwr/call/plaincall/ForeignTousseApplicationTableManager.getUnFinishedForeignTousseApplicationCountForSelfDepart.dwr;/disinfectSystem/baseData/supplyRoomConfigAction!dashboardsScreenSaver.do;/jasperreports/jasperreportsAction!getFirstSupplyRoomConfigOnlineUserDate.do;/jasperreports/jasperreportsAction!getEquipmentData.do;/jasperreports/jasperreportsAction!getRealTimeBulletinBoardWorkloadData.do