Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r21855 -r21869 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 21855) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 21869) @@ -3341,10 +3341,10 @@ } //此固定条码下所有的包实例条码 - List barcodeList =getTousseInsDataByFixedBarcode(fixedBarcode,"","灭菌记录"); + List barcodeList =getTousseInsDataByFixedBarcode(fixedBarcode,"",TousseInstance.STATUS_STERILING); //筛选符合删除条件的条码 - oldBarcodesList.retainAll(barcodeList); + oldBarcodesList.retainAll(barcodeList); //页面上已扫描的条码转成List ArrayList arrayList = new ArrayList(Arrays.asList(oldBarcodes)); @@ -3778,6 +3778,9 @@ if(type.indexOf("灭菌记录")!=-1 || type.indexOf("灭菌装载")!=-1){//添加灭菌记录扫固定条码、灭菌装载 findSql+=" and status = '"+TousseInstance.STATUS_REVIEWED+"'";//已审核 } + if(type.indexOf("灭菌中")!=-1){ + findSql+=" and status = '"+TousseInstance.STATUS_STERILING+"'";//灭菌记录详情需要用到的 + } if(type.indexOf("审核")!=-1){ findSql+=" and status = "+TousseInstance.STATUS_PACKED+"";//已装配 } Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java =================================================================== diff -u -r21856 -r21869 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 21856) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 21869) @@ -20,6 +20,7 @@ import net.sf.json.JSONArray; import net.sf.json.JSONObject; +import net.sf.json.util.JSONUtils; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; @@ -81,6 +82,7 @@ import com.forgon.tools.json.JSONUtil; import com.forgon.tools.string.StringTools; import com.forgon.tools.util.ForgonDateUtils; +import com.google.common.collect.Maps; /** * @author WangYi 2012-2-24 @@ -2909,20 +2911,36 @@ List tousseList = new ArrayList(); tousseList.addAll(toussesInBasket); Collections.sort(tousseList);//按id降序排序 - + Map cMap=Maps.newHashMap(); for (TousseInstance tousseInstance : tousseList) { - if (tousseInstance != null - && StringUtils.isNotBlank(tousseInstance.getTousseName())) { - JSONObject temp = new JSONObject(); - temp.put("tousseBarcode", tousseInstance.getBarcode()); - temp.put("tousseName", tousseInstance.getTousseName()); - temp.put("typeForSterilizationStatistics", getTypeForSterilizationStatistics(tousseInstance)); - temp.put("SterilingType", tousseInstance.getSterilingType()); - temp.put("department", StringUtils.defaultString(tousseInstance.getDepart(), "")); - temp.put("reviewTime", ForgonDateUtils.safelyFormatDate(tousseInstance.getReviewTime(), Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMM, "")); - tousseInstanceArr.add(temp); + String tousseName = tousseInstance.getTousseName(); + if (tousseInstance != null && StringUtils.isNotBlank(tousseInstance.getTousseName())) { + if(cMap.containsKey(tousseName) && tousseInstanceManager.isCountBarcode(tousseInstance.getBarcode())){ + JSONObject obj = cMap.get(tousseName); + int amt=(int) obj.get("amount"); + amt++; + obj.put("amount", amt); + obj.put("tousseBarcode", tousseInstanceManager.getTousseInsFixedBarcode(tousseName)); + //覆盖 + cMap.put(tousseName, obj); + }else{ + JSONObject temp = new JSONObject(); + temp.put("tousseBarcode", tousseInstance.getBarcode()); + temp.put("amount", 1); + temp.put("tousseName", tousseName); + temp.put("typeForSterilizationStatistics", getTypeForSterilizationStatistics(tousseInstance)); + temp.put("SterilingType", tousseInstance.getSterilingType()); + temp.put("department", StringUtils.defaultString(tousseInstance.getDepart(), "")); + temp.put("reviewTime", ForgonDateUtils.safelyFormatDate(tousseInstance.getReviewTime(), Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMM, "")); + //tousseInstanceArr.add(temp); + cMap.put(tousseName, temp); + } + } } + for (String str : cMap.keySet()) { + tousseInstanceArr.add(cMap.get(str)); + } } } jsonObj.put("success", 1); @@ -3048,6 +3066,8 @@ @Override public JSONArray loadSterilizationGoods(List tousseInstanceList,List reviewedBasketList) { JSONArray jsonArray = new JSONArray(); + Map bMap=Maps.newHashMap(); + // 没入篮筐的器械包 if(CollectionUtils.isNotEmpty(tousseInstanceList)){ for (TousseInstance tousse : tousseInstanceList) { @@ -3056,22 +3076,45 @@ continue; } String tousseName = tousse.getTousseName(); - JSONObject jsonObj = new JSONObject(); - jsonObj.put("isParentNode", true); - jsonObj.put("barcode", tousse.getBarcode()); - jsonObj.put("name", tousseName); - jsonObj.put("typeForSterilizationStatistics", getTypeForSterilizationStatistics(tousse)); - jsonObj.put("depart", StringUtils.defaultString(tousse.getDepart(), "")); - jsonObj.put("type", "器械包"); - jsonObj.put("position", tousse.getSterilizerPosition()); - jsonObj.put("amount", 1); - jsonObj.put("uiProvider", "col"); - jsonObj.put("iconCls", "task"); - jsonObj.put("leaf", true); - jsonArray.add(jsonObj); + String key=tousseName; + boolean isCountBarcode=tousseInstanceManager.isCountBarcode(tousse.getBarcode()); + if(bMap.containsKey(key) && isCountBarcode){//只有支持扫固定条码的包,才去统计 + //已存在 则取出该对象,对象中 objAmount 累加。 + JSONObject obj = bMap.get(key); + int amt=(int) obj.get("amount"); + amt++; + obj.put("amount", amt); + obj.put("barcode", tousseInstanceManager.getTousseInsFixedBarcode(tousseName));//固定条码 + //覆盖 + bMap.put(key, obj); + }else{//下一个~ + JSONObject jsonObj = new JSONObject(); + jsonObj.put("isParentNode", true); + jsonObj.put("barcode", tousse.getBarcode()); + jsonObj.put("name", tousseName); + jsonObj.put("typeForSterilizationStatistics", getTypeForSterilizationStatistics(tousse)); + jsonObj.put("depart", StringUtils.defaultString(tousse.getDepart(), "")); + jsonObj.put("type", "器械包"); + jsonObj.put("position", tousse.getSterilizerPosition()); + jsonObj.put("amount", 1); + jsonObj.put("uiProvider", "col"); + jsonObj.put("iconCls", "task"); + jsonObj.put("leaf", true); + if(!isCountBarcode){ + bMap.put(tousse.getBarcode(), jsonObj); + }else{ + bMap.put(key, jsonObj); + } + } + } + for (String str : bMap.keySet()) { + JSONObject tousseInBasket=bMap.get(str); + jsonArray.add(tousseInBasket); + } } // 容器 + int basketAmount=0;//篮筐汇总总数 for (ReviewedBasket reviewedBasket : reviewedBasketList) { try { Set tousseInstanceList2 = reviewedBasket.getTousseInstances(objectDao); @@ -3082,32 +3125,51 @@ jsonObj.put("name", reviewedBasket.getContainer().getContainerName()); jsonObj.put("type", "篮筐"); jsonObj.put("position", reviewedBasket.getSterilizerPosition()); - jsonObj.put("amount", 1); + jsonObj.put("amount", basketAmount); jsonObj.put("uiProvider", "col"); jsonObj.put("iconCls", "task-folder"); JSONArray tousseInBasketArray = new JSONArray(); + Map cMap=Maps.newHashMap(); List tousseInstanceResultList = new ArrayList(); tousseInstanceResultList.addAll(tousseInstanceList2); Collections.sort(tousseInstanceResultList); for (TousseInstance tousseInstance : tousseInstanceResultList) { - // 外来器械包去掉下划线ID String tousseName = tousseInstance.getTousseName(); - JSONObject tousseObj = new JSONObject(); - tousseObj.put("isParentNode", false); - tousseObj.put("barcode", tousseInstance.getBarcode()); - tousseObj.put("name", tousseName); - tousseObj.put("typeForSterilizationStatistics", getTypeForSterilizationStatistics(tousseInstance)); - tousseObj.put("depart", StringUtils.defaultString(tousseInstance.getDepart(), "")); - tousseObj.put("type", "器械包"); - tousseObj.put("amount", 1); - tousseObj.put("uiProvider", "col"); - tousseObj.put("leaf", true); - tousseObj.put("iconCls", "task"); - tousseInBasketArray.add(tousseObj); + if(cMap.containsKey(tousseName) && tousseInstanceManager.isCountBarcode(tousseInstance.getBarcode())){ + JSONObject obj = cMap.get(tousseName); + int amt=(int) obj.get("amount"); + amt++; + obj.put("amount", amt); + obj.put("barcode", tousseInstanceManager.getTousseInsFixedBarcode(tousseName)); + //覆盖 + cMap.put(tousseName, obj); + basketAmount++; + }else{ + JSONObject tousseObj = new JSONObject(); + tousseObj.put("isParentNode", false); + tousseObj.put("barcode", tousseInstance.getBarcode()); + tousseObj.put("name", tousseName); + tousseObj.put("typeForSterilizationStatistics", getTypeForSterilizationStatistics(tousseInstance)); + tousseObj.put("depart", StringUtils.defaultString(tousseInstance.getDepart(), "")); + tousseObj.put("type", "器械包"); + tousseObj.put("amount", 1); + tousseObj.put("uiProvider", "col"); + tousseObj.put("leaf", true); + tousseObj.put("iconCls", "task"); + cMap.put(tousseName, tousseObj); + basketAmount++; + } + } + + for (String str : cMap.keySet()) { + tousseInBasketArray.add(cMap.get(str)); + } jsonObj.put("children", tousseInBasketArray); + jsonObj.put("amount",basketAmount); jsonArray.add(jsonObj); + } catch (Exception e) { e.printStackTrace(); Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java =================================================================== diff -u -r21856 -r21869 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java (.../SterilizationRecordAction.java) (revision 21856) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java (.../SterilizationRecordAction.java) (revision 21869) @@ -379,17 +379,52 @@ }); List interruptRecords = sterilizationRecordManager.getInerruptRecords(sterilizationRecord.getId()); - if (sterilizationRecord.getId() != null) { //不是新加的记录 - List reviewedBasketList = sterilizationRecord.getReviewedBaskets(); - sterilizationRecord.setReviewedBasketAmount(reviewedBasketList.size()); //计算此灭菌记录的灭菌篮筐总数 + //存放多个固定条码,用逗号隔开 + StringBuffer fixedBarcodes = new StringBuffer(); + + //存放多个唯一条码,用逗号隔开 + StringBuffer barcodes =new StringBuffer(); + + if (sterilizationRecord.getId() != null && sterilizationRecord.getId()!=0) { //不是新加的记录 + //原有的代码 + List reviewedBasketList = sterilizationRecord.getReviewedBaskets();//灭菌篮筐集合 + sterilizationRecord.setReviewedBasketAmount(reviewedBasketList.size()); //计算此灭菌记录的灭菌篮筐总数 + + //如果状态不等于“灭菌中”,则不用去获取条码 + if(!sterilizationRecord.getStatus().equals(sterilizationRecord.STERILIZATION_STATUS_BEGIN)){ + return; + } + + //汇总后的数据,不显示唯一条码,所以在这里要提前拿到并给到前台 + List tousseInsList = sterilizationRecord.getTousseInstanceList();//器械包集合 + for (TousseInstance ti : tousseInsList) { + String barcode = ti.getBarcode();//当前条码 + String fBarcode = tousseInstanceManager.getTousseInsFixedBarcode(ti.getTousseName());//获得固定条码 + if(fBarcode!=""){ + barcodes.append(ti.getBarcode()+","); + } + if(fBarcode!="" && fixedBarcodes.indexOf(fBarcode)==-1 ){ + fixedBarcodes.append(fBarcode+","); + } + + } } Map map = new HashMap(); map.put("success", true); map.put("data", sterilizationRecord); map.put("interruptRecords", interruptRecords); - JSONObject jsonObject = JSONObject.fromObject(map, config); - String jsonStr = jsonObject.toString(); + + //去掉最后一个逗号 + if(StringUtils.isNotBlank(fixedBarcodes.toString()) && StringUtils.isNotBlank(barcodes.toString())){ + fixedBarcodes = fixedBarcodes.deleteCharAt(fixedBarcodes.length() - 1); + barcodes = barcodes.deleteCharAt(barcodes.length() - 1); + } + map.put("fixedBarcodes", fixedBarcodes.toString()); + map.put("barcodes", barcodes.toString()); + + JSONObject jsonObject = JSONObject.fromObject(map, config); + String jsonStr = jsonObject.toString(); try { StrutsParamUtils.getResponse().getWriter().println(jsonStr); } catch (IOException e) { Index: ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordForm.js =================================================================== diff -u -r21855 -r21869 --- ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordForm.js (.../sterilizationRecordForm.js) (revision 21855) +++ ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordForm.js (.../sterilizationRecordForm.js) (revision 21869) @@ -673,20 +673,23 @@ speakBasket.addGoods('', tousseName, 1); removePendingSterilizationGoods(barcodeStr) sterilizationRecordWin.getEl().unmask(); - } else if (success == 1) { //容器(单个灭菌框或虚拟篮筐) + } else if (success == 1) {//容器(单个灭菌框或虚拟篮筐) var tousseInstanceArr = resultData.tousseInstanceArr; //进入容器的器械包集合 var containerName = resultData.containerName; //容器名称 var length = tousseInstanceArr.length; + var amount=1 + if(typeof(tousseInstanceArr[0])!="undefined"){ + amount=tousseInstanceArr[0].amount; + } if (length < 1) { showResult('篮筐内无待灭菌物品'); sterilizationRecordWin.getEl().unmask(); return; } - speakContent = containerName; //添加到灭菌物品视图列表的第一行 var rootNode = sterilizationColumnTree.getRootNode(); - var parentNode = createNode(true, barcodeStr, containerName, '', '', '篮筐', position, 1, '',0,0); + var parentNode = createNode(true, barcodeStr, containerName, '', '', '篮筐', position, amount, '',0,0); var firstChildNode = rootNode.item(0); if(firstChildNode == null || firstChildNode == undefined){ rootNode.appendChild(parentNode); @@ -704,12 +707,13 @@ var sterilingType = tousseInstan.SterilingType; //灭菌程序 var department = tousseInstan.department; //科室 var reviewTime = tousseInstan.reviewTime; //审核时间 + var amount = tousseInstan.amount; if(sterilingTypeTemp != sterilingType){ showResultWithoutSpeak("灭菌筐[" + containerName + "]里面的器械包[" + tousseName + "]的灭菌程序和所选的灭菌程序不同!"); } - var childNode = createNode(false, tousseBarcode, tousseName, typeForSterilizationStatistics, department, '器械包', '', 1, reviewTime,0,0); + var childNode = createNode(false, tousseBarcode, tousseName, typeForSterilizationStatistics, department, '器械包', '', amount, reviewTime,0,0); parentNode.appendChild(childNode); speakBasket.addGoods(containerName, tousseName, 1); } @@ -1323,21 +1327,22 @@ var type = clickNode.attributes.type; var depart = clickNode.attributes.depart; var reviewTime = clickNode.attributes.reviewTime; - + var amount = clickNode.attributes.amount; + var countAmount=0 var array = new Array(); var isBasketUrgent = false; //篮筐是否加急 var objAmount = 1; if (type == '篮筐') { type = 'BASKET'; - objAmount = 0; + //objAmount = 0; clickNode.eachChild(function(pNode){ - objAmount++; + countAmount=parseInt(countAmount)+parseInt(pNode.attributes.amount) var childObjBarcode = pNode.attributes.barcode; var childObjName = pNode.attributes.name; var childObjAmount = 1; var childType = 'TOUSSE_IN'; var isUrgent = '否'; - var childNode = createPendingSterilizationGoodsNode(childObjBarcode, childObjName, childObjAmount, childType , pNode.attributes.depart, pNode.attributes.reviewTime); + var childNode = createPendingSterilizationGoodsNode(childObjBarcode, childObjName, amount, childType , pNode.attributes.depart, pNode.attributes.reviewTime); DWREngine.setAsync(false); //如果灭菌程序不能添加器械包,要清除灭菌物品列表 SterilizationRecordTableManager.isTousseUrgent(childObjBarcode,function(result){ @@ -1354,7 +1359,7 @@ type = 'TOUSSE'; } - var node = createPendingSterilizationGoodsNode(objBarcode, objName, objAmount, type, depart, reviewTime); + var node = createPendingSterilizationGoodsNode(objBarcode, objName, countAmount==0?1:countAmount, type, depart, reviewTime); if(type == 'TOUSSE'){ var isUrgent = '否'; DWREngine.setAsync(false); @@ -1536,7 +1541,6 @@ }, waitMsg : '正在处理,请稍候...', success : function(response, options) { - console.log("减少前="+myBarcodes) var result = Ext.decode(response.responseText); if(result.success){ if(typeof(result.message)=="undefined" || result.message==""){ @@ -1550,7 +1554,6 @@ }else{ showResult("减少数量失败,请勿提交数据"); } - console.log("减少后="+myBarcodes) }, failure : function(response, options) { showResult("后台运行异常,请稍候再试..."); @@ -1623,7 +1626,7 @@ } sterilizationColumnTreeColumnArray.push({header:'删除',width:60,dataIndex:'type', renderer:function(v,p,record){ - //只有“没有入篮筐的器械包节点”或者“篮筐节点”,并且灭菌记录的状态不为“已灭菌”和“灭菌失败”才可以删除 + //只有“没有入篮筐的器械包节点”或者“篮筐节点”,并且灭菌记录的状态不为“已灭菌”和“灭菌失败” if(record.isParentNode == true && currentStatus != statusEnd && currentStatus != statusFailure){ @@ -1642,7 +1645,7 @@ title:'灭菌物品列表', frame : false, bodyStyle : 'border:1px solid #afd7af', - columns:sterilizationColumnTreeColumnArray, + columns:sterilizationColumnTreeColumnArray,//根据列头,自动解析 loader: new top.Ext.tree.TreeLoader({ url : WWWROOT + '/disinfectSystem/sterilization/sterilizationRecordAction!loadSterilizationGoods.do', baseParams : {id:id}, @@ -1651,7 +1654,7 @@ }, listeners : { load : function(_this, node, response) { - statisticsTousseAndBasket(); + statisticsTousseAndBasket(); } } }), @@ -2990,7 +2993,7 @@ items : [ formObj ] }); sterilizationRecordWin.show(); - + //左下角灭菌记录 formObj.form.load({ url : WWWROOT + '/disinfectSystem/sterilization/sterilizationRecordAction!loadSterilizationRecord.do', method : 'GET', @@ -3007,6 +3010,10 @@ top.Ext.getCmp('startDate').setValue(formatDateYear(sr.startDate)); top.Ext.getCmp('endDate').setValue(formatDateYear(sr.endDate)); top.Ext.getCmp('srSituationComfirmer').setValue(sr.srSituationComfirmer); + var fixedBarcodes = action.result.fixedBarcodes + var barcodes = action.result.barcodes + myFixedBarcodes = fixedBarcodes.split(",") + myBarcodes = barcodes.split(",") } if(reSterilization){ //重新灭菌