Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/container/service/ReviewedBasketManagerImpl.java =================================================================== diff -u -r16845 -r16904 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/container/service/ReviewedBasketManagerImpl.java (.../ReviewedBasketManagerImpl.java) (revision 16845) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/container/service/ReviewedBasketManagerImpl.java (.../ReviewedBasketManagerImpl.java) (revision 16904) @@ -336,8 +336,8 @@ } /** - * 根据审核篮筐条码,获取其数量 - * @param basketBarcode 审核篮筐条码 + * 根据篮筐条码(灭菌篮筐条码或者虚拟篮筐条码),获取其生成ReviewedBasket的数量 + * @param basketBarcode 篮筐条码(灭菌篮筐条码和虚拟篮筐条码) * @return */ @Override @@ -366,9 +366,9 @@ } /** - * 通过审核篮筐条码获取ReviewedBasket对象集合 - * @param basketBarcode 审核篮筐条码 - * @param pageNow 请求的当前页 + * 根据篮筐条码(灭菌篮筐条码或者虚拟篮筐条码),获取其生成ReviewedBasket的对象集合 + * @param basketBarcode 篮筐条码(灭菌篮筐条码和虚拟篮筐条码) + * @param pageNow 请求当前页 * @param pageSize 每一页的大小 * @return */ Index: ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/action/WashAndDisinfectRecordAction.java =================================================================== diff -u -r16772 -r16904 --- ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/action/WashAndDisinfectRecordAction.java (.../WashAndDisinfectRecordAction.java) (revision 16772) +++ ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/action/WashAndDisinfectRecordAction.java (.../WashAndDisinfectRecordAction.java) (revision 16904) @@ -8,7 +8,6 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; -import java.util.Locale; import java.util.Map; import java.util.Set; @@ -37,12 +36,12 @@ import com.forgon.disinfectsystem.entity.basedatamanager.container.Container; import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.rinser.Rinser; -import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.becleanitem.ClassifiedItem; import com.forgon.disinfectsystem.entity.becleanitem.ClassifyBasket; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecord; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecordMaterial; import com.forgon.disinfectsystem.tousse.materialdefinition.service.MaterialDefinitionManager; +import com.forgon.disinfectsystem.washanddisinfectmanager.washanddisinfectrecord.service.ClassifiedItemManager; import com.forgon.disinfectsystem.washanddisinfectmanager.washanddisinfectrecord.service.WashAndDisinfectRecordManager; import com.forgon.timeout.model.TimeoutSetting; import com.forgon.timeout.service.TimeoutManager; @@ -81,6 +80,8 @@ private TimeoutManager timeoutManager; private boolean hasWashRecord = false; + private ClassifiedItemManager classifiedItemManager; + public void setBarcodeManager(BarcodeManager barcodeManager) { this.barcodeManager = barcodeManager; } @@ -107,6 +108,10 @@ this.washAndDisinfectRecordManager = washAndDisinfectRecordManager; } + public void setClassifiedItemManager(ClassifiedItemManager classifiedItemManager) { + this.classifiedItemManager = classifiedItemManager; + } + public void saveWashAndDisinfectRecord() { String message = JSONUtil.buildJsonObject(true, "保存成功!").toString(); // 开始时间、结束时间 @@ -275,210 +280,93 @@ } /** - * 根据篮筐条码加载已分类篮筐里的内容物 + * 根据篮筐条码加载每个篮筐实例的内容 * @throws ParseException */ public void loadContentByBasketBarcode() throws ParseException { - String barcode = StrutsParamUtils.getPraramValue("barcode", null); - if(StringUtils.isBlank(barcode)){ - return ; - } - String jsonStr = getClassifyBasketItemJsonByBarcode(barcode); - if (jsonStr != null) { - HttpServletResponse httpServletResponse = StrutsParamUtils - .getResponse(); - httpServletResponse.setCharacterEncoding("UTF-8"); - try { - httpServletResponse.getWriter().print(jsonStr); - } catch (IOException e) { - e.printStackTrace(); + + String basketBarcode = StrutsParamUtils.getPraramValue("barcode", null); + String pageSizeString = StrutsParamUtils.getPraramValue("pageSize", null); + String pageNowString = StrutsParamUtils.getPraramValue("pageNow", null); + if(StringUtils.isNotBlank(basketBarcode) + && StringUtils.isNotBlank(pageSizeString) + && StringUtils.isNotBlank(pageNowString)){ + Integer rowCount = classifiedItemManager.getClassifyBasketItemCountByBarcode(basketBarcode); //此条码所有清洗篮筐实例的数量(同一个篮筐实例清洗N次则算N个) + Integer pageSize = Integer.parseInt(pageSizeString); + Integer pageNow = Integer.parseInt(pageNowString); + Integer pageCount=(rowCount-1)/pageSize+1; + if (pageNow > pageCount) { //用户输的当前页大于最后一页 + pageNow = pageCount; + } else if (pageNow < 1) { //用户输的当前页小于1 + pageNow = 1; } - } - } - - /** - * 通过篮筐条码查询分类篮筐里的内容物(已经清洗过的) - * - * @param barcode - * @return 2014-6-26 forgonClassifyBasket - * @throws ParseException - */ - private String getClassifyBasketItemJsonByBarcode(String barcode) throws ParseException { - if (StringUtils.isBlank(barcode)) { - return null; - } - Calendar startDate =Calendar.getInstance(Locale.CHINA); - startDate.add(Calendar.DAY_OF_MONTH, -1); - startDate.set(Calendar.HOUR_OF_DAY, 0); - startDate.set(Calendar.MINUTE, 0); - startDate.set(Calendar.SECOND, 0); - Calendar endDate =Calendar.getInstance(Locale.CHINA); - endDate.set(Calendar.HOUR_OF_DAY, 23); - endDate.set(Calendar.MINUTE, 59); - endDate.set(Calendar.SECOND, 59); - //查询已经洗过的记录 - String hql = " from " - + WashAndDisinfectRecord.class.getSimpleName() - + " po inner join fetch po.classifyBaskets c where c.containerBarcode='" - + barcode + "' and po.startDate >= " - + dateQueryAdapter.dateAdapter(startDate.getTime())//DateTools.getFormatDateStr(startDate.getTime(),"yyyy-MM-dd HH:mm:ss") - + " and po.startDate <= " - + dateQueryAdapter.dateAdapter(endDate.getTime())//DateTools.getFormatDateStr(endDate.getTime(),"yyyy-MM-dd HH:mm:ss") - +" order by po.startDate desc"; - - @SuppressWarnings("unchecked") - List list = objectDao.findByHql(hql); - StringBuffer jsonStr = new StringBuffer(); - jsonStr.append("["); - if (list != null && list.size() != 0) { - hasWashRecord = true; - for(int i=0;i=" - + dateQueryAdapter.dateAdapter(startDate.getTime())//DateTools.getFormatDateStr(startDate.getTime(),"yyyy-MM-dd HH:mm:ss") - + " and c.recyclingTime <= " - + dateQueryAdapter.dateAdapter(endDate.getTime())//DateTools.getFormatDateStr(endDate.getTime(),"yyyy-MM-dd HH:mm:ss") - +" order by c.recyclingTime desc"; - @SuppressWarnings("unchecked") - List baskets = objectDao.findByHql(sql); - if(baskets!=null && baskets.size() !=0){ - int countLoopX = 0; - if(hasWashRecord){ - jsonStr.append(","); - } - ClassifyBasket basket = baskets.get(0); - //回收筐的清洗记录为空,说明还没有清洗 - if(basket.getWashAndDisinfectRecords().size()==0){ - jsonStr.append("{" + "washmachine:'" - + "已装载器械包" - + "'," + "program:''" - + ",washtime:''" - + "," + "uiProvider:'col'," - + "cls:'master-task'," + "iconCls:'task-folder'," - + "children:["); - for(ClassifiedItem item: basket.getClassfiedItems()){ - //材料 - if(item.getItemType().equals(ClassifiedItem.TYPE_MATERIAL)){ - String sprcifictaion = item.getMaterialDefinition().getSpecification(); - String name = item.getMaterialDefinition().getName(); - if(sprcifictaion!=null){ - jsonStr.append("{" + "'program':'" - + name+"["+sprcifictaion+"]',"); - }else{ - jsonStr.append("{" + "'program':'" - + name+"',"); + + List list = washAndDisinfectRecordManager.getClassifyBasketItemByBarcode(basketBarcode, pageNow, pageSize); + + boolean flag = true; + JSONArray jSONArray = new JSONArray(); + if (list != null) { + for (Object obj : list) { + Object[] objArray = (Object[]) obj; + ClassifyBasket classifyBasket = (ClassifyBasket) objArray[0]; + WashAndDisinfectRecord washAndDisinfectRecord = (WashAndDisinfectRecord) objArray[1]; + + JSONObject jSONObject =new JSONObject(); + JSONArray childrens = new JSONArray(); //每个篮筐实例的物品 + Set classifiedItems = classifyBasket.getClassfiedItems(); + if (classifiedItems != null) { + for (ClassifiedItem classifiedItem : classifiedItems) { + JSONObject goods =new JSONObject(); + goods.put("washmachine", ""); + goods.put("program", classifiedItem.getName()); //材料名字(带规格)或者器械包名字 + goods.put("department", classifiedItem.getOrgUnitName()); + goods.put("washtime", classifiedItem.getAmount()); + + goods.put("uiProvider", "col"); + goods.put("leaf", true); + goods.put("iconCls", "task"); + childrens.add(goods); } - jsonStr.append("'washtime':" - + item.getAmount() + ",'uiProvider':'col','leaf':true,'iconCls':'task'"+"}"); - //器械包 - }else if(item.getItemType().equals(ClassifiedItem.TYPE_TOUSSE)){ - String name = item.getTousseDefinition().getTousseDefinitionShowName(); - jsonStr.append("{" + "program:'" - + name+"',"); - jsonStr.append("'washtime':" - + item.getAmount() + ",'uiProvider':'col','leaf':true,'iconCls':'task'"+"}"); } - if (countLoopX != basket.getClassfiedItems().size()-1) { - jsonStr.append(","); + + if (washAndDisinfectRecord == null) { //此篮筐实例没洗过 + jSONObject.put("washmachine", "已装载器械包"); + jSONObject.put("program", ""); + jSONObject.put("washtime", ""); + } else { + jSONObject.put("washmachine", washAndDisinfectRecord.getDisinfectIdentification()); //清洗机 + jSONObject.put("program", washAndDisinfectRecord.getDisinfectProgram()); //清洗程序 + jSONObject.put("washtime", washAndDisinfectRecord.getStartDateStr()); //清洗的开始时间 + } - countLoopX++; + jSONObject.put("department", ""); + jSONObject.put("cls", "master-task"); + jSONObject.put("children", childrens); + if (flag) { //第一个树形节点 + jSONObject.put("expanded", flag); + jSONObject.put("pageNow", pageNow); + jSONObject.put("pageCount", pageCount); + jSONObject.put("fristIndex", fristIndex); + jSONObject.put("endIndex", endIndex); + jSONObject.put("rowCount", rowCount); + } + jSONArray.add(jSONObject); + flag = false; } - jsonStr.append("]"); - jsonStr.append("}"); - }else{ - jsonStr.deleteCharAt(jsonStr.length()-1); } + StrutsResponseUtils.output(jSONArray); } + } + public void loadWashAndDisinfectRecord() { -// StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); + JsonConfig config = new JsonConfig(); PropertyFilter propertyFilter = new JsonPropertyFilter(new String[] { "classifyBaskets", "washAndDisinfectMaterials","tousseInstanceList" }); @@ -489,12 +377,7 @@ map.put("data", washAndDisinfectRecord); JSONObject jsonObject = JSONObject.fromObject(map, config); StrutsResponseUtils.output(jsonObject); -// String jsonStr = jsonObject.toString(); -// try { -// StrutsParamUtils.getResponse().getWriter().println(jsonStr); -// } catch (IOException e) { -// e.printStackTrace(); -// } + } public void loadMaterialInfo() { Index: ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/basketMonitor/sterileBasketMonitorView.js =================================================================== diff -u -r16621 -r16904 --- ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/basketMonitor/sterileBasketMonitorView.js (.../sterileBasketMonitorView.js) (revision 16621) +++ ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/basketMonitor/sterileBasketMonitorView.js (.../sterileBasketMonitorView.js) (revision 16904) @@ -3,7 +3,7 @@ var washingMachineStore;// 清洗程序 var rinserStore;// 清洗机 var barcode = ''; -var grid; //左边灭菌篮筐的数据储存器 +var grid; //左边灭菌篮筐的视图 var basketStore; //左边灭菌篮筐的数据储存器 var itemsInBasketGrid; //右边灭菌篮筐的历史装载记录的视图 var treeStore; //右边灭菌篮筐的历史装载记录的数据储存器 @@ -230,13 +230,12 @@ viewConfig: { forceFit: true, loadMask : {msg : '正在加载,请稍候...'} - } - , - listeners : { + }, + listeners : { itemclick: function( dv, record, item, index, e ){ getTousseInstances(record.get('barcode'), record.get('containerName'), 1); } - } + } }); Ext4.define('columnTreeGrid',{ Index: ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/basketMonitor/washBasketMonitor.jsp =================================================================== diff -u -r15043 -r16904 --- ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/basketMonitor/washBasketMonitor.jsp (.../washBasketMonitor.jsp) (revision 15043) +++ ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/basketMonitor/washBasketMonitor.jsp (.../washBasketMonitor.jsp) (revision 16904) @@ -19,6 +19,7 @@ <%@ include file="/common/includeExtJs4_2.jsp"%> + Index: ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/basketMonitor/virtualBasketMonitor.jsp =================================================================== diff -u -r15043 -r16904 --- ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/basketMonitor/virtualBasketMonitor.jsp (.../virtualBasketMonitor.jsp) (revision 15043) +++ ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/basketMonitor/virtualBasketMonitor.jsp (.../virtualBasketMonitor.jsp) (revision 16904) @@ -20,6 +20,7 @@ <%@ include file="/common/includeExtJs4_2.jsp"%> + Index: ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/ClassifiedItemManagerImpl.java =================================================================== diff -u -r15819 -r16904 --- ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/ClassifiedItemManagerImpl.java (.../ClassifiedItemManagerImpl.java) (revision 15819) +++ ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/ClassifiedItemManagerImpl.java (.../ClassifiedItemManagerImpl.java) (revision 16904) @@ -1,13 +1,54 @@ package com.forgon.disinfectsystem.washanddisinfectmanager.washanddisinfectrecord.service; +import java.sql.ResultSet; +import java.sql.SQLException; + import com.forgon.disinfectsystem.entity.becleanitem.ClassifiedItem; +import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.BasePoManagerImpl; +import com.forgon.tools.hibernate.ObjectDao; public class ClassifiedItemManagerImpl extends BasePoManagerImpl implements ClassifiedItemManager { + private ObjectDao objectDao; + + + public void setObjectDao(ObjectDao objectDao) { + this.objectDao = objectDao; + } + public ClassifiedItemManagerImpl() { super(ClassifiedItem.class); } + + /** + * 获取此条码所有清洗篮筐实例的数量(注意:同一个篮筐实例清洗N次则算N个) + * @param basketBarcode 清洗篮筐条码 + * @return + */ + @Override + public Integer getClassifyBasketItemCountByBarcode(String basketBarcode) { + + String sql = + "select count(*) rowCounts " + + "from ClassifyBasket cb " + + "left join ClassifyBasket_WashRecord cw on cw.ClassifyBasket_ID=cb.id " + + "left join WashAndDisinfectRecord wr on wr.id=cw.WashAndDisinfectRecord_ID " + + "where cb.containerBarcode='"+basketBarcode+"'" + ; + ResultSet result = objectDao.executeSql(sql); + + Integer rowCount = 0; + try { + result.next(); + rowCount = result.getInt("rowCounts"); + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(result); + } + return rowCount; + } } Index: ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/basketMonitor/virtualBasketMonitorView.js =================================================================== diff -u -r16155 -r16904 --- ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/basketMonitor/virtualBasketMonitorView.js (.../virtualBasketMonitorView.js) (revision 16155) +++ ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/basketMonitor/virtualBasketMonitorView.js (.../virtualBasketMonitorView.js) (revision 16904) @@ -1,13 +1,15 @@ var entityName = "虚拟篮筐监控"; -var grid; var washingModeStore;// 清洗方式 var washingMachineStore;// 清洗程序 var rinserStore;// 清洗机 var barcode = ''; -var itemsInBasketGrid; //右边灭菌篮筐的历史装载记录的视图 -var treeStore; //右边灭菌篮筐的历史装载记录的数据储存器 -var basketStore; //左边灭菌篮筐的数据储存器 +var grid; //左边虚拟篮筐的视图 +var basketStore; //左边虚拟篮筐的数据储存器 +var itemsInBasketGrid; //右边虚拟篮筐的历史装载记录的视图 +var treeStore; //右边虚拟篮筐的历史装载记录的数据储存器 + + /** * 搜索执行的方法 * @@ -38,6 +40,80 @@ return "

" + v + "

"; } + +/** + * 通过审核篮筐条码获取器械包 + * @param barcode 审核篮筐条码(可选) + * @param containerName 审核篮筐名称(可选) + * @param pageNow 显示当前页(可选) + */ +function getTousseInstances(barcode, containerName, pageNow) { + + if (treeStore) { + containerName ? itemsInBasketGrid.setTitle('虚拟筐【' + containerName + '】内物品清单') : (function(){})(); + pageNow ? Ext4.getCmp('pageNow').setValue(pageNow) : (function(){ + pageNow = Ext4.getCmp('pageNow').getValue(); + })(); + + treeStore.proxy.extraParams = { + barcode : barcode ? barcode : treeStore.proxy.extraParams.barcode, + pageSize : Ext4.getCmp('pageSize').getValue(), + pageNow : pageNow + }; + treeStore.reload(); + } + +} + +/** + * 处理分页按钮的请求 + * @param _this + * @param e + * @param eOpts + * @returns {Boolean} + */ +function handlePagingButtonRequest(_this, e, eOpts) { + + var pagCountInfo = Ext4.getCmp('pagCountInfo').text; + var pageNowReal = parseInt(Ext4.getCmp('pageNowReal').getValue()); + var pageCountReal = parseInt(Ext4.getCmp('pageCountReal').getValue()); + var buttonText = _this.text; + + if (!pagCountInfo) { + showResult("没数据"); + return false; + } + + if (buttonText == '第一页') { + if (pageNowReal == 1) { + showResult("已经是第一页了"); + return false; + } + pageNowReal = 1; + } else if (buttonText == '上一页') { + -- pageNowReal; + if (pageNowReal < 1) { + showResult("已经是第一页了"); + return false; + } + } else if (buttonText == '下一页') { + ++ pageNowReal; + if (pageNowReal > pageCountReal) { + showResult("已经是最后一页了"); + return false; + } + } else if (buttonText == '最后一页') { + if (pageNowReal == pageCountReal) { + showResult("已经是最后一页了"); + return false; + } + pageNowReal = pageCountReal + } + + getTousseInstances(false, false, pageNowReal); + +} + Ext4.onReady(function() { Ext4.QuickTips.init(); Ext4.BLANK_IMAGE_URL = WWWROOT + '/ext/resources/images/default/s.gif'; @@ -132,16 +208,12 @@ viewConfig: { forceFit: true, loadMask : {msg : '正在加载,请稍候...'} - } - , - listeners : { + }, + listeners : { itemclick: function( dv, record, item, index, e ){ - var barcode = record.get('barcode'); - itemsInBasketGrid.setTitle("虚拟筐【" + record.get('containerName') + "】内物品清单"); - treeStore.proxy.extraParams = {barcode : barcode}; - treeStore.reload(); + getTousseInstances(record.get('barcode'), record.get('containerName'), 1); } - } + } }); Ext4.define('columnTreeGrid',{ @@ -181,24 +253,123 @@ fields: [ {name : 'objName'}, {name : 'objBarcode'}, - {name : 'amount'} + {name : 'amount'}, + {name : 'pageNow'}, + {name : 'pageCount'}, + {name : 'fristIndex'}, + {name : 'endIndex'}, + {name : 'rowCount'} ]}); treeStore = new Ext4.data.TreeStore({ model: cModel, proxy: { type: 'ajax', - url: WWWROOT + '/disinfectSystem/tousseInstanceAction!loadTousseInstancesByBasketBarcode.do' + url: WWWROOT + '/disinfectSystem/tousseInstanceAction!loadTousseInstancesByReviewedBasketBarcode.do' }, - folderSort: true + folderSort: true, + listeners: { + load: function(_this, node, records, successful, eOpts) { + var temp = records[0]; + if (temp) { + var pageNow = temp.data.pageNow; + var pageCount = temp.data.pageCount; + var fristIndex = temp.data.fristIndex; + var endIndex = temp.data.endIndex; + var rowCount = temp.data.rowCount; + + Ext4.getCmp('pageNow').setValue(pageNow); + Ext4.getCmp('pagCountInfo').setText('共有' + pageCount + '页'); + Ext4.getCmp('pagingInfo').setText('显示' + fristIndex + '-' + endIndex + ',共有' + rowCount + '条'); + Ext4.getCmp('pageNowReal').setValue(pageNow); + Ext4.getCmp('pageCountReal').setValue(pageCount); + } else { + Ext4.getCmp('pagCountInfo').setText(''); + Ext4.getCmp('pagingInfo').setText('没数据'); + } + } + } }); itemsInBasketGrid = Ext4.create('columnTreeGrid', { id : 'itemsInBasketGrid', flex : 1, border : false, viewConfig : {loadMask : {msg : '正在加载,请稍候...'}}, - store: treeStore + store: treeStore, + tbar : [{ + text : '第一页', + handler : handlePagingButtonRequest + }, { + text : '上一页', + handler : handlePagingButtonRequest + }, { + xtype : 'label', + text : '第' + }, { + xtype : 'numberfield', + hideTrigger: true, + id : 'pageNow', + value : 1, + minValue: 1, + width : 30, + enableKeyEvents : true, + listeners : { + keypress : function(_this, e, eOpts) { + if (e.getKey() == 13) { + var pagCountInfo = Ext4.getCmp('pagCountInfo').text + if (pagCountInfo) { + getTousseInstances(); + } else { + showResult("没数据"); + return false; + } + } + } + } + }, { + xtype : 'label', + id : 'pagCountInfo' + }, { + text : '下一页', + handler : handlePagingButtonRequest + }, { + text : '最后一页', + handler : handlePagingButtonRequest + }, { + xtype : 'combo', + width : 110, + id : 'pageSize', + labelWidth : 60, + fieldLabel : '每页显示', + forceSelection : true, + triggerAction : 'all', + queryMode: 'local', + displayField: 'pageSize', + valueField: 'pageSize', + value : 5, + store : Ext4.create('Ext4.data.Store', { + fields : ['pageSize'], + data : [{'pageSize' : 5}, {'pageSize' : 10}, {'pageSize' : 20}] + }), + listeners : { + select : function() { + var pagCountInfo = Ext4.getCmp('pagCountInfo').text + if (pagCountInfo) { + getTousseInstances(false, false, 1); + } + } + } + }, '->', { + xtype : 'label', + id : 'pagingInfo' + }, { + xtype : 'hiddenfield', + id : 'pageNowReal' + }, { + xtype : 'hiddenfield', + id : 'pageCountReal' + }] }); Index: ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java =================================================================== diff -u -r16772 -r16904 --- ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java (.../WashAndDisinfectRecordManagerImpl.java) (revision 16772) +++ ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java (.../WashAndDisinfectRecordManagerImpl.java) (revision 16904) @@ -49,6 +49,7 @@ import com.forgon.disinfectsystem.entity.becleanitem.ClassifiedItem; import com.forgon.disinfectsystem.entity.becleanitem.ClassifyBasket; import com.forgon.disinfectsystem.entity.packing.PackingTask; +import com.forgon.disinfectsystem.entity.packing.ReviewedBasket; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washData.WashData; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecord; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecordMaterial; @@ -1395,4 +1396,31 @@ result.put("materials", materialArray); return result; } + + /** + * 通过清洗篮筐条码获取“清洗篮筐实例和对应的清洗记录”的集合 + * @param basketBarcode 清洗篮筐条码 + * @param pageNow 请求当前页 + * @param pageSize 每一页的大小 + * @return + */ + @Override + public List getClassifyBasketItemByBarcode(String basketBarcode, + Integer pageNow, Integer pageSize) { + + if (StringUtils.isNotBlank(basketBarcode)) { + String hql = + "select cb,wr from ClassifyBasket cb " + + "left join cb.washAndDisinfectRecords wr " + + "where cb.containerBarcode='" + basketBarcode + "' " + + "order by cb.id desc" + ; + + Integer firstIndex = pageSize*(pageNow - 1); + return objectDao.findByHql(hql, firstIndex, pageSize); + } + return new ArrayList(); + + } + } Index: ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/basketMonitor/washBasketMonitorView.js =================================================================== diff -u -r16155 -r16904 --- ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/basketMonitor/washBasketMonitorView.js (.../washBasketMonitorView.js) (revision 16155) +++ ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/basketMonitor/washBasketMonitorView.js (.../washBasketMonitorView.js) (revision 16904) @@ -1,13 +1,14 @@ var entityName = "清洗篮筐监控"; -var grid; var washingModeStore;// 清洗方式 var washingMachineStore;// 清洗程序 var rinserStore;// 清洗机 var barcode = ''; +var grid; //左边灭菌篮筐的视图 +var basketStore; //左边灭菌篮筐的数据储存器 var itemsInBasketGrid; //右边灭菌篮筐的历史装载记录的视图 var treeStore; //右边灭菌篮筐的历史装载记录的数据储存器 -var basketStore; //左边灭菌篮筐的数据储存器 + function isDetermineKey(){ var searchKeyWord = Ext4.getCmp('searchKeyWord').getValue(); @@ -22,13 +23,11 @@ Ext4.getCmp('searchKeyWord').setValue(''); var result = Ext4.decode(response.responseText); if (result.success && result.purpose == '清洗筐') { - basketStore.proxy.extraParams.basketDarcode = searchKeyWord; + basketStore.proxy.extraParams.basketDarcode = searchKeyWord; basketStore.reload(); basketStore.proxy.extraParams.basketDarcode = null; //请求完毕,把这个参数置空,以免影响后面的请求 - itemsInBasketGrid.setTitle("清洗筐【" + result.containerName + "】内物品清单"); - treeStore.proxy.extraParams = {barcode : searchKeyWord}; - treeStore.reload(); + getClassifyBasketContent(searchKeyWord, result.containerName, 1); } else { alert("请扫描清洗篮筐的条码"); } @@ -64,6 +63,79 @@ Ext4.getCmp('searchKeyWord').setValue(''); } +/** + * 通过清洗篮筐条码获取框内物品 + * @param barcode 篮筐条码(可选) + * @param containerName 篮筐名称(可选) + * @param pageNow 显示当前页(可选) + */ +function getClassifyBasketContent(barcode, containerName, pageNow) { + + if (treeStore) { + containerName ? itemsInBasketGrid.setTitle('清洗筐【' + containerName + '】内物品清单') : (function(){})(); + pageNow ? Ext4.getCmp('pageNow').setValue(pageNow) : (function(){ + pageNow = Ext4.getCmp('pageNow').getValue(); + })(); + + treeStore.proxy.extraParams = { + barcode : barcode ? barcode : treeStore.proxy.extraParams.barcode, + pageSize : Ext4.getCmp('pageSize').getValue(), + pageNow : pageNow + }; + treeStore.reload(); + } + +} + +/** + * 处理分页按钮的请求 + * @param _this + * @param e + * @param eOpts + * @returns {Boolean} + */ +function handlePagingButtonRequest(_this, e, eOpts) { + + var pagCountInfo = Ext4.getCmp('pagCountInfo').text; + var pageNowReal = parseInt(Ext4.getCmp('pageNowReal').getValue()); + var pageCountReal = parseInt(Ext4.getCmp('pageCountReal').getValue()); + var buttonText = _this.text; + + if (!pagCountInfo) { + showResult("没数据"); + return false; + } + + if (buttonText == '第一页') { + if (pageNowReal == 1) { + showResult("已经是第一页了"); + return false; + } + pageNowReal = 1; + } else if (buttonText == '上一页') { + -- pageNowReal; + if (pageNowReal < 1) { + showResult("已经是第一页了"); + return false; + } + } else if (buttonText == '下一页') { + ++ pageNowReal; + if (pageNowReal > pageCountReal) { + showResult("已经是最后一页了"); + return false; + } + } else if (buttonText == '最后一页') { + if (pageNowReal == pageCountReal) { + showResult("已经是最后一页了"); + return false; + } + pageNowReal = pageCountReal + } + + getClassifyBasketContent(false, false, pageNowReal); + +} + Ext4.onReady(function() { Ext4.QuickTips.init(); Ext4.BLANK_IMAGE_URL = WWWROOT + '/ext/resources/images/default/s.gif'; @@ -158,10 +230,7 @@ , listeners : { itemclick: function( dv, record, item, index, e ){ - var barcode = record.get('barcode'); - itemsInBasketGrid.setTitle("清洗筐【" + record.get('containerName') + "】内物品清单"); - treeStore.proxy.extraParams = {barcode : barcode}; - treeStore.reload(); + getClassifyBasketContent(record.get('barcode'), record.get('containerName'), 1); } } }); @@ -207,7 +276,13 @@ {name : 'washmachine'}, {name : 'program'}, {name : 'department'}, - {name : 'washtime'} + {name : 'washtime'}, + {name : 'amount'}, + {name : 'pageNow'}, + {name : 'pageCount'}, + {name : 'fristIndex'}, + {name : 'endIndex'}, + {name : 'rowCount'} ]}); treeStore = new Ext4.data.TreeStore({ @@ -216,14 +291,108 @@ type: 'ajax', url: WWWROOT + '/disinfectSystem/washAndDisinfect/washAndDisinfectRecordAction!loadContentByBasketBarcode.do' }, - folderSort: true + folderSort: true, + listeners: { + load: function(_this, node, records, successful, eOpts) { + var temp = records[0]; + if (temp) { + var pageNow = temp.data.pageNow; + var pageCount = temp.data.pageCount; + var fristIndex = temp.data.fristIndex; + var endIndex = temp.data.endIndex; + var rowCount = temp.data.rowCount; + + Ext4.getCmp('pageNow').setValue(pageNow); + Ext4.getCmp('pagCountInfo').setText('共有' + pageCount + '页'); + Ext4.getCmp('pagingInfo').setText('显示' + fristIndex + '-' + endIndex + ',共有' + rowCount + '条'); + Ext4.getCmp('pageNowReal').setValue(pageNow); + Ext4.getCmp('pageCountReal').setValue(pageCount); + } else { + Ext4.getCmp('pagCountInfo').setText(''); + Ext4.getCmp('pagingInfo').setText('没数据'); + } + } + } }); itemsInBasketGrid = Ext4.create('columnTreeGrid', { id : 'itemsInBasketGrid', flex : 1, border : false, viewConfig : {loadMask : {msg : '正在加载,请稍候...'}}, - store: treeStore + store: treeStore, + tbar : [{ + text : '第一页', + handler : handlePagingButtonRequest + }, { + text : '上一页', + handler : handlePagingButtonRequest + }, { + xtype : 'label', + text : '第' + }, { + xtype : 'numberfield', + hideTrigger: true, + id : 'pageNow', + value : 1, + minValue: 1, + width : 30, + enableKeyEvents : true, + listeners : { + keypress : function(_this, e, eOpts) { + if (e.getKey() == 13) { + var pagCountInfo = Ext4.getCmp('pagCountInfo').text + if (pagCountInfo) { + getClassifyBasketContent(); + } else { + showResult("没数据"); + return false; + } + } + } + } + }, { + xtype : 'label', + id : 'pagCountInfo' + }, { + text : '下一页', + handler : handlePagingButtonRequest + }, { + text : '最后一页', + handler : handlePagingButtonRequest + }, { + xtype : 'combo', + width : 110, + id : 'pageSize', + labelWidth : 60, + fieldLabel : '每页显示', + forceSelection : true, + triggerAction : 'all', + queryMode: 'local', + displayField: 'pageSize', + valueField: 'pageSize', + value : 5, + store : Ext4.create('Ext4.data.Store', { + fields : ['pageSize'], + data : [{'pageSize' : 5}, {'pageSize' : 10}, {'pageSize' : 20}] + }), + listeners : { + select : function() { + var pagCountInfo = Ext4.getCmp('pagCountInfo').text + if (pagCountInfo) { + getClassifyBasketContent(false, false, 1); + } + } + } + }, '->', { + xtype : 'label', + id : 'pagingInfo' + }, { + xtype : 'hiddenfield', + id : 'pageNowReal' + }, { + xtype : 'hiddenfield', + id : 'pageCountReal' + }] }); var viewport = new Ext4.container.Viewport({ Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/container/service/ReviewedBasketManager.java =================================================================== diff -u -r16702 -r16904 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/container/service/ReviewedBasketManager.java (.../ReviewedBasketManager.java) (revision 16702) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/container/service/ReviewedBasketManager.java (.../ReviewedBasketManager.java) (revision 16904) @@ -64,15 +64,15 @@ public void deleteEmptyBasket(); /** - * 根据审核篮筐条码,获取其数量 - * @param basketBarcode 审核篮筐条码 + * 根据篮筐条码(灭菌篮筐条码或者虚拟篮筐条码),获取其生成ReviewedBasket的数量 + * @param basketBarcode 篮筐条码(灭菌篮筐条码和虚拟篮筐条码) * @return */ public Integer getReviewedBasketCountByBarcode(String basketBarcode); /** - * 通过审核篮筐条码获取ReviewedBasket对象集合 - * @param basketBarcode 审核篮筐条码 + * 根据篮筐条码(灭菌篮筐条码或者虚拟篮筐条码),获取其生成ReviewedBasket的对象集合 + * @param basketBarcode 篮筐条码(灭菌篮筐条码和虚拟篮筐条码) * @param pageNow 请求当前页 * @param pageSize 每一页的大小 * @return Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/TousseInstanceAction.java =================================================================== diff -u -r16833 -r16904 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/TousseInstanceAction.java (.../TousseInstanceAction.java) (revision 16833) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/TousseInstanceAction.java (.../TousseInstanceAction.java) (revision 16904) @@ -559,8 +559,9 @@ e.printStackTrace(); } } + /** - * 灭菌篮筐监控,加载条码对应的篮筐所装物品或已灭菌的物品 + * 根据篮筐码加载篮筐内装载的器械包实例(灭菌篮筐监控和虚拟篮筐监控用到) * */ public void loadTousseInstancesByReviewedBasketBarcode(){ @@ -572,11 +573,9 @@ && StringUtils.isNotBlank(pageSizeString) && StringUtils.isNotBlank(pageNowString)){ - String containerName = getContainerNameByBasketBarcode(basketBarcode); - JSONArray array = new JSONArray(); - Integer rowCount = reviewedBasketManager.getReviewedBasketCountByBarcode(basketBarcode); //此条码所有审核篮筐实例数量 + Integer rowCount = reviewedBasketManager.getReviewedBasketCountByBarcode(basketBarcode); Integer pageSize = Integer.parseInt(pageSizeString); Integer pageNow = Integer.parseInt(pageNowString); Integer pageCount=(rowCount-1)/pageSize+1; @@ -604,7 +603,7 @@ } JSONObject basketObj = new JSONObject(); - basketObj.put("objName", containerName); + basketObj.put("objName", getContainerNameByBasketBarcode(basketBarcode)); basketObj.put("amount", totalAmount); basketObj.put("objBarcode", basketBarcode); basketObj.put("leaf", false); @@ -640,87 +639,11 @@ flag = false; } } - HttpServletResponse response = StrutsParamUtils.getResponse(); - response.setCharacterEncoding("UTF-8"); - PrintWriter out; - try { - out = response.getWriter(); - out.print(array.toString()); - out.close(); - } catch (IOException e) { - e.printStackTrace(); - } + StrutsResponseUtils.output(array); } } + /** - * 虚拟篮筐监控,加载条码对应的篮筐所装物品或已灭菌的物品 - * - * 2014-8-20 - */ - public void loadTousseInstancesByBasketBarcode(){ - String basketBarcode = StrutsParamUtils.getPraramValue( - "barcode", ""); - - if(StringUtils.isNotBlank(basketBarcode)){ - - String containerName = getContainerNameByBasketBarcode(basketBarcode); - - JSONArray array = new JSONArray(); - - List baskets = tousseInstanceManager.getTousseInstanceByBasket(basketBarcode); - boolean flag = true; - if(baskets != null){ - for (ReviewedBasket basket : baskets) { - String sql = "where po.reviewBasket_id = " + basket.getId(); - List instances = tousseInstanceManager.getTousseInstanceBySql(sql); - int totalAmount = 0; - if(instances != null){ - totalAmount = instances.size(); - } - - JSONObject basketObj = new JSONObject(); - basketObj.put("objName", containerName); - basketObj.put("amount", totalAmount); - basketObj.put("objBarcode", basketBarcode); - basketObj.put("leaf", false); - - JSONArray children = new JSONArray(); - if(instances != null){ - for (TousseInstance instance : instances) { - - JSONObject obj = new JSONObject(); - obj.put("objName", instance.getShowTousseName()); - obj.put("objBarcode", instance.getBarcode()); - obj.put("sterileEndTime", instance.getSterileEndTime()); - obj.put("status", instance.getStatus()); - obj.put("depart", instance.getDepart()); - obj.put("leaf", true); - - children.add(obj); - - } - } - - basketObj.put("children", children); - basketObj.put("expanded", flag); - basketObj.put("expandable", true); - array.add(basketObj); - flag = false; - } - } - HttpServletResponse response = StrutsParamUtils.getResponse(); - response.setCharacterEncoding("UTF-8"); - PrintWriter out; - try { - out = response.getWriter(); - out.print(array.toString()); - out.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - /** * @param basketBarcode * 2014-7-9 * forgonvoid Index: ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/ClassifiedItemManager.java =================================================================== diff -u -r15819 -r16904 --- ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/ClassifiedItemManager.java (.../ClassifiedItemManager.java) (revision 15819) +++ ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/ClassifiedItemManager.java (.../ClassifiedItemManager.java) (revision 16904) @@ -10,4 +10,13 @@ */ public interface ClassifiedItemManager extends BasePoManager { + + /** + * 获取此条码所有清洗篮筐实例的数量(注意:同一个篮筐实例清洗N次则算N个) + * @param basketBarcode 清洗篮筐条码 + * @return + */ + public Integer getClassifyBasketItemCountByBarcode(String basketBarcode); + + } Index: ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManager.java =================================================================== diff -u -r16772 -r16904 --- ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManager.java (.../WashAndDisinfectRecordManager.java) (revision 16772) +++ ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManager.java (.../WashAndDisinfectRecordManager.java) (revision 16904) @@ -85,4 +85,13 @@ public void setWashRecordWorkLoadInfo(WashAndDisinfectRecord washRecord); public JSONObject loadWashRecordMaterials(String id); + + /** + * 通过清洗篮筐条码获取“清洗篮筐实例和对应的清洗记录”的集合 + * @param basketBarcode 清洗篮筐条码 + * @param pageNow 请求当前页 + * @param pageSize 每一页的大小 + * @return + */ + public List getClassifyBasketItemByBarcode(String basketBarcode, Integer pageNow, Integer pageSize); }