Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java =================================================================== diff -u -r29775 -r29932 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 29775) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 29932) @@ -2696,7 +2696,7 @@ sterileRecord.setStartDate(new Date()); } Map result = sterilizationRecordManager.saveOrUpdateSterilizationRecord( - sterileRecord, tousseInstanceBarcodes, containerBarcodes,null,barcodePosition, null); + sterileRecord, tousseInstanceBarcodes, containerBarcodes,null,barcodePosition, null, null); JSONObject json = JSONObject.fromObject(result); JSONUtil.addProperty(json, "waitSterileGoods", sterilizationRecordManager.getWaitSterileGoods(sterileRecord.getSterilizerName())); return json.toString(); Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r29761 -r29932 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 29761) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 29932) @@ -5173,7 +5173,13 @@ List barcodeList =getTousseInsDataByFixedBarcode(fixedBarcode,barcodes," and status = '"+TousseInstance.STATUS_REVIEWED+"'","barcode",0,addAmount,null); if(barcodeList.size()==0){ - return JSONUtil.buildJsonObject(false, "已是最大值"); + TousseDefinition td = tousseDefinitionManager.getTousseDefinitionByFixedBarcode(fixedBarcode); + int scanAmount = 0; + if(StringUtils.isNotBlank(barcodes) && barcodes.contains(",")){ + scanAmount = barcodes.split(",").length; + } + result = JSONUtil.buildJsonObject(false, "已超过" + td.getName() + "待灭菌物品总数" + (scanAmount + barcodeList.size()) + "!"); + return result; } String resultStr=""; for(int i =0;i 0){ + if(dbConnection.isSqlServer()){ + top = "top "+scanAmount; + }else if(dbConnection.isOracle()){ + rownum =" and rownum <= "+scanAmount; + } } StringBuffer barcodesSql = new StringBuffer(); if(StringUtils.isNotBlank(barcodes)){ @@ -6570,6 +6586,8 @@ ItemDefinitionVO td = new ItemDefinitionVO(); ti.setItemDefinition(td); td.setIncludeImplant(rs1.getInt("includeImplant")); + td.setScanAmount(rs1.getInt("scanAmount")); + td.setTousseType(rs1.getString("tousseType")); ti.setBarcode(rs1.getString("barcode")); ti.setDepart(rs1.getString("depart")); ti.setTousseName(rs1.getString("tousseName")); @@ -6581,7 +6599,7 @@ ti.setAmount(amount > SterilizationRecord.MAXSCANAMOUNT ? SterilizationRecord.MAXSCANAMOUNT : amount); ti.setSterilingType(rs1.getString("sterilingType")); ti.setIsUrgentTousse(rs1.getString("IsUrgentTousse")); - //ti.setTaskGroup(rs1.getString("taskGroup")); + ti.setIsTraceable(Constants.STR_NO); tousseList.add(ti); } } catch (Exception e) { @@ -6673,14 +6691,15 @@ } String sql = "select tdancestor.id ,null depart,tdancestor.name tousseName,null sterilingType,s.sterilizationMode sterilingMode,null IsUrgentTousse," + firstBarcodeSql - + "barcode,null reviewTime,count(0) amount, max(tdancestor.includeImplant) includeImplant" + + "barcode,null reviewTime,count(0) amount, max(tdancestor.includeImplant) includeImplant, tdancestor.scanAmount, tdancestor.sterilingMethod, tdancestor.tousseType " + " from "+ TousseInstance.class.getSimpleName() +" ti " + " join "+ BarcodeDevice.class.getSimpleName() +" b on b.id=ti.id " + " join "+ TousseDefinition.class.getSimpleName() +" td on ti.tousseDefinition_id=td.id join "+ TousseDefinition.class.getSimpleName() +" tdancestor " + " on td.ancestorID=tdancestor.id left join "+ InvoicePlan.class.getSimpleName() +" pd on pd.id=ti.proxyDisinfection_id " + " left join " + Sterilisation.class.getSimpleName() + " s on s.sterilisation = td.sterilingMethod" + " where 1=1 and tdancestor.isTraceable='"+ Constants.STR_NO +"' and ti.status='"+ TousseInstance.STATUS_REVIEWED +"' and ti.comboTousseInstanceId is null " - + " and ti.reviewBasket_id is null and (pd.id is null and ti.orgunitcoding='"+orgUnitCode+"' or pd.id is not null and pd.handleDepartCoding='"+orgUnitCode+"') group by tdancestor.id,tdancestor.name,s.sterilizationMode "; + + " and ti.reviewBasket_id is null and (pd.id is null and ti.orgunitcoding='"+orgUnitCode+"' or pd.id is not null and pd.handleDepartCoding='"+orgUnitCode+"') " + + " group by tdancestor.id,tdancestor.name,s.sterilizationMode, tdancestor.scanAmount, tdancestor.sterilingMethod, tdancestor.tousseType "; sql += " order by tdancestor.id "; return sql; } Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java =================================================================== diff -u -r29805 -r29932 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 29805) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 29932) @@ -1411,9 +1411,11 @@ if(sterilizationRecord.isSterilizationFinish() || sterilizationRecord.isSterilizationFailure()){ throw new RuntimeException("已灭菌的记录不能删除"); } - List tousseInstanceList = sterilizationRecord + /*List tousseInstanceList = sterilizationRecord .getTousseInstanceList(); - setTousseInstanceToReviewid(tousseInstanceList); + setTousseInstanceToReviewid(tousseInstanceList);*/ + // 原有器械包的状态还原为[已审核] + setTousseInstanceToReviewid(sterilizationRecord); List reviewedBasketList = sterilizationRecord .getReviewedBaskets(); for (ReviewedBasket reviewedBasket : reviewedBasketList) { @@ -1435,14 +1437,47 @@ return success; } - @Override + /** + * 原有器械包的状态还原为[已审核] + * @param sterilizationRecord + */ + private void setTousseInstanceToReviewid(SterilizationRecord sterilizationRecord) { + if(DatabaseUtil.isPoIdValid(sterilizationRecord.getId())){ + String updateSql = String.format("update %s set status = '%s' where id in " + + "(select tousseInstance_id from sterilization_tousseInstance where sterilizationRecord_id = %s) ", + TousseInstance.class.getSimpleName(),TousseInstance.STATUS_REVIEWED, sterilizationRecord.getId()); + objectDao.excuteSQL(updateSql); + + // 打印日志 + String sql = String.format("select bd.barcode from %s bd join %s ti on ti.id = bd.id join sterilization_tousseInstance st on st.tousseInstance_id = ti.id where st.sterilizationRecord_id = %s", + BarcodeDevice.class.getSimpleName(), TousseInstance.class.getSimpleName(), sterilizationRecord.getId()); + ResultSet rs = null; + List modifiedBarcodes = new ArrayList(); + try { + rs = objectDao.executeSql(sql); + while(rs.next()){ + modifiedBarcodes.add(rs.getString("barcode")); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + if(CollectionUtils.isNotEmpty(modifiedBarcodes)){ + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_STERILIZATION, + Log.TYPE_UPDATE, "将包实例从灭菌中修改为已审核,包实例的条码有[" + StringTools.join(modifiedBarcodes, ",") + "]"); + } + } + } + + @Override public Map saveOrUpdateSterilizationRecord( SterilizationRecord sterilizationRecord, Collection tousseInstanceBarcodes, Collection containerBarcodes, Long originalSterilizationRecordId){ return saveOrUpdateSterilizationRecord(sterilizationRecord,tousseInstanceBarcodes, - containerBarcodes,originalSterilizationRecordId,null, null); + containerBarcodes,originalSterilizationRecordId,null, null, null); } @Override @@ -1451,7 +1486,8 @@ Collection tousseInstanceBarcodes, Collection containerBarcodes, Long originalSterilizationRecordId, - Map barcodePositionMap, JSONArray delTousseJsonArr) { + Map barcodePositionMap, JSONArray delTousseJsonArr, + Map subTdAmountMap) { Map result = new HashMap(); String status = sterilizationRecord.getStatus(); //注意:如果灭菌状态不是“空”或者“灭菌中”或者“暂存”,不给保存,防止不规范的操作。 @@ -1611,13 +1647,24 @@ // 原有器械包的状态还原为[已审核] Collection originalTousseInstances = sterilizationRecord .getTousseInstanceList(); + List removeTousseInstanceList = new ArrayList(); if (CollectionUtils.isNotEmpty(originalTousseInstances)) { for (TousseInstance tousseInstance : originalTousseInstances) { + String barcode = tousseInstance.getBarcode(); + if(tousseInstanceBarcodes.contains(barcode)){ + tousseInstanceBarcodes.remove(barcode); + continue; + } + if(tousseInstance.getUnTraceableTousse()){ + continue; + } if(tousseInstance.isSteriling()){ tousseInstance.setStatus(TousseInstance.STATUS_REVIEWED); tousseInstanceManager.save(tousseInstance); + removeTousseInstanceList.add(tousseInstance); } } + originalTousseInstances.removeAll(removeTousseInstanceList); } //删除篮筐内器械包 List delReviewedBasket = new ArrayList(); @@ -1655,8 +1702,48 @@ // 设置新器械包列表 List tousseInstanceList = new ArrayList( tousseInstanceBarcodes.size()); + Set tdIdSet = new HashSet(); + Map tdMap = new HashMap(); if(CollectionUtils.isNotEmpty(tousseInstanceBarcodes)){ - List list = tousseInstanceManager.getCollection("barcode", tousseInstanceBarcodes); + //List list = tousseInstanceManager.getCollection("barcode", tousseInstanceBarcodes); + List list = new ArrayList(); + String sql = String.format("select ti.id, ti.status, ti.sterilingMode, ti.tousseDefinition_id, ti.proxyDisinfection_id from %s ti join %s bd on bd.id = ti.id where %s ", + TousseInstance.class.getSimpleName(), BarcodeDevice.class.getSimpleName(), + SqlUtils.getStringFieldInLargeCollectionsPredicate("bd.barcode", tousseInstanceBarcodes)); + ResultSet rs = null; + try { + rs = objectDao.executeSql(sql); + while(rs.next()){ + Long id = rs.getLong("id"); + String tiStatus = rs.getString("status"); + Long tousseDefinition_id = rs.getLong("tousseDefinition_id"); + Long proxyDisinfection_id = rs.getLong("proxyDisinfection_id"); + String sterilingMode = rs.getString("sterilingMode"); + tdIdSet.add(tousseDefinition_id); + TousseInstance ti = new TousseInstance(); + ti.setId(id); + ti.setStatus(tiStatus); + ti.setSterilingMode(sterilingMode); + ti.setProxyDisinfection_id(proxyDisinfection_id); + TousseDefinition td = new TousseDefinition(); + td.setId(tousseDefinition_id); + ti.setTousseDefinition(td); + list.add(ti); + } + } catch (Exception e) { + e.printStackTrace(); + } + + if(CollectionUtils.isNotEmpty(tdIdSet)){ + String hql = String.format("select po from %s po where %s ", TousseDefinition.class.getSimpleName(), SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.id", tdIdSet)); + List tdList = objectDao.findByHql(hql); + if(CollectionUtils.isNotEmpty(tdList)){ + for (TousseDefinition tousseDefinition : tdList) { + tdMap.put(tousseDefinition.getId(), tousseDefinition); + } + } + } + if(CollectionUtils.isNotEmpty(list)){ for (TousseInstance tousseInstance : list) { //只有已审核的包才能入到灭菌记录中 @@ -1673,6 +1760,26 @@ } } } + // 已经保存的灭菌记录的固定条码的包实例 + List fixedBarcodeTousseIns = sterilizationRecord.getTousseInstanceList(); + List delfixedBarcodeTousseIns = new ArrayList(); + // 扣减的器械包状态还原为[已审核] + if(subTdAmountMap != null && !subTdAmountMap.isEmpty() && DatabaseUtil.isPoIdValid(sterilizationRecord.getId())){ + List tdIdList = new ArrayList(); + for (TousseDefinition td : subTdAmountMap.keySet()) { + tdIdList.add(td.getId()); + } + for (TousseInstance tousseInstance : fixedBarcodeTousseIns) { + TousseDefinition td = tousseInstance.getTousseDefinition(); + if(subTdAmountMap.keySet().contains(td) && subTdAmountMap.get(td).intValue() > 0){ + tousseInstance.setStatus(TousseInstance.STATUS_REVIEWED); + tousseInstanceManager.save(tousseInstance); + subTdAmountMap.put(td, (subTdAmountMap.get(td)-1)); + delfixedBarcodeTousseIns.add(tousseInstance); + } + } + fixedBarcodeTousseIns.removeAll(delfixedBarcodeTousseIns); + } sterilizationRecord.setTousseInstanceList(tousseInstanceList); // 设置新篮筐列表 @@ -1725,7 +1832,11 @@ Date now = new Date(); List messageList = new ArrayList(); for (TousseInstance tousseInstance : allNewTousseInstances) { - if(!tousseInstance.getTousseDefinition().traceable()){ + TousseDefinition tousseDefinition = tdMap.get(tousseInstance.getTousseDefinition().getId()); + if(tousseDefinition == null){ + tousseDefinition = tousseInstance.getTousseDefinition(); + } + if(!tousseDefinition.traceable()){ continue; } //判断该包实例装配时原定的灭菌日期是否是今天以后 @@ -1785,7 +1896,11 @@ sterilizationType,sterilizationMode,sterilingModeList.get(0))); } + // 不同状态下的器械包实例执行不同的update语句 + Map> sqlToTiIdMap = new HashMap>(); for (TousseInstance tousseInstance : allNewTousseInstances) { + // 属性名称和值的map,用于生成update语句 + Map propMap = new HashMap(); // 如果器械包状态为已灭菌,说明该器械包是重新灭菌 if (TousseInstance.STATUS_STERILED.equals(tousseInstance .getStatus())) { @@ -1796,29 +1911,57 @@ if(!tousseInstance.isDiscarded()){ // 所有的器械包的状态改为[灭菌中] tousseInstance.setStatus(TousseInstance.STATUS_STERILING); + propMap.put("status", TousseInstance.STATUS_STERILING); } tousseInstance.setSterileFrequency(sterilizationRecord.getFrequency()+""); //(cjr) tousseInstance.setSterilizationUser(sterilizationRecord.getSterilizationUser()); tousseInstance.setSterilizerName(sterilizationRecord.getSterilizerName()); + propMap.put("sterileFrequency", sterilizationRecord.getFrequency()+""); + propMap.put("sterilizationUser", sterilizationRecord.getSterilizationUser()); + propMap.put("sterilizerName", sterilizationRecord.getSterilizerName()); if(!SterilizationRecord.STERILIZATION_STATUS_DRAFT.equals(sterilizationRecord.getStatus())){ tousseInstance.setSterileStartTime(TousseInstanceUtils.buildSterileStartTime(sterilizationRecord.getStartDate())); + propMap.put("sterileStartTime", TousseInstanceUtils.buildSterileStartTime(sterilizationRecord.getStartDate())); } - tousseInstanceManager.save(tousseInstance); + if(!propMap.isEmpty()){ + String updateSql = ""; + for (String key : propMap.keySet()) { + updateSql = StringTools.uniteTwoStringBySemicolon(updateSql, key + "= '" + propMap.get(key) + "' ", ","); + } + updateSql = "update TousseInstance set " + updateSql; + List tousseInstanceIdList = sqlToTiIdMap.get(updateSql); + if(tousseInstanceIdList == null){ + tousseInstanceIdList = new ArrayList(); + } + tousseInstanceIdList.add(tousseInstance.getId()); + sqlToTiIdMap.put(updateSql, tousseInstanceIdList); + } + //如果是聚合包,则将该聚合包下属的普通器械包实例也相应赋值 if(tousseInstance.isComboTousse()){ String sql = String.format("update TousseInstance set status=%s,sterileFrequency=%s,sterilizationUser=%s,sterilizerName=%s," + "sterileStartTime=%s where comboTousseInstanceId=%d", "'" + TousseInstance.STATUS_STERILING + "'", - "'" + tousseInstance.getSterileFrequency() + "'", - "'" + tousseInstance.getSterilizationUser() + "'", - "'" + tousseInstance.getSterilizerName() + "'", - "'" + tousseInstance.getSterileStartTime() + "'", + "'" + sterilizationRecord.getFrequency() + "'", + "'" + sterilizationRecord.getSterilizationUser() + "'", + "'" + sterilizationRecord.getSterilizerName() + "'", + "'" + TousseInstanceUtils.buildSterileStartTime(sterilizationRecord.getStartDate()) + "'", tousseInstance.getId()); objectDao.excuteSQL(sql); } } + fixedBarcodeTousseIns.addAll(allNewTousseInstances); + sterilizationRecord.setTousseInstanceList(fixedBarcodeTousseIns); + if(!sqlToTiIdMap.isEmpty()){ + for (String updateSql : sqlToTiIdMap.keySet()) { + List tousseInsatnceIdList = sqlToTiIdMap.get(updateSql); + updateSql = updateSql + " where " + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("id", tousseInsatnceIdList); + objectDao.excuteSQL(updateSql); + } + } + // 更新灭菌记录的温度压力数据条数 // 灭菌记录的的温度压力数据条数 Sterilizer sterilizer = sterilizationRecord.getSterilizer(); @@ -2038,7 +2181,7 @@ } } return saveOrUpdateSterilizationRecord(sterilizationRecord, tousseInstanceBarcodes, containerBarcodes, - originalSterilizationRecordId, barcodePositionMap, null); + originalSterilizationRecordId, barcodePositionMap, null, null); } /** * 计算并更新灭菌记录的器械统计信息. @@ -3763,7 +3906,7 @@ } //根据固定条码获取审核状态的包实例id和包条码 TousseDefinition td = tousseDefinitionManager.getTousseDefinitionByFixedBarcode(barcodeStr); - JSONArray arr = tousseInstanceManager.getTousseInsArrByTd(td, "", " and status = '"+TousseInstance.STATUS_REVIEWED+"'", 1); + JSONArray arr = tousseInstanceManager.getTousseInsArrByTd(td, "", " and status = '"+TousseInstance.STATUS_REVIEWED+"'", 1, 0); Integer stockAmount = 0; int toussesAmount = arr.size(); if (toussesAmount > 0) { Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java =================================================================== diff -u -r29792 -r29932 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java (.../SterilizationRecordAction.java) (revision 29792) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java (.../SterilizationRecordAction.java) (revision 29932) @@ -331,8 +331,10 @@ .getOrgUnitCodingFromSupplyRoomConfig()); Collection tousseInstanceBarcodes = new ArrayList(); Collection containerBarcodes = new ArrayList(); + Collection fixedBarcodes = new ArrayList(); String[] goodsInfoArray = StringUtils.split(sterilizationGoods, "##"); + Map goodsAmountMap = new HashMap(); for (String item : goodsInfoArray) { String[] goodsItem = StringUtils.split(item, ",,"); if (goodsItem.length == 2) { @@ -344,9 +346,46 @@ // 篮筐 containerBarcodes.add(barcode); } + }else if(goodsItem.length == 3){ + String barcode = goodsItem[0]; + //String type = goodsItem[1]; + Integer amount = Integer.parseInt(goodsItem[2]); + fixedBarcodes.add(barcode); + goodsAmountMap.put(barcode, amount); } } + // 获取固定条码的包实例条码 + Map subTdAmountMap = new HashMap(); + if(CollectionUtils.isNotEmpty(fixedBarcodes)){ + for (String barcodeStr : fixedBarcodes) { + TousseDefinition td = tousseDefinitionManager.getTousseDefinitionByFixedBarcode(barcodeStr); + if(td == null){ + continue; + } + + Integer goodsAmount = goodsAmountMap.get(barcodeStr); + if(DatabaseUtil.isPoIdValid(sterilizationRecord.getId())){ + // 物品数量如果是负数,则需要扣减灭菌中物品 + if(goodsAmount.intValue() < 0){ + subTdAmountMap.put(td, Math.abs(goodsAmount)); + continue; + } + } + + JSONArray arr = tousseInstanceManager.getTousseInsArrByTd(td, "", " and status = '"+TousseInstance.STATUS_REVIEWED+"'", 0, goodsAmountMap.get(barcodeStr)); + if(arr == null || arr.size() < goodsAmountMap.get(barcodeStr)){ + throw new RuntimeException(td.getName() + "库存不足!剩余库存为:" + arr.size()); + } + if(arr != null && arr.size() > 0){ + for (int i=0;i barcodePositionMap = new HashMap(); // barcodePositionInfo 前台传入的格式 barcode,position;barcode2,position2; @@ -394,7 +433,7 @@ }else{ Map result = sterilizationRecordManager.saveOrUpdateSterilizationRecord( sterilizationRecord, tousseInstanceBarcodes, - containerBarcodes, originalRecordId,barcodePositionMap, delTousseJsonArr); + containerBarcodes, originalRecordId,barcodePositionMap, delTousseJsonArr, subTdAmountMap); StrutsResponseUtils.output(JSONObject.fromObject(result)); } @@ -410,8 +449,10 @@ } StrutsResponseUtils.output(json); } catch (RuntimeException e) { + e.printStackTrace(); StrutsResponseUtils.output(false,e.getMessage()); } catch (Exception e) { + e.printStackTrace(); StrutsResponseUtils.output(false,"保存失败"); } return null; @@ -934,7 +975,7 @@ JSONArray resultJsonArray1 = new JSONArray(); Map resultMap=Maps.newHashMap(); - + Map> fixedBarcodeMap = new HashMap>(); for (int i = 0; i < resultJsonArray.size(); i++) { JSONObject obj=resultJsonArray.getJSONObject(i); JSONArray arr=(JSONArray) obj.opt("dataList"); @@ -976,6 +1017,17 @@ } //没入筐的 String tousseInsName=obj.getString("name"); + + if(obj.containsKey("fixedBarcode")&&StringUtils.isNotBlank(obj.get("fixedBarcode")+"")){ + String tempFixedBarcode = obj.optString("fixedBarcode"); + List tiBarcodes = fixedBarcodeMap.get(tempFixedBarcode); + if(CollectionUtils.isEmpty(tiBarcodes)){ + tiBarcodes = new ArrayList(); + } + tiBarcodes.add(obj.optString("barcode")); + fixedBarcodeMap.put(tempFixedBarcode, tiBarcodes); + } + if(obj.containsKey("fixedBarcode")&&StringUtils.isNotBlank(obj.get("fixedBarcode")+"")&&resultMap.containsKey(tousseInsName)){ JSONObject d=resultMap.get(tousseInsName); int amt=1; @@ -1019,6 +1071,14 @@ jsonObject.put("datas", resultJsonArray1); jsonObject.put("barodeJsonArray", barodeJsonArray); jsonObject.put("fixedBarodeJsonArray",fixedBarodeJsonArray); + if(!fixedBarcodeMap.isEmpty()){ + JSONObject fixedBarcodeMapJSON = new JSONObject(); + for (String fixedBarcode : fixedBarcodeMap.keySet()) { + List tiBarcodeLsit = fixedBarcodeMap.get(fixedBarcode); + fixedBarcodeMapJSON.put(fixedBarcode,tiBarcodeLsit); + } + jsonObject.put("fixedBarcodeMap", fixedBarcodeMap); + } } StrutsResponseUtils.output(jsonObject); } @@ -1113,7 +1173,7 @@ returnDataJsonObject.put("amount", 1); returnDataJsonObject.put("name", tousseInstance.getTousseName()); returnDataJsonObject.put("typeForSterilizationStatistics", getTypeForSterilizationStatistics(tousseInstance)); - returnDataJsonObject.put("fixedBarcode", ""); + returnDataJsonObject.put("fixedBarcode", tousseDefinitionIdToFixedBarodeMap.get(tousseDefinition.getId())); returnDataJsonObject.put("includeImplant", tousseDefinition.getIncludeImplantStr()); if(TousseDefinition.STR_NO.equals(tousseDefinition.getIsTraceable())){ returnDataJsonObject.put("fixedBarcode", tousseDefinitionIdToFixedBarodeMap.get(tousseDefinition.getId().toString())); Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java =================================================================== diff -u -r29761 -r29932 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 29761) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 29932) @@ -843,9 +843,10 @@ * @param barcodes 页面上已经扫描过的条码,用逗号分割 * @param sqlStatus 查询条件的状态 举例格式:and status="已审核" * @param type 为1时,查询td.getScanAmount()条数据 + * @param scanAmount: type不为1,且scanAmount大于0,则查询scanAmount条数据 * @return */ - public JSONArray getTousseInsArrByTd(TousseDefinition td, String barcodes ,String sqlStatus ,int type); + public JSONArray getTousseInsArrByTd(TousseDefinition td, String barcodes ,String sqlStatus ,int type, int scanAmount); /** * 根据固定条码获取参数对应的值的字符串 * @param fixedBarcode 固定条码 Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManager.java =================================================================== diff -u -r29805 -r29932 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManager.java (.../SterilizationRecordManager.java) (revision 29805) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManager.java (.../SterilizationRecordManager.java) (revision 29932) @@ -11,6 +11,7 @@ import net.sf.json.JSONObject; import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.Sterilizer; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationInterruptRecord; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; @@ -213,6 +214,7 @@ * @param barcodePositionMap * @parmt 灭菌管理模块灭菌中的灭菌记录删除篮筐内的物品 或灭菌干预模块删除记录删除篮筐内的物品 * @param delTousseJsonArr 灭菌记录篮筐内被删除的器械包信息 例如:[{basketBarcode:'00000000',barcode:'00000'},{basketBarcode:'00000000',barcode:'00000'}] + * @param subTdAmountMap 固定条码器械包定义对应的删除数量(打开已经保存的灭菌记录,修改物品数量或者删除物品时,记录扣减的物品数量) * @return */ public Map saveOrUpdateSterilizationRecord( @@ -221,7 +223,7 @@ Collection containerBarcodes, Long originalSterilizationRecordId, Map barcodePositionMap, - JSONArray delTousseJsonArr); + JSONArray delTousseJsonArr,Map subTdAmountMap); /** * 重载更新灭菌记录函数,添加isHaveDoneNeedNoticeSterilisation,验证当前灭菌炉是否当天是否做过需要提示的灭菌程序 Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/vo/ItemDefinitionVO.java =================================================================== diff -u -r27683 -r29932 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/vo/ItemDefinitionVO.java (.../ItemDefinitionVO.java) (revision 27683) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/vo/ItemDefinitionVO.java (.../ItemDefinitionVO.java) (revision 29932) @@ -14,6 +14,11 @@ */ private Integer includeImplant; + /** + * 包定义设置的每次扫描入炉数量 + */ + private Integer scanAmount; + public String getName() { return name; } @@ -32,4 +37,10 @@ public void setIncludeImplant(Integer includeImplant) { this.includeImplant = includeImplant; } + public Integer getScanAmount() { + return scanAmount; + } + public void setScanAmount(Integer scanAmount) { + this.scanAmount = scanAmount; + } } Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/controller/SterilizationRecordController.java =================================================================== diff -u -r27243 -r29932 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/controller/SterilizationRecordController.java (.../SterilizationRecordController.java) (revision 27243) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/controller/SterilizationRecordController.java (.../SterilizationRecordController.java) (revision 29932) @@ -367,7 +367,7 @@ } Map returnResult = sterilizationRecordManager.saveOrUpdateSterilizationRecord( sterilizationRecord, tousseInstanceBarcodes, - containerBarcodes, StringUtils.isNotBlank(recordId) ? Long.valueOf(recordId) : null,barcodePositionMap, null); + containerBarcodes, StringUtils.isNotBlank(recordId) ? Long.valueOf(recordId) : null,barcodePositionMap, null, null); JSONUtil.addProperty(result, JSONUtil.JSON_KEY_SUCCESS, returnResult.get(JSONUtil.JSON_KEY_SUCCESS)); JSONUtil.addProperty(result, JSONUtil.JSON_KEY_MESSAGE, returnResult.get(JSONUtil.JSON_KEY_MESSAGE)); }