Index: forgon-core/src/main/java/com/forgon/timeout/service/TimeoutManager.java =================================================================== diff -u -r14201 -r14217 --- forgon-core/src/main/java/com/forgon/timeout/service/TimeoutManager.java (.../TimeoutManager.java) (revision 14201) +++ forgon-core/src/main/java/com/forgon/timeout/service/TimeoutManager.java (.../TimeoutManager.java) (revision 14217) @@ -53,4 +53,11 @@ * @return 如果超时,返回true,否则返回false。如果date为null,返回false。如果timeoutSetting为null,或者设置的小时数和分钟数都为0,返回false */ public boolean isTimeouted(Date date,TimeoutSetting timeoutSetting); + /** + * 判断指定时间是否超时 + * @param date 要比较的日期,为字符串,可能为空。如果为空,返回false + * @param timeoutSetting 处理环节的超时设置 + * @return 如果超时,返回true,否则返回false。如果date为null或者空串,返回false。如果timeoutSetting为null,或者设置的小时数和分钟数都为0,返回false + */ + public boolean isTimeouted(String date,TimeoutSetting timeoutSetting); } Index: forgon-core/src/main/java/com/forgon/timeout/action/TimeoutAction.java =================================================================== diff -u -r14187 -r14217 --- forgon-core/src/main/java/com/forgon/timeout/action/TimeoutAction.java (.../TimeoutAction.java) (revision 14187) +++ forgon-core/src/main/java/com/forgon/timeout/action/TimeoutAction.java (.../TimeoutAction.java) (revision 14217) @@ -1,11 +1,14 @@ package com.forgon.timeout.action; +import net.sf.json.JSONObject; + import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import com.forgon.timeout.model.TimeoutParameter; import com.forgon.timeout.service.TimeoutManager; +import com.forgon.tools.StrutsParamUtils; import com.forgon.tools.StrutsResponseUtils; import com.forgon.tools.json.JSONUtil; import com.opensymphony.xwork2.ModelDriven; @@ -42,6 +45,18 @@ StrutsResponseUtils.output(JSONUtil.buildJsonObject(false)); } } + /** + * 获取指定环节的超时设置 + */ + public void getTimeoutSetting(){ + try{ + JSONObject json = JSONObject.fromObject(timeoutManager.getTimeoutSetting(StrutsParamUtils.getPraramValue("procedure", ""))); + StrutsResponseUtils.output(JSONUtil.addSuccess(json, true)); + }catch(Exception ex){ + ex.printStackTrace(); + } + StrutsResponseUtils.output(false); + } @Override public TimeoutParameter getModel() { Index: ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordForm.js =================================================================== diff -u -r14136 -r14217 --- ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordForm.js (.../sterilizationRecordForm.js) (revision 14136) +++ ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordForm.js (.../sterilizationRecordForm.js) (revision 14217) @@ -1089,6 +1089,33 @@ url : WWWROOT + '/disinfectSystem/tousseInstanceAction!getTodayPendingSterilizationTousseAndBasket.do?'+urlParam, uiProviders:{ 'col': top.Ext.tree.ColumnNodeUI + }, + listeners:{ + load:function(treeLoader, node, response){ + Ext.Ajax.request({ + url : WWWROOT + '/system/timeoutAction!getTimeoutSetting.do', + params : {procedure : 'reviewToSterile'}, + success : function(response, options) { + var result = Ext.decode(response.responseText); + if(result.success && result.showMessageBox){ + var timeoutCount = 0; + for(var i = 0; i < node.childNodes.length;++i){ + var cNode = node.childNodes[i]; + if(cNode.attributes.isTimeout){ + timeoutCount++; + //cNode.addClass('itemTimeout'); +// cNode.addListener('mouseover',function(){ +// alert('mouseover'); +// }) + } + } + if(timeoutCount > 0){ + showResult('有'+timeoutCount+'个超时未灭菌的物品,请及时处理红色标注的物品'); + } + } + } + }); + } } }), root: new top.Ext.tree.AsyncTreeNode({ Index: ssts-web/src/main/webapp/ext/fontSize12/treepanel/resources/css/column-tree.css =================================================================== diff -u -r12331 -r14217 --- ssts-web/src/main/webapp/ext/fontSize12/treepanel/resources/css/column-tree.css (.../column-tree.css) (revision 12331) +++ ssts-web/src/main/webapp/ext/fontSize12/treepanel/resources/css/column-tree.css (.../column-tree.css) (revision 14217) @@ -61,4 +61,10 @@ } .task-folder { background-image:url(../images/folder_go.png) !important; +} +.itemTimeout{ + background:red +} +.itemTimeout-over{ + background:red } \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washAndDisinfectForm.js =================================================================== diff -u -r14195 -r14217 --- ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washAndDisinfectForm.js (.../washAndDisinfectForm.js) (revision 14195) +++ ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washAndDisinfectForm.js (.../washAndDisinfectForm.js) (revision 14217) @@ -541,6 +541,33 @@ url : WWWROOT + '/disinfectSystem/washAndDisinfect/washAndDisinfectRecordAction!getPendingWashAndDisinfectTousseAndBasket.do?', uiProviders:{ 'col': top.Ext.tree.ColumnNodeUI + }, + listeners:{ + load:function(treeLoader, node, response){ + Ext.Ajax.request({ + url : WWWROOT + '/system/timeoutAction!getTimeoutSetting.do', + params : {procedure : 'recycleToWash'}, + success : function(response, options) { + var result = Ext.decode(response.responseText); + if(result.success && result.showMessageBox){ + var timeoutCount = 0; + for(var i = 0; i < node.childNodes.length;++i){ + var cNode = node.childNodes[i]; + if(cNode.attributes.isTimeout){ + timeoutCount++; + //cNode.addClass('itemTimeout'); +// cNode.addListener('mouseover',function(){ +// alert('mouseover'); +// }) + } + } + if(timeoutCount > 0){ + showResult('有'+timeoutCount+'个超时未清洗的篮筐,请及时处理红色标注的篮筐'); + } + } + } + }); + } } }), root: new top.Ext.tree.AsyncTreeNode({ Index: ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/action/WashAndDisinfectRecordAction.java =================================================================== diff -u -r14149 -r14217 --- ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/action/WashAndDisinfectRecordAction.java (.../WashAndDisinfectRecordAction.java) (revision 14149) +++ ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/action/WashAndDisinfectRecordAction.java (.../WashAndDisinfectRecordAction.java) (revision 14217) @@ -6,6 +6,7 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; +import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -22,6 +23,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.time.DateUtils; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; @@ -40,7 +42,10 @@ import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecordMaterial; import com.forgon.disinfectsystem.tousse.materialdefinition.service.MaterialDefinitionManager; import com.forgon.disinfectsystem.washanddisinfectmanager.washanddisinfectrecord.service.WashAndDisinfectRecordManager; +import com.forgon.timeout.model.TimeoutSetting; +import com.forgon.timeout.service.TimeoutManager; import com.forgon.tools.StrutsParamUtils; +import com.forgon.tools.StrutsResponseUtils; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.json.JSONUtil; @@ -69,8 +74,13 @@ private MaterialDefinitionManager materialDefinitionManager; private ObjectDao objectDao; + private TimeoutManager timeoutManager; private boolean hasWashRecord = false; + public void setTimeoutManager(TimeoutManager timeoutManager) { + this.timeoutManager = timeoutManager; + } + public MaterialDefinitionManager getMaterialDefinitionManager() { return materialDefinitionManager; } @@ -616,6 +626,7 @@ JSONArray jsonArray = new JSONArray(); + JSONArray notTimeoutJsonArray = new JSONArray(); //未超时的篮筐,需要放在后面 // 获取未清洗的所有篮筐 String sql = "select po from " + ClassifyBasket.class.getSimpleName()+ " po left join po.washAndDisinfectRecords wr where wr is null and po in (select classifyBasket from ClassifiedItem) " @@ -626,6 +637,7 @@ // Date startTime = sdf.parse(currentDate + " 00:00:00"); // Date endTime = sdf.parse(currentDate + " 23:59:59"); if( baskets != null && CollectionUtils.isNotEmpty(baskets)){ + TimeoutSetting timeoutSetting = timeoutManager.getTimeoutSetting(TimeoutManager.PROCEDURE_RECYCLE_TO_WASH); for (ClassifyBasket basket : baskets) { // List rrs = basket.getRecyclingRecords(); // boolean isTodayRecyclingRecord = false; @@ -643,13 +655,16 @@ // String containName = basket.getContainerName(); Set items = basket.getClassfiedItems(); int basketGoodsAmount = 0; + boolean isTimeout = timeoutManager.isTimeouted(basket.getRecyclingTime(), timeoutSetting); + String cls = isTimeout ? "itemTimeout" : ""; JSONObject basketObj = new JSONObject(); basketObj.put("objName", basket.getContainerName()); basketObj.put("objBarcode", basket.getContainerBarcode()); basketObj.put("type", "BASKET"); basketObj.put("uiProvider", "col"); - basketObj.put("cls", "master-task"); + basketObj.put("cls", cls); basketObj.put("iconCls", "task-folder"); + basketObj.put("isTimeout", isTimeout); JSONArray tousseInBasketArray = new JSONArray(); @@ -661,17 +676,22 @@ tousseInBasket.put("type", "TOUSSE_IN"); tousseInBasket.put("uiProvider", "col"); tousseInBasket.put("leaf", true); - tousseInBasket.put("iconCls", "task"); + tousseInBasket.put("iconCls", "task"); + tousseInBasket.put("cls", cls); tousseInBasketArray.add(tousseInBasket); basketGoodsAmount += item.getAmount(); } // 最后才统计物品数量 basketObj.put("objAmount", basketGoodsAmount); basketObj.put("children", tousseInBasketArray); - jsonArray.add(basketObj); + if(isTimeout){ + jsonArray.add(basketObj); + }else{ + notTimeoutJsonArray.add(basketObj); + } } } - + jsonArray.addAll(notTimeoutJsonArray); @SuppressWarnings("unchecked") Iterator it = jsonArray.iterator(); while (it.hasNext()) { @@ -683,12 +703,7 @@ } } } - HttpServletResponse response = StrutsParamUtils.getResponse(); - response.setCharacterEncoding("UTF-8"); - PrintWriter out; - out = response.getWriter(); - out.print(jsonArray.toString()); - out.close(); + StrutsResponseUtils.output(jsonArray); } catch (Exception e) { e.printStackTrace(); } Index: forgon-core/src/main/java/com/forgon/timeout/service/TimeoutManagerImpl.java =================================================================== diff -u -r14201 -r14217 --- forgon-core/src/main/java/com/forgon/timeout/service/TimeoutManagerImpl.java (.../TimeoutManagerImpl.java) (revision 14201) +++ forgon-core/src/main/java/com/forgon/timeout/service/TimeoutManagerImpl.java (.../TimeoutManagerImpl.java) (revision 14217) @@ -12,6 +12,7 @@ import com.forgon.keyvalue.service.KeyValueManager; import com.forgon.tools.json.JSONUtil; import com.forgon.tools.string.StringTools; +import com.forgon.tools.util.ForgonDateUtils; public class TimeoutManagerImpl implements TimeoutManager { @@ -173,12 +174,20 @@ } @Override public boolean isTimeouted(Date date, TimeoutSetting timeoutSetting) { - if(date != null && timeoutSetting.getHour() > 0 && timeoutSetting.getMinute() > 0){ + if(date != null && (timeoutSetting.getHour() > 0 || timeoutSetting.getMinute() > 0)){ Date endDate = DateUtils.addHours(date, timeoutSetting.getHour()); endDate = DateUtils.addMinutes(endDate, timeoutSetting.getMinute()); return endDate.before(new Date()); } return false; } + @Override + public boolean isTimeouted(String date, TimeoutSetting timeoutSetting) { + if(StringTools.isNotBlank(date)){ + Date d = ForgonDateUtils.safelyParseDate(date, com.forgon.Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMM); + return isTimeouted(d,timeoutSetting); + } + return false; + } } Index: ssts-web/src/main/webapp/disinfectsystem/packing/reviewView.jsp =================================================================== diff -u -r12331 -r14217 --- ssts-web/src/main/webapp/disinfectsystem/packing/reviewView.jsp (.../reviewView.jsp) (revision 12331) +++ ssts-web/src/main/webapp/disinfectsystem/packing/reviewView.jsp (.../reviewView.jsp) (revision 14217) @@ -10,6 +10,7 @@ 器械包审核 Index: forgon-tools/src/main/java/com/forgon/tools/json/JSONUtil.java =================================================================== diff -u -r14011 -r14217 --- forgon-tools/src/main/java/com/forgon/tools/json/JSONUtil.java (.../JSONUtil.java) (revision 14011) +++ forgon-tools/src/main/java/com/forgon/tools/json/JSONUtil.java (.../JSONUtil.java) (revision 14217) @@ -289,12 +289,24 @@ */ public static JSONObject buildJsonObject(boolean success,String message){ JSONObject json = new JSONObject(); - json.put("success", success); + addSuccess(json,success); if(StringTools.isNotBlank(message)){ json.put("message", message); } return json; } + /** + * 在json对象中添加是否成功的标志 + * @param json json对象,如果为null,不做处理 + * @param success 是否成功的标志 + * @return 原json对象,并且添加了是否成功的标志位 + */ + public static JSONObject addSuccess(JSONObject json,boolean success){ + if(json != null){ + json.put("success", success); + } + return json; + } public static Long optLong(JSONObject obj, String key, Long defValue) { Long v = obj.optLong(key, Long.MAX_VALUE); if (v == Long.MAX_VALUE) { Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/TousseInstanceAction.java =================================================================== diff -u -r14169 -r14217 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/TousseInstanceAction.java (.../TousseInstanceAction.java) (revision 14169) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/TousseInstanceAction.java (.../TousseInstanceAction.java) (revision 14217) @@ -55,10 +55,13 @@ import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; import com.forgon.disinfectsystem.vo.TousseSimpleVO; import com.forgon.disinfectsystem.washanddisinfectmanager.washanddisinfectrecord.service.WashAndDisinfectRecordManager; +import com.forgon.timeout.model.TimeoutSetting; +import com.forgon.timeout.service.TimeoutManager; import com.forgon.tools.FileSystemHelper; import com.forgon.tools.ImageUtils; import com.forgon.tools.SqlBuilder; import com.forgon.tools.StrutsParamUtils; +import com.forgon.tools.StrutsResponseUtils; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.util.ForgonDateUtils; @@ -99,6 +102,12 @@ private BarcodeManager barcodeManager; + private TimeoutManager timeoutManager; + + public void setTimeoutManager(TimeoutManager timeoutManager) { + this.timeoutManager = timeoutManager; + } + public void setPackingManager(PackingManager packingManager) { this.packingManager = packingManager; } @@ -771,6 +780,7 @@ public void getTodayPendingSterilizationTousseAndBasket() { try { String status = StrutsParamUtils.getPraramValue("status", ""); + TimeoutSetting timeoutSetting = timeoutManager.getTimeoutSetting(TimeoutManager.PROCEDURE_REVIEW_TO_STERILE); // 状态如果是已灭菌或者灭菌失败,就不用加载 if (StringUtils.equals(status, SterilizationRecord.STERILIZATION_STATUS_END) @@ -783,6 +793,7 @@ .getOrgUnitCodingFromSupplyRoomConfig(); JSONArray jsonArray = new JSONArray(); + JSONArray notTimeoutArray = new JSONArray(); List reviewedBaskets = reviewedBasketManager .getDepartAllReviewedBasket(orgUnitCoding); @@ -811,9 +822,11 @@ JSONArray tousseInBasketArray = new JSONArray(); + boolean isNotTimeout = true; for (TousseSimpleVO vo : vos) { JSONObject tousseInBasket = new JSONObject(); + boolean isTimeout = timeoutManager.isTimeouted(vo.getReviewTime(),timeoutSetting); tousseInBasket.put("objName", vo.getItemDefinition().getName()); tousseInBasket.put("objBarcode", vo.getBarcode()); tousseInBasket.put("objAmount", 1); @@ -822,19 +835,28 @@ tousseInBasket.put("uiProvider", "col"); tousseInBasket.put("leaf", true); tousseInBasket.put("iconCls", "task"); + tousseInBasket.put("cls", isTimeout ? "itemTimeout" : ""); + if(isTimeout){ + isNotTimeout = false; + } tousseInBasketArray.add(tousseInBasket); } basketObj.put("children", tousseInBasketArray); - - jsonArray.add(basketObj); + basketObj.put("isTimeout", !isNotTimeout); + if(isNotTimeout){ + notTimeoutArray.add(basketObj); + }else{ + basketObj.put("cls", "itemTimeout"); + jsonArray.add(basketObj); + } } // 加载未入筐的器械包 for (TousseInstance tousseOutsideBasket : toussesOutsideBasketOfToday) { - + boolean isTimeout = timeoutManager.isTimeouted(tousseOutsideBasket.getReviewTime(), timeoutSetting); JSONObject obj = new JSONObject(); obj.put("objName", tousseOutsideBasket.getShowTousseName()); obj.put("objBarcode", tousseOutsideBasket.getBarcode()); @@ -843,13 +865,19 @@ obj.put("type", "TOUSSE"); obj.put("uiProvider", "col"); obj.put("leaf", true); - obj.put("cls", "master-task"); + obj.put("cls", isTimeout ? "itemTimeout" : "master-task"); obj.put("iconCls", "task"); + obj.put("isTimeout", isTimeout); + if(isTimeout){ + jsonArray.add(obj); + }else{ + notTimeoutArray.add(obj); + } - jsonArray.add(obj); } + jsonArray.addAll(notTimeoutArray); //未超时的加到最后 @SuppressWarnings("unchecked") Iterator it = jsonArray.iterator(); while (it.hasNext()) { @@ -861,12 +889,7 @@ } } } - HttpServletResponse response = StrutsParamUtils.getResponse(); - response.setCharacterEncoding("UTF-8"); - PrintWriter out; - out = response.getWriter(); - out.print(jsonArray.toString()); - out.close(); + StrutsResponseUtils.output(jsonArray); } catch (Exception e) { e.printStackTrace(); } Index: ssts-web/src/main/webapp/systemmanage/timeoutSetting.js =================================================================== diff -u -r14187 -r14217 --- ssts-web/src/main/webapp/systemmanage/timeoutSetting.js (.../timeoutSetting.js) (revision 14187) +++ ssts-web/src/main/webapp/systemmanage/timeoutSetting.js (.../timeoutSetting.js) (revision 14217) @@ -4,7 +4,7 @@ var yesNoStore = new Ext4.data.Store( { fields : [{name:'value'},{name:'text'}], - data : [{value:'0',text:'是'}, {value:'1',text:'否'}] + data : [{value:'0',text:'否'}, {value:'1',text:'是'}] }); var formObj = new Ext4.form.Panel({ Index: ssts-web/src/main/webapp/disinfectsystem/packing/reviewView.js =================================================================== diff -u -r14149 -r14217 --- ssts-web/src/main/webapp/disinfectsystem/packing/reviewView.js (.../reviewView.js) (revision 14149) +++ ssts-web/src/main/webapp/disinfectsystem/packing/reviewView.js (.../reviewView.js) (revision 14217) @@ -649,7 +649,7 @@ materialStore.load(); } -function loadImage(materialId,name,imageType){ + function loadImage(materialId,name,imageType){ page = 1; totalPage = 0; //加载当前包图片总页数 @@ -678,7 +678,28 @@ }, failure : function(){} }); -} + } + function showTimeoutMessageBox(){ + Ext.Ajax.request({ + url : WWWROOT + '/system/timeoutAction!getTimeoutSetting.do', + params : {procedure : 'packingToReview'}, + success : function(response, options) { + var result = Ext.decode(response.responseText); + if(result.success && result.showMessageBox){ + var count = 0; + var store = grid.getStore(); + for(var i = 0; i < store.getCount();++i){ + if(store.getAt(i).data.isTimeout){ + ++count; + } + } + if(count > 0){ + showResult('有'+count+'个超时未审核的器械包,请及时处理红色标注的器械包'); + } + } + } + }); + } //展示器械包图片信息 function getAndShowTousseInfoDiv(tousseName,tousseDefinitionId) { currentImageType = "器械包图片"; @@ -865,7 +886,8 @@ {name : 'sterilingType'}, {name : 'validUntil'}, {name : 'packageType'}, - {name : 'scanned'} + {name : 'scanned'}, + {name : 'isTimeout'} ]; @@ -938,9 +960,12 @@ border : false, viewConfig:{ getRowClass : function(record,rowIndex,rowParams,store){ - if(record.data.scanned){ - return 'my_row_yellow'; - } + if(record.data.scanned){ + return 'my_row_yellow'; + } + if(record.data.isTimeout){ + return 'my_row_red'; + } } } }, @@ -949,6 +974,7 @@ null ); grid.getStore().on('load', function(grid, index) { + showTimeoutMessageBox(); onGridReload(); }, this); grid.on('rowdblclick', function(grid, index) { Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/dwr/table/TousseInstanceTableManager.java =================================================================== diff -u -r13710 -r14217 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/dwr/table/TousseInstanceTableManager.java (.../TousseInstanceTableManager.java) (revision 13710) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/dwr/table/TousseInstanceTableManager.java (.../TousseInstanceTableManager.java) (revision 14217) @@ -38,10 +38,13 @@ import com.forgon.disinfectsystem.packing.service.PackingManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; +import com.forgon.timeout.model.TimeoutSetting; +import com.forgon.timeout.service.TimeoutManager; import com.forgon.tools.SqlBuilder; import com.forgon.tools.date.DateTools; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.json.JSONUtil; /** * @author songwei @@ -67,7 +70,13 @@ private SupplyRoomConfigManager supplyRoomConfigManager; private ReviewedBasketManager reviewedBasketManager; + + private TimeoutManager timeoutManager; + public void setTimeoutManager(TimeoutManager timeoutManager) { + this.timeoutManager = timeoutManager; + } + public void setReviewedBasketManager( ReviewedBasketManager reviewedBasketManager) { this.reviewedBasketManager = reviewedBasketManager; @@ -337,7 +346,7 @@ }*/ String sql = sqlBuilder.toString(); - return gridManager + String jsonStr = gridManager .renderGrid( parameterMap, TousseInstance.class.getSimpleName(), @@ -374,6 +383,28 @@ "washAndDisinfectMaterials", "classfiedItems", "reviewedBasket", "operateUser", "wasteReason", "wasteDate" }); + JSONObject json = JSONObject.fromObject(jsonStr); + if(json != null){ + JSONArray array = json.getJSONArray("rows"); + JSONArray jsonArray = new JSONArray(); + JSONArray notTimeoutArray = new JSONArray(); + if(array != null && array.size() > 0){ + TimeoutSetting timeoutSetting = timeoutManager.getTimeoutSetting(TimeoutManager.PROCEDURE_PACKING_TO_REVIEW); + for(int i = 0; i < array.size();++i){ + JSONObject obj = array.getJSONObject(i); + boolean isTimeout = timeoutManager.isTimeouted(obj.getString("operationTime"), timeoutSetting); + obj.put("isTimeout", isTimeout); + if(isTimeout){ + jsonArray.add(obj); + }else{ + notTimeoutArray.add(obj); + } + } + } + jsonArray.addAll(notTimeoutArray); + json.put("rows", jsonArray); + } + return json.toString(); } /**