Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/packing/ReviewedBasket.java =================================================================== diff -u -r17240 -r17937 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/packing/ReviewedBasket.java (.../ReviewedBasket.java) (revision 17240) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/packing/ReviewedBasket.java (.../ReviewedBasket.java) (revision 17937) @@ -85,8 +85,12 @@ public Set getTousseInstances(ObjectDao dao) { if(id != null){ - //过滤掉聚合包内的普通器械包实例 - List tousseInstances = dao.findBySql(TousseInstance.class.getSimpleName(), " where comboTousseInstanceId is null and reviewBasket_id="+id); + //过滤掉聚合包内的普通器械包实例,过滤掉“已经废弃但是还未做灭菌的器械包实例” + String whereHql = String.format("where comboTousseInstanceId is null " + + "and (status <> '%s' or (status='%s' and sterilizationRecord_id is not null)) " + + "and reviewBasket_id=%s", + TousseInstance.STATUS_DISCARD, TousseInstance.STATUS_DISCARD, id); + List tousseInstances = dao.findBySql(TousseInstance.class.getSimpleName(), whereHql); return new HashSet(tousseInstances); } return null; Index: ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordForm.js =================================================================== diff -u -r17932 -r17937 --- ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordForm.js (.../sterilizationRecordForm.js) (revision 17932) +++ ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordForm.js (.../sterilizationRecordForm.js) (revision 17937) @@ -179,29 +179,29 @@ type : 'int' } ]); -function addOrUpdateTousseStoreItemCount(tousseName,num){ - var tousseName = tousseName.Trim(); - if(tousseName){ - var count = parseInt(num,10); - for(var i=0,len = tousseItemCountJsonStore.getCount();i0){ - record.set('count',pCount); - }else{ - tousseItemCountJsonStore.remove(record); - } - return; - } - } - if(count>0){ - tousseItemCountJsonStore.add(new tousseItemCountRecord({tousseName:tousseName,count:parseInt(count,10)})); - } - } -} +//function addOrUpdateTousseStoreItemCount(tousseName,num){ +// var tousseName = tousseName.Trim(); +// if(tousseName){ +// var count = parseInt(num,10); +// for(var i=0,len = tousseItemCountJsonStore.getCount();i0){ +// record.set('count',pCount); +// }else{ +// tousseItemCountJsonStore.remove(record); +// } +// return; +// } +// } +// if(count>0){ +// tousseItemCountJsonStore.add(new tousseItemCountRecord({tousseName:tousseName,count:parseInt(count,10)})); +// } +// } +//} var monitorResutlStore = new Ext.data.SimpleStore( { fields : [ 'value' ], @@ -211,13 +211,13 @@ /** * 创建节点的方法 * - * isParentNode 是否父节点(一般如为篮筐则为true,为器械包则为false) - * barcode 条码(篮筐或器械包) - * name 名称(篮筐或器械包) - * depart 科室 - * type 类型即篮筐或器械包 - * insideTousse - * position 位置 + * isParentNode 是否父节点(一般如为篮筐则为true,为器械包则为false) + * barcode 条码(篮筐或器械包) + * name 名称(篮筐或器械包) + * depart 科室 + * type 值为即“篮筐”或“器械包” + * insideTousse 节点类型为“器械包”,并且没有父节点时值为true,其他的情况值为false(请注意:这个参数和type参数会决定此节点是否可以被删除) + * position 位置 * */ function createNode(isParentNode,barcode,name,depart,type,insideTousse,position){ @@ -258,12 +258,12 @@ * */ function statisticsTousseAndBasket () { - var rootNode = sterilizationColumnTree.getRootNode(); //灭菌物品columnTree的根节点 var basketAmount = 0; //篮筐数量 var toussBarcodes = ''; //需要进行统计器械包条码的集合每个条码之间用分号分隔 var noChild = true; + var tousseNameOfAmount = {}; //器械包名称和数量 rootNode.eachChild(function(pNode){ noChild = false; if(pNode.attributes.type == '篮筐') { //此节点是篮筐 @@ -273,13 +273,29 @@ } pNode.eachChild(function(pNode){ toussBarcodes += pNode.attributes.barcode + ';'; + var tousseName = pNode.attributes.name; + if (tousseNameOfAmount.hasOwnProperty(tousseName)) { //存在此属性,则值加1 + var amount = tousseNameOfAmount[tousseName]; + tousseNameOfAmount[tousseName] = ++ amount; + } else { + tousseNameOfAmount[tousseName] = 1; + } }); } else { //此节点是器械包 toussBarcodes += pNode.attributes.barcode + ';'; + var tousseName = pNode.attributes.name; + if (tousseNameOfAmount.hasOwnProperty(tousseName)) { //存在此属性,则值加1 + var amount = tousseNameOfAmount[tousseName]; + tousseNameOfAmount[tousseName] = ++ amount; + } else { + tousseNameOfAmount[tousseName] = 1; + } } }); - if (noChild) { + if (noChild) { //没有子节点 + tousseItemCountJsonStore.removeAll(); + top.Ext.getCmp('totalAmount').setText("灭菌物品总数量:"); top.Ext.getCmp('typeTotalAmount').setText(''); return false; } @@ -299,16 +315,23 @@ var f_amount = result.foreignTousseAmount; var d_amount = result.dressingTousseAmount; var p_amount = result.proxyTousseAmount; - + top.Ext.getCmp('totalAmount').setText("灭菌物品总数量:"+(t_amount+f_amount+d_amount+p_amount)); top.Ext.getCmp('typeTotalAmount').setText("篮筐:"+basketAmount+" ,器械包:"+t_amount+" ,敷料包:"+d_amount+" ,外来器械包:"+f_amount+", 代理灭菌包:"+p_amount); } }, failure : function(response, options) { } }); - - + tousseItemCountJsonStore.removeAll(); + for(var key in tousseNameOfAmount){ + if (tousseNameOfAmount.hasOwnProperty(key)) { //过滤掉非“tousseNameOfAmount”本对象的属性比较严谨一些 + tousseItemCountJsonStore.add(new tousseItemCountRecord({ + tousseName : key, + count : tousseNameOfAmount[key] + })); + } + } } /** @@ -514,7 +537,6 @@ } //扫描器械包(或灭菌篮筐或虚拟篮筐)条码 function loadTousseInstance(barcodeStr,sterilizationRecordId,callBack) { - if(barcodeStr == '' || barcodeStr.length <= 0){ showResult("请输入条码!"); return; @@ -587,7 +609,7 @@ }else{ rootNode.insertBefore(parentNode,firstChildNode); } - addOrUpdateTousseStoreItemCount(str[2],1); +// addOrUpdateTousseStoreItemCount(str[2],1); speakBasket.addGoods('',str[2],1); if(str[6] == "是"){ showResultWithoutSpeak("此外来器械包含有植入物,需要做生物监测!"); @@ -645,7 +667,7 @@ var tousseDepart = array[3];//科室 var childNode = createNode(false,barcode,name,tousseDepart,'器械包',false,''); parentNode.appendChild(childNode); - addOrUpdateTousseStoreItemCount(array[1],1); +// addOrUpdateTousseStoreItemCount(array[1],1); speakBasket.addGoods(str[2],name,1); } if (callBack){ @@ -676,7 +698,7 @@ }else{ rootNode.insertBefore(parentNode,firstChildNode); } - addOrUpdateTousseStoreItemCount(array[1],1); +// addOrUpdateTousseStoreItemCount(array[1],1); speakBasket.addGoods('',array[1],1); removePendingSterilizationGoods(barcode); } @@ -747,7 +769,7 @@ }else{ rootNode.insertBefore(parentNode,firstChildNode); } - addOrUpdateTousseStoreItemCount(array[1],1); +// addOrUpdateTousseStoreItemCount(array[1],1); speakBasket.addGoods('',array[1],1); alreadyAdd++; } @@ -829,7 +851,7 @@ var childNode = createNode(false,barcode,array[2],tousseDepart,'器械包',false,''); currentParentNode.appendChild(childNode); - addOrUpdateTousseStoreItemCount(array[2],1); +// addOrUpdateTousseStoreItemCount(array[2],1); speakBasket.addGoods('',array[2],1); alreadyAdd++; }else{ @@ -846,7 +868,7 @@ var tousseDepart = array[4];//科室 var childNode = createNode(false,barcode,array[2],tousseDepart,'器械包',false,''); currentParentNode.appendChild(childNode); - addOrUpdateTousseStoreItemCount(array[2],1); +// addOrUpdateTousseStoreItemCount(array[2],1); speakBasket.addGoods('',array[2],1); alreadyAdd++; } @@ -953,8 +975,10 @@ for(var k = 0; k < waitSterilingSecondNodeJsonArray.length;k++){ var waitSterilingSecondNodeNodeJsonObject = waitSterilingSecondNodeJsonArray[k]; //构造第二层级节点 - var childNode = createNode(true,waitSterilingSecondNodeNodeJsonObject.barcode,waitSterilingSecondNodeNodeJsonObject.name, - waitSterilingSecondNodeNodeJsonObject.depart,waitSterilingSecondNodeNodeJsonObject.type,true,position); + var childNode = createNode(false,waitSterilingSecondNodeNodeJsonObject.barcode,waitSterilingSecondNodeNodeJsonObject.name, + waitSterilingSecondNodeNodeJsonObject.depart,waitSterilingSecondNodeNodeJsonObject.type,false,position); +// var childNode = createNode(true,waitSterilingSecondNodeNodeJsonObject.barcode,waitSterilingSecondNodeNodeJsonObject.name, +// waitSterilingSecondNodeNodeJsonObject.depart,waitSterilingSecondNodeNodeJsonObject.type,true,position); parentNode.appendChild(childNode); } } @@ -965,323 +989,6 @@ } } - /*if(str[1] == 0){//器械包(单个) - var sterilingType = str[3];//灭菌程序 - var tousseDepart = str[4];//科室 - if(sterilingType.length > 0){ - var sterilization = top.Ext.getCmp('sterilizationType').getValue(); - if(str[4] == 'true' || str[4] == true){//超大超重拆分包用指定的灭菌方式 - var st = str[5]; - if(st != "" && st.length>0){ - top.Ext.getCmp('sterilizationType').setValue(st); - showResultWithoutSpeak("超大、超重外来器械必须用"+st+"灭菌!"); - }else{ - showResultWithoutSpeak("超大超重外来器械需要配置灭菌方式!"); - } - }else{ - if(sterilization == null || sterilization.length == 0 ){ - top.Ext.getCmp('sterilizationType').setValue(sterilingType); - }else if(sterilingType != sterilization){ - showResultWithoutSpeak(str[2]+"的灭菌程序为【"+sterilingType+"】"); - } - } - } - - var rootNode = sterilizationColumnTree.getRootNode(); - - var parentNode = createNode(true,barcodeStr,str[2],tousseDepart,'器械包',true,position); - //speakContent = str[2]; - - var firstChildNode = rootNode.item(0); - if(firstChildNode == null || firstChildNode == undefined){ - rootNode.appendChild(parentNode); - }else{ - rootNode.insertBefore(parentNode,firstChildNode); - } - addOrUpdateTousseStoreItemCount(str[2],1); - speakBasket.addGoods('',str[2],1); - if(str[6] == "是"){ - showResultWithoutSpeak("此外来器械包含有植入物,需要做生物监测!"); - } - if (callBack){ - callBack(barcodeStr); - } - }else if(str[1] == 1){//容器(单个灭菌框或虚拟篮筐) - var sterilingType = ""; - if (str.length <= 3) { - showResult('篮筐内无待灭菌物品'); - return; - } - for(var i=3;i 0){ - sterilingType = array[4]; - top.Ext.getCmp('sterilizationType').setValue(array[4]); - showResultWithoutSpeak("超大、超重外来器械必须用"+array[4]+"灭菌!"); - }else{ - showResultWithoutSpeak("超大超重外来器械需要配置灭菌方式!"); - } - break; - } - if(sterilingType == ""){ - sterilingType = temp; - }else{ - if(sterilingType != temp){ - showResultWithoutSpeak(str[2]+"中包含不同的灭菌程序的物品!"); - } - } - } - var sterilization = top.Ext.getCmp('sterilizationType').getValue(); - if(sterilization != null && sterilization.length > 0 && sterilization != sterilingType){ - showResultWithoutSpeak(str[2] + '中物品与所选灭菌程序不匹配'); - }else{ - top.Ext.getCmp('sterilizationType').setValue(sterilingType); - } - var rootNode = sterilizationColumnTree.getRootNode(); - var parentNode = createNode(true,barcodeStr,str[2],'','篮筐',true,position); - speakContent = str[2]; - var firstChildNode = rootNode.item(0); - if(firstChildNode == null || firstChildNode == undefined){ - rootNode.appendChild(parentNode); - }else{ - rootNode.insertBefore(parentNode,firstChildNode); - } - for(var i=3;i 0){ - top.Ext.getCmp('parameter').setValue(result); - } - }); - }else if(str[1] == 2){//不追溯器械包 - for(var i=2;i 0){ - sterilingType = array[4]; - top.Ext.getCmp('sterilizationType').setValue(array[4]); - showResultWithoutSpeak("超大、超重外来器械必须用"+array[4]+"灭菌!"); - }else{ - showResultWithoutSpeak("超大超重外来器械需要配置灭菌方式!"); - } - break; - } - if(sterilingType == ""){ - sterilingType = temp; - }else{ - if(sterilingType != temp){ - showResultWithoutSpeak(str[2]+"中包含不同的灭菌程序的物品!"); - } - } - } - var sterilization = top.Ext.getCmp('sterilizationType').getValue(); - if(sterilization != null && sterilization.length > 0 && sterilization != sterilingType){ - showResultWithoutSpeak(str[2] + '中物品与所选灭菌程序不匹配'); - }else{ - top.Ext.getCmp('sterilizationType').setValue(sterilingType); - } - var rootNode = sterilizationColumnTree.getRootNode(); - speakContent = rootNode.text; - for(var i=3;i 0){ - top.Ext.getCmp('parameter').setValue(result); - } - }); - if(alreadyAdd == 0){ - showResult('未找到符合条件的器械包或器械包已扫描至表格中.'); - speakContent = null; - } - }else if(str[1] == 4){//首尾虚拟篮筐,since2015-10-27 - var alreadyAdd = 0; - var sterilingType = ""; - if (str.length <= 3) { - showResult('篮筐内无待灭菌物品'); - return; - } - for(var i=3;i 0){ - sterilingType = array[5]; - top.Ext.getCmp('sterilizationType').setValue(sterilingType); - showResultWithoutSpeak("超大、超重外来器械必须用"+sterilingType+"灭菌!"); - }else{ - showResultWithoutSpeak("超大超重外来器械需要配置灭菌方式!"); - } - break; - } - if(sterilingType == ""){ - sterilingType = temp; - }else{ - if(sterilingType != temp){ - showResultWithoutSpeak(str[2]+"中包含不同的灭菌程序的物品!"); - } - } - } - var sterilization = top.Ext.getCmp('sterilizationType').getValue(); - if(sterilization != null && sterilization.length > 0 && sterilization != sterilingType){ - showResultWithoutSpeak(str[2] + '中物品与所选灭菌程序不匹配'); - }else{ - top.Ext.getCmp('sterilizationType').setValue(sterilingType); - } - var rootNode = sterilizationColumnTree.getRootNode(); - speakContent = rootNode.text; - for(var i=3;i 0){ - top.Ext.getCmp('parameter').setValue(result); - } - }); - if(alreadyAdd == 0){ - showResult('未找到符合条件的器械包或器械包已扫描至表格中.'); - speakContent = null; - } - }else{ - showResult(str[2]); - } - - speakBasket.speakContent();*/ - statisticsTousseAndBasket(); //每次成功扫描条码后统计一下器械包的数量和灭菌篮筐的数量 } @@ -1343,12 +1050,12 @@ } function deleteGiveBackColumnTreeItem(clickNode){ - clickNode.eachChild(function(pNode){ - addOrUpdateTousseStoreItemCount(pNode.attributes.name,-1); - }); - if(clickNode.attributes.name != null){ - addOrUpdateTousseStoreItemCount(clickNode.attributes.name,-1); - } +// clickNode.eachChild(function(pNode){ +// addOrUpdateTousseStoreItemCount(pNode.attributes.name,-1); +// }); +// if(clickNode.attributes.name != null){ +// addOrUpdateTousseStoreItemCount(clickNode.attributes.name,-1); +// } addPendingStarilizationGoodsFromRecord(clickNode); var desMsg = "删除灭菌条码:" + clickNode.attributes.barcode + " ,名称:" + clickNode.attributes.name; desMsg = desMsg + " ,类型:" + clickNode.attributes.type; @@ -1592,16 +1299,16 @@ return node; } -function resetTotalAmount(store){ - var len = store.getCount(); - var totalAmount = 0; - for(var i = 0;i < len;i++){ - var record = store.getAt(i); - totalAmount += record.data.count; - var tousseType = record.data.tousseType; - } - top.Ext.getCmp('totalAmount').setText("灭菌物品总数量:"+totalAmount); -} +//function resetTotalAmount(store){ +// var len = store.getCount(); +// var totalAmount = 0; +// for(var i = 0;i < len;i++){ +// var record = store.getAt(i); +// totalAmount += record.data.count; +// var tousseType = record.data.tousseType; +// } +// top.Ext.getCmp('totalAmount').setText("灭菌物品总数量:"+totalAmount); +//} var InterruptRecordItem = Ext.data.Record.create([ {name : 'id'}, {name : 'interruptUser'}, @@ -1625,24 +1332,10 @@ }, { name : 'count' } ] - }), - listeners:{ - load : function(thiz,records,options){ - resetTotalAmount(thiz); - }, - add : function(thiz,records,options){ - resetTotalAmount(thiz); - }, - update : function(thiz,records,options){ - resetTotalAmount(thiz); - }, - remove : function(thiz,records,options){ - resetTotalAmount(thiz); - } - } + }) }); - - if(id != 0){ + + if(id){ tousseItemCountJsonStore.load(); } @@ -2999,7 +2692,7 @@ top.Ext.getCmp('startDate').setValue(formatDateYear(sr.startDate)); top.Ext.getCmp('endDate').setValue(formatDateYear(sr.endDate)); top.Ext.getCmp('srSituationComfirmer').setValue(sr.srSituationComfirmer); - + top.Ext.getCmp('totalAmount').setText("灭菌物品总数量:"+(sr.amount)); top.Ext.getCmp('typeTotalAmount').setText("篮筐:"+sr.reviewedBasketAmount+" ,器械包:"+sr.tousseAmount+" ,敷料包:"+sr.dressingTousseAmount+" ,外来器械包:"+sr.foreignTousseAmount+", 代理灭菌包:"+sr.proxyTousseAmount); } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r17560 -r17937 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 17560) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 17937) @@ -1932,8 +1932,9 @@ }finally { DatabaseUtil.closeResultSetAndStatement(rs); } - //查询灭菌时放入灭菌筐的器械包 - String sqlToCountTousseInReviewedBasket = " select po.tousseName ,count(*) amount from tousseinstance po where reviewbasket_id in(select reviewedbasket_id from sterilization_reviewed where sterilizationrecord_id="+sterilizationRecord.getId()+") group by po.tousseName "; + //查询灭菌时放入灭菌筐的器械包,过滤掉“已经废弃但是还未做灭菌的器械包实例” + String sqlToCountTousseInReviewedBasket = " select po.tousseName ,count(*) amount from tousseinstance po where reviewbasket_id in(select reviewedbasket_id from sterilization_reviewed where sterilizationrecord_id="+sterilizationRecord.getId()+") " + + "and (status <> '已废弃' or (status='已废弃' and sterilizationRecord_id is not null)) group by po.tousseName "; ResultSet rs2 = objectDao.executeSql(sqlToCountTousseInReviewedBasket); try { while(rs2.next()){