Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java =================================================================== diff -u -r21984 -r22003 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java (.../SterilizationRecordAction.java) (revision 21984) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java (.../SterilizationRecordAction.java) (revision 22003) @@ -61,6 +61,7 @@ import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecordPic; import com.forgon.disinfectsystem.sterilizationmanager.sterilizationrecord.service.SterilizationRecordManager; import com.forgon.disinfectsystem.tousse.imagefilemanager.service.ImageFileManager; +import com.forgon.disinfectsystem.tousse.toussedefinition.action.TousseImageProcessAction; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; import com.forgon.log.model.Log; import com.forgon.log.service.LogManager; @@ -78,6 +79,7 @@ import com.forgon.tools.util.FileUtils; import com.forgon.tools.util.ForgonDateUtils; import com.forgon.util.StringUtil; +import com.google.common.collect.Maps; import com.opensymphony.xwork2.ModelDriven; import com.opensymphony.xwork2.Preparable; @@ -681,6 +683,10 @@ myBarcodes = myBarcodes.replace("\"","").replace("[","").replace("]","").replace(" ", ""); List barcodeList = new ArrayList(); JSONObject validateResultJsonObject = new JSONObject(); + JSONArray fixedBarodeJsonArray = new JSONArray();//返回至前台的固定条码集合 + JSONArray barodeJsonArray = new JSONArray();//返回至前台的唯一条码集合 + + if(StringUtils.isNotBlank(barcodes)){ String[] barcodeArr = barcodes.split(";"); for(String barcode : barcodeArr){ @@ -689,6 +695,7 @@ //如果是固定条码,则去获取下面的包实例条码,按每次扫描数量去获取 if(tousseDefinitionId!=""){ + fixedBarodeJsonArray.add(barcode); barcodeList = tousseInstanceManager.getTousseInsDataByFixedBarcode (barcode, myBarcodes," and status = '"+TousseInstance.STATUS_REVIEWED+"'","barcode",1); //循环该固定条码下的包实例去校验 @@ -716,21 +723,89 @@ } } + + + JSONArray resultJsonArray1 = new JSONArray(); + Map resultMap=Maps.newHashMap(); + + for (int i = 0; i < resultJsonArray.size(); i++) { + JSONObject obj=resultJsonArray.getJSONObject(i); + JSONArray arr=(JSONArray) obj.get("dataList"); + Map result=Maps.newHashMap(); + if(arr!=null){//篮筐 + for (Object o : arr) { + JSONObject a=(JSONObject) o; + String key=a.getString("name"); + if(a.containsKey("fixedBarcode") && StringUtils.isNotBlank(a.get("fixedBarcode")+"") && result.containsKey(key)){ + JSONObject r=result.get(key); + int amt=1; + if(r.get("amount")!=null){ + amt =(int) r.get("amount"); + amt++; + } + r.put("amount", amt); + r.put("fixedBarcode", a.get("fixedBarcode")); + result.put(key, r); + }else{ + if(a.containsKey("fixedBarcode") && StringUtils.isNotBlank(a.get("fixedBarcode")+"")){ + a.put("amount", 1); + result.put(key, a); + }else{ + result.put(a.getString("barcode"), a); + } + } + } + JSONArray datas=new JSONArray(); + for (String s : result.keySet()) { + datas.add(result.get(s)); + } + obj.put("dataList", datas); + } + //没入筐的 + String tousseInsName=obj.getString("name"); + if(obj.containsKey("fixedBarcode")&&StringUtils.isNotBlank(obj.get("fixedBarcode")+"")&&resultMap.containsKey(tousseInsName)){ + JSONObject d=resultMap.get(tousseInsName); + int amt=1; + if(d.get("amount")!=null){ + amt =(int) d.get("amount"); + amt++; + } + d.put("amount", amt); + d.put("barcode", obj.get("fixedBarcode")); + resultMap.put(tousseInsName, d); + + //因为是固定条码,所以要条码返回至前台缓存着 + barodeJsonArray.add(obj.get("barcode")); + }else{ + if(obj.containsKey("fixedBarcode") && StringUtils.isNotBlank(obj.get("fixedBarcode")+"")){ + obj.put("amount", 1); + resultMap.put(tousseInsName, obj); + barodeJsonArray.add(obj.get("barcode")); + }else{ + resultMap.put(obj.getString("barcode"), obj); + } + } + } + for (String key : resultMap.keySet()) { + resultJsonArray1.add(resultMap.get(key)); + } jsonObject.put("success", true); - jsonObject.put("datas", resultJsonArray); + jsonObject.put("datas", resultJsonArray1); + jsonObject.put("barodeJsonArray", barodeJsonArray); + jsonObject.put("fixedBarodeJsonArray",fixedBarodeJsonArray); } StrutsResponseUtils.output(jsonObject); } /** - * 点击一键入炉添加灭菌物品时,校验条码对象... + * 点击一键入炉添加灭菌物品时,校验条码对象... * @param barcode 器械包条码或者容器条码 * @param savedBarcodes 已经扫描的器械包集合(用分号分隔) * @return */ private JSONObject validateBarcodeForBarcodeDevice(String barcode , String savedBarcodes){ - savedBarcodes = ";" + savedBarcodes + ";"; + savedBarcodes = ";" + savedBarcodes + ";"; JSONObject validateResultJsonObject = new JSONObject();//验证结果的json对象,用于最终返回 if (StringUtils.isNotBlank(barcode)) { if (savedBarcodes.contains(";" + barcode + ";")) { @@ -758,7 +833,7 @@ //验证是否是代理灭菌(代理灭菌器械包状态已装配就可以灭菌) if (!isReviewed) { if (!StringUtils.equals(tousseInstance.getOrgUnitCoding(), AcegiHelper.getLoginUser().getOrgUnitCodingFromSupplyRoomConfig())) { - if (status.equals(TousseInstance.STATUS_PACKED)) { + if (TousseInstance.STATUS_PACKED.equals(status)) { isReviewed = true; } } @@ -770,6 +845,14 @@ JSONObject returnDataJsonObject = new JSONObject(); returnDataJsonObject.put("type", TousseDefinition.PACKAGE_TYPE_INSIDE); returnDataJsonObject.put("barcode", tousseInstance.getBarcode()); + returnDataJsonObject.put("amount", 1); + String fixedBarcode =""; + if(TousseDefinition.STR_NO.equals(tousseDefinition.getIsTraceable())){ + fixedBarcode = tousseInstanceManager.getTousseInsFixedBarcode(tousseInstance.getTousseName()); + returnDataJsonObject.put("fixedBarcode", fixedBarcode); + returnDataJsonObject.put("stockAmount", tousseInstanceManager.getTousseInstanceStockAmount(fixedBarcode)); + } + returnDataJsonObject.put("fixedBarcode", fixedBarcode); returnDataJsonObject.put("name", tousseInstance.getTousseName()); returnDataJsonObject.put("typeForSterilizationStatistics", getTypeForSterilizationStatistics(tousseInstance)); returnDataJsonObject.put("sterilingType", tousseInstance.getSterilingType()); @@ -824,10 +907,17 @@ tousseList.addAll(toussesInBasket); Collections.sort(tousseList);//按id降序排序 for (TousseInstance tousseInstance : tousseList) { + TousseDefinition tousseDefinition = tousseInstance.getTousseDefinition(); if (tousseInstance != null && StringUtils.isNotBlank(tousseInstance.getTousseName())) { JSONObject jsonObject = new JSONObject(); jsonObject.put("barcode", tousseInstance.getBarcode()); + String fixedBarcode =""; + if(TousseDefinition.STR_NO.equals(tousseDefinition.getIsTraceable())){ + fixedBarcode = tousseInstanceManager.getTousseInsFixedBarcode(tousseInstance.getTousseName()); + } + jsonObject.put("amount", 1); + jsonObject.put("fixedBarcode", fixedBarcode); jsonObject.put("name", tousseInstance.getTousseName()); jsonObject.put("typeForSterilizationStatistics", getTypeForSterilizationStatistics(tousseInstance)); jsonObject.put("sterilingType", tousseInstance.getSterilingType()); Index: ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordForm.js =================================================================== diff -u -r21984 -r22003 --- ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordForm.js (.../sterilizationRecordForm.js) (revision 21984) +++ ssts-web/src/main/webapp/disinfectsystem/sterilizationmanager/sterilizationrecord/sterilizationRecordForm.js (.../sterilizationRecordForm.js) (revision 22003) @@ -980,14 +980,20 @@ var data = datas[i];//一键入炉的待灭菌,没有入篮筐的器械包或篮筐节点 var parentNode; if ('器械包' == data.type) { - parentNode = createNode(true,data.barcode,data.name,data.typeForSterilizationStatistics,data.depart,'器械包',position,1,data.reviewTime); + parentNode = createNode(true,data.barcode,data.name,data.typeForSterilizationStatistics,data.depart,'器械包',position,data.amount,data.reviewTime,0,0); } else { - parentNode = createNode(true,data.barcode,data.name,'',data.depart,'篮筐',position,1,''); var tousseInstanceArr = data.dataList + var length = tousseInstanceArr.length; + var amount=0 + //统计每个篮筐内的数量 + for(var j =0;j 0){ for(var k = 0; k < tousseInstanceArr.length; k++){ var ti = tousseInstanceArr[k]; - var childNode = createNode(false,ti.barcode,ti.name,ti.typeForSterilizationStatistics,ti.depart,'器械包',position,1,ti.reviewTime); + var childNode = createNode(false,ti.barcode,ti.name,ti.typeForSterilizationStatistics,ti.depart,'器械包',position,ti.amount,ti.reviewTime,0,0); parentNode.appendChild(childNode); } } @@ -1946,8 +1952,21 @@ success : function(response, options) { var result = Ext.decode(response.responseText); if(result.success){ + var fixedBarodeJsonArray = result.fixedBarodeJsonArray + var barodeJsonArray = result.barodeJsonArray + + //如果存在固定条码,则缓存在页面上 + if(fixedBarodeJsonArray && barodeJsonArray ){ + for(var f=0;f