Index: forgon-core/src/main/java/com/forgon/util/StringUtil.java =================================================================== diff -u -r18768 -r25703 --- forgon-core/src/main/java/com/forgon/util/StringUtil.java (.../StringUtil.java) (revision 18768) +++ forgon-core/src/main/java/com/forgon/util/StringUtil.java (.../StringUtil.java) (revision 25703) @@ -669,4 +669,15 @@ } return result; } + /** + * 验证Double类型是不是NaN或无穷大 + * @param param 验证的参数 + * @return NaN或无穷大,返回Null,否则返回原值 + */ + public static Double checkDoubleIsNaNOrIsfinite(Double param){ + if (Double.isNaN(param) || Double.isInfinite(param)){ + param = null; + } + return param; + } } Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r25687 -r25703 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 25687) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 25703) @@ -152,6 +152,7 @@ import com.forgon.tools.util.ForgonDateUtils; import com.forgon.tools.util.ForgonNumberUtils; import com.forgon.tools.util.SqlUtils; +import com.forgon.util.StringUtil; import com.google.gson.Gson; import com.google.gson.JsonObject; @@ -2917,7 +2918,7 @@ String reviewer, String reviewerCode,String sterileUserName,String sterileUserCode, String sterilingType,String sterilizer, String frequency, JSONArray splitPackages,List splitsTousseList,TousseDefinition td, PackingRecord packingRecord,String taskGroup, String washBasket,ForeignTousseApplication foreignTousseApplication,String orgUnitCoding, - String orgUnitName, Date packingDate,String tousseWeight,String remark, PackingTask currentPackingTask,Map idToWashRecordMap, + String orgUnitName, Date packingDate,Double tousseWeight,String remark, PackingTask currentPackingTask,Map idToWashRecordMap, Map idToRecyclingRecordMap,Date sterileStartTime) { boolean allowForeignToussePartiallyPacking = CssdUtils.getSystemSetConfigByNameBool("allowForeignToussePartiallyPacking"); // 外来器械拆包后价格从系统参数拿 @@ -2940,7 +2941,7 @@ if(tousse.has("price")){ price = tousse.optDouble("price"); } - + Double weight =StringUtil.checkDoubleIsNaNOrIsfinite(tousse.optDouble("weight")); Date validUntil = null; Date warningUntil = null; // 失效期和预警期计算 @@ -2974,7 +2975,7 @@ .getSerialNumberStr(SerialNum.TYPE_BARCODE); // 创建新的外来器械包定义 TousseDefinition tousseDefinition = createNewForeignTousseDefinition( - td, tousseName, materialsArray, bigPackage); + td, tousseName, materialsArray, bigPackage, weight); Integer tousseAmount = tousseDefinition .getTousseAmount(); @@ -2991,7 +2992,7 @@ tousseDefinition, tousseType, tousseName, foreignTousseApplication, packingDate, price, fluctuationPrice, tousseAmount, orgUnitCoding, orgUnitName, - isUnTraceableTousse, barcodeStr ,tousseWeight,remark, currentPackingTask,idToWashRecordMap,idToRecyclingRecordMap,washJson,null,null, sterilingTypeToSterilingModeMap); + isUnTraceableTousse, barcodeStr , weight, remark, currentPackingTask,idToWashRecordMap,idToRecyclingRecordMap,washJson,null,null, sterilingTypeToSterilingModeMap); tousseInstanceManager.save(tousseInstance); @@ -3010,7 +3011,7 @@ tousse.put("supplierName", tousseInstance.getTousseDefinition().getSupplierName()); tousse.put("washOperator", tousseInstance.getWashOperator()); tousse.put("washOperatorCode", tousseInstance.getWashOperatorCode()); - tousse.put("weight", tousseWeight); + tousse.put("weight", weight); tousse.put("remark", remark); tousse.put("printAmount", tousseDefinition.getPrintAmountForPrint()); tousse.put("isUrgentTousse", tousseInstance.getIsUrgentTousse()); @@ -3245,7 +3246,7 @@ try { while(rs.next()){ Long classifyBasketId = rs.getLong(1); - String materilName = rs.getString(2); + String materialName = rs.getString(2); Integer amount = rs.getInt(3); Long materialDefinitionId = rs.getLong(4); String containerBarcode = rs.getString("containerBarcode"); @@ -3280,15 +3281,15 @@ i++; } List materialsJsonArray = packageObj.getMaterialsJsonArray(); - ForeignTousseSplitMaterialVo materilObj = new ForeignTousseSplitMaterialVo(); - materilObj.setName(materilName); + ForeignTousseSplitMaterialVo materialObj = new ForeignTousseSplitMaterialVo(); + materialObj.setName(materialName); String includeImplant = implantGoodsMap.get(materialDefinitionId); if(StringUtils.isBlank(includeImplant)){ includeImplant = Constants.STR_NO; } - materilObj.setIncludeImplant(includeImplant); - materilObj.setMaterialAmount(amount); - materialsJsonArray.add(materilObj); + materialObj.setIncludeImplant(includeImplant); + materialObj.setMaterialAmount(amount); + materialsJsonArray.add(materialObj); } } catch (SQLException e) { e.printStackTrace(); @@ -3401,7 +3402,7 @@ String sterileFrequency = JSONUtil.optString(paramsObj, "frequency", null); String confirmContinue = JSONUtil.optString(paramsObj, "confirmContinue", null); String urgentAmountStr = JSONUtil.optString(paramsObj, "urgentAmount", null); - String tousseWeight = JSONUtil.optString(paramsObj, "tousseWeight", null); + Double tousseWeight =StringUtil.checkDoubleIsNaNOrIsfinite(paramsObj.optDouble("tousseWeight")); String remark = JSONUtil.optString(paramsObj, "remark", null); Long comboTousseInstanceId = JSONUtil.optLong(paramsObj, "comboTousseInstanceId", null); String comboTousseInstanceStatus = JSONUtil.optString(paramsObj, "comboTousseInstanceStatus", null); @@ -3626,7 +3627,7 @@ for (PackingTask packingTask : packingTasks) { TousseDefinition td = packingTask.getTousseDefinition(); - //如果配置是否打印材料时 + // 判断包定义的配置是否需要打印材料 if(TousseDefinition.STR_YES.equals(td.getIsPrint()) && TousseDefinition.STR_YES.equals(td.getIsPrintMaterialForPacking())){ // json.put("tousseDefinition", JSONObject.fromObject(td , cfg));//会报json异常(net.sf.json.JSONException: There is a cycle in the hierarchy) tdJson = getTousseDefinitionJson(td); @@ -3741,7 +3742,7 @@ List currentPackingTaskAsList = new ArrayList(); int packingAmountForThisTask = needPackingAmount;//本任务装配数量 - // 如果该器械包为不追溯并且为器械包,则将该器械包设置为已审核状态并设为不打印标签 + // 如果器械包定义设置为不打印标签,则将对应的变量设置为false if (TousseDefinition.STR_NO.equals(td.getIsPrint())) { isPrint = false; } @@ -3752,8 +3753,10 @@ if(td.isForeignTousse()){ if(StringUtils.isBlank(splitPackages)){ + // 外来器械包装配时没有做拆分装配的处理。主要处理在回收时,拆分放入多个清洗篮筐的情况 splits = buildForeignTousseSplitPackages(currentPackingTask,supplyRoomConfigParams,packageType,scannedBasketBarcodesSet); }else{ + // 外来器械包装配,拆包装配的处理 splits = JSONArray.fromObject(splitPackages); // 页面已经拆包,设置价格 if(foreignTousseSplitPriceType == TousseDefinition.FOREIGNTOUSSE_SPLIT_PRICE_TYPE_AVG){ @@ -3809,13 +3812,12 @@ .equals(tousseType) && toussePrice == 0) { toussePrice = config.getForeignToussePrice(); } -// toussePriceFloatPercent = config -// .getToussePriceFluctuation();// 浮动价格系数 + // 浮动价格 fluctuationPrice = supplyRoomConfigManager.getTousseFluctuationPrice(toussePrice); tousseAmount = td.getTousseAmount(); - // 如果该器械包为不追溯并且为器械包,则将该器械包设置为已审核状态并设为不打印标签 + // 如果该器械包定义为不打印标签,或者打印标签,但是否追溯属性为否,均设置为不追溯 if (TousseDefinition.STR_NO.equals(td.getIsPrint())) { isTraceable = false; } else { @@ -3901,19 +3903,7 @@ validUntilDateToPrint = tousse.optString(""); sterileDateToPrint = tousse.optString(""); - - Double weight = null; - String strWeight = tousse.optString("weight"); - if (StringUtils.isNotBlank(strWeight)){ - try{ - weight = Double.valueOf(strWeight); - } - catch(Exception e){ - e.printStackTrace(); - } - - } - + Double weight =StringUtil.checkDoubleIsNaNOrIsfinite(tousse.optDouble("weight")); JSONObject obj = CssdUtils.getTousseObjForPrint( tousse.optString("tousseName"), tousse.optJSONObject("tousseDefinition"), @@ -4156,7 +4146,7 @@ * @return */ private TousseDefinition createNewForeignTousseDefinition(TousseDefinition td, - String tousseName, JSONArray materialsArray, String bigPackage) { + String tousseName, JSONArray materialsArray, String bigPackage, Double weight) { TousseDefinition newTousseDefinition = new TousseDefinition(); newTousseDefinition.setForDisplay(false); newTousseDefinition.setName(tousseName); @@ -4165,7 +4155,7 @@ newTousseDefinition.setSupplierName(td.getSupplierName()); newTousseDefinition.setTaskGroup(td.getTaskGroup()); newTousseDefinition.setIsBigPackage(bigPackage); - + newTousseDefinition.setWeight(weight); List materialInstanceList = new ArrayList(); int tousseAmount = 0; Integer includeImplantFlag = TousseDefinition.UNINCLUDE_IMPLANT; //判断是否包含植入物(cjr) @@ -4364,7 +4354,7 @@ Integer currentPackAmount, double toussePrice,double fluctuationPrice, Integer tousseAmount,String orgUnitCoding, String orgUnitName, String basketBarcode,boolean unTraceableTousse, String confirmContinue,List tousseInstances, List withoutReviewingAndSterilingTousseInstanceList,Map idToWashRecordMap, - Map idToRecyclingRecordMap,JSONObject urgentAmountJson,String taskGroup,String tousseWeight,String remark,Long comboTousseInstanceId,String comboTousseInstanceStatus,PackingContext packingContext) { + Map idToRecyclingRecordMap,JSONObject urgentAmountJson,String taskGroup,Double tousseWeight,String remark,Long comboTousseInstanceId,String comboTousseInstanceStatus,PackingContext packingContext) { JSONObject obj = new JSONObject(); long t1 = System.currentTimeMillis(); @@ -4790,7 +4780,7 @@ ForeignTousseApplication foreignTousseApplication, Date packingDate, double toussePrice, double fluctuationPrice, Integer tousseAmount, String orgUnitCoding, String orgUnitName, - boolean unTraceableTousse, String barcodeStr, String tousseWeight,String remark, + boolean unTraceableTousse, String barcodeStr, Double tousseWeight,String remark, PackingTask currentPackingTask, Map idToWashRecordMap, Map idToRecyclingRecordMap, @@ -4800,18 +4790,8 @@ tousseInstance.setTaskGroup(taskGroup); tousseInstance.setBarcode(barcodeStr); - - // 如果页面传入的重量不为空,则进行重量属性的处理 - if (StringUtils.isNotBlank(tousseWeight)){ - //如果不能转换为Double,则设置为null - Double weight = null; - try { - weight = Double.valueOf(tousseWeight); - } catch (Exception e) { - e.printStackTrace(); - } - tousseInstance.setWeight(weight); - } + tousseInstance.setWeight(tousseWeight); + tousseInstance.setRemark(remark); tousseInstance.setType(BarcodeDevice.BARCODE_TYPE_PACKAGE); tousseInstance.setSterilizationUser(sterileUserName); @@ -5539,6 +5519,8 @@ JSONObject tousse = (JSONObject)splitPackages.get(i); String tousseName = tousse.optString("tousseName"); + //拆包的器械包重量 + Double weight = StringUtil.checkDoubleIsNaNOrIsfinite(tousse.optDouble("weight")); JSONArray materialsArray = tousse.optJSONArray("materialsJsonArray"); String bigPackage = tousse.optString("bigPackage"); String packageType = tousse.optString("packingType"); @@ -5572,7 +5554,7 @@ tousse.put("markTousse", markTousse); // 创建新的外来器械包定义 TousseDefinition tousseDefinition = createNewForeignTousseDefinition( - td, tousseName, materialsArray, bigPackage); + td, tousseName, materialsArray, bigPackage, weight); double fluctuationPrice = supplyRoomConfigManager .getTousseFluctuationPrice(foreignTprice); Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java =================================================================== diff -u -r25666 -r25703 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java (.../ForeignTousseApplicationManagerImpl.java) (revision 25666) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/foreigntousseapplication/service/ForeignTousseApplicationManagerImpl.java (.../ForeignTousseApplicationManagerImpl.java) (revision 25703) @@ -188,11 +188,13 @@ .getApplicationItems(); int toolsAmount = 0; int implantsAmount = 0; + Double weight = null; // 获取器械包材料件数 if (ls != null && ls.size() > 0) { TousseDefinition td = tousseDefinitionManager .getTousseDefinitionByTousseItem(ls.get(0)); if (td != null) { + weight = td.getWeight(); List materialList = td .getMaterialInstances(); for (MaterialInstance materialInstance : materialList) { @@ -231,7 +233,7 @@ obj.put("supplierContactName", app.getSupplierContactName()); obj.put("supplierPhoneNumber", app.getSupplierPhoneNumber()); - + obj.put("weight", weight); String queryString = "select count(*) from TousseInstance po where po.foreignTousseApp_id = :id"; Session session = objectDao.getHibernateSession(); Query query = session.createQuery(queryString); @@ -499,8 +501,7 @@ String oldSupplierName = obj.optString("oldSupplierName"); String supplierName = obj.optString("supplierName"); Double price = obj.optDouble("price"); - Double weight = obj.optDouble("weight"); - weight=Double.isNaN(obj.optDouble("weight"))?null:weight;//如果是非数字,则为null + Double weight =StringUtil.checkDoubleIsNaNOrIsfinite(obj.optDouble("weight")); String recyclingStatus = obj.optString("recyclingStatus"); String imageFileIds = obj.optString("imageFileIds"); Long appid = foreignTousseApplication.getId();