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