Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r33195 -r33200 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 33195) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 33200) @@ -6767,6 +6767,18 @@ StringBuffer buff = new StringBuffer(); //灭菌程序对应灭菌方式的map Map sterilingTypeToSterilingModeMap = new HashMap(); + Map packageTypeMap = httpOptionManager.getHttpOptionTextToValueMapByListIdId(HttpOption.SYSTEMSETTING_PACKAGING_TYPE); + boolean isPrintUserName = supplyRoomConfigManager.getSystemParamsObj().isPrintUserFullName(); + int foreignTousseSplitPriceType = ConfigUtils.getSystemSetConfigByNameInt("foreignTousseSplitPriceType", TousseDefinition.FOREIGNTOUSSE_SPLIT_PRICE_TYPE_TD); + boolean spiltIntegral = false; + // 按照回收材料数量计算外来器械拆分小包积分XKYY-219 + boolean enableForeignToussePointsNumberOfApplicationMaterials = + ConfigUtils.getSystemSetConfigByNameBool("enableForeignToussePointsNumberOfApplicationMaterials"); + + if(!enableForeignToussePointsNumberOfApplicationMaterials && ConfigUtils.getSystemSetConfigByNameBool("enableToussePointsStatistics")){ + //如果未配置按回收材料数量计算积分,但是又开启了积分功能,则每个拆分小包的积分=外来器械包定义里积分系数/拆包总数 FSSDERMYY-9 + spiltIntegral = true; + } for (int i = 0 ; i < splitPackages.size() ; i++) { JSONObject tousse = (JSONObject)splitPackages.get(i); @@ -6819,11 +6831,95 @@ if(buff.length() > 0){ buff.append(","); } + // 外来器械包装配,拆包装配的处理 + // 页面已经拆包,设置价格 + if(splitPackages.size() == 0){ + throw new RuntimeException("外来器械拆包数量不能为0"); + } + + JSONArray subBarcodeArray = new JSONArray(); + subBarcodeArray.add(tousseInstance.getBarcode()); + JSONArray virtualBasketSeqNumArray = new JSONArray(); + virtualBasketSeqNumArray.add(tousseInstance.getVirtualBasketSeqNum()); + String packageTypeAbbreviation = packageTypeMap.get(packageType); + if(packageTypeAbbreviation == null){ + packageTypeAbbreviation = ""; + } + boolean isPrint = true; + boolean isReview = true; + boolean isTraceable = true; + TousseDefinition td = tousseInstance.getTousseDefinition(); + if (TousseDefinition.STR_NO.equals(td.getIsPrint())) { + isPrint = false; + isTraceable = false; + }else{ + if(TousseDefinition.STR_NO.equals(td.getIsTraceable())){ + isTraceable = false; + } + } + if (TousseDefinition.STR_NO.equals(td.getIsReview())){ + isReview = false; + } + if(foreignTousseSplitPriceType == TousseDefinition.FOREIGNTOUSSE_SPLIT_PRICE_TYPE_AVG){ + double[] prices = ForgonNumberUtils.splitPrice(td.getPrice(), splitPackages.size()); + if(i==0){ + tousse.put("price", prices[0]); + }else{ + tousse.put("price", prices[1]); + } + } + if(spiltIntegral && td.getIntegral() != null){ + boolean lessZero = (td.getIntegral() != null && td.getIntegral().doubleValue() < 0); + double[] integral = ForgonNumberUtils.splitPrice(Math.abs(td.getIntegral()) , splitPackages.size()); + if(lessZero){ + if(i==0){ + tousse.put("integral", -integral[0]); + }else{ + tousse.put("integral", -integral[1]); + } + }else{ + if(i==0){ + tousse.put("integral", integral[0]); + }else{ + tousse.put("integral", integral[1]); + } + } + } + String tousseNameAlias = tousse.optString("tousseNameAlias"); + JSONObject tiJSON = CssdUtils.getTousseObjForPrint( + StringUtils.isBlank(tousseNameAlias)?tousse.optString("tousseName"):tousseNameAlias, + tousse.optJSONObject("tousseDefinition"), + tousseInstance, + subBarcodeArray, virtualBasketSeqNumArray, + TousseDefinition.PACKAGE_TYPE_SPLIT, + tousse.optString("packingType"), + packageTypeAbbreviation, + sterilingType, + tousse.optString("sterilizerName"), + tousse.optString("sterileFrequency"), + isPrintUserName, operator, + operatorCode, reviewer, reviewerCode,tousseInstance.getSterilizationUser(),tousseInstance.getSterilizationUserCode(), + tousse.optString("validDate"), + tousse.optString("sterilizationDate"), + tousse.optBoolean("markTousse"), + tousseInstance.getOperationTime(), + false, + false, + isPrint,isReview,isTraceable, + tousse.optString("bigPackage"), + "", + tousse.optJSONArray("materialsJsonArray"), + tousse.optLong("foreignTousseApp_id"), + tousse.optString("supplierName"), + tousse.optInt("toolAmount"), + tousse.optInt("implantAmount"),tousse.optString("department"), + td.getPrintOrgSource(),0L,"","",objectDao,td.getBarcodePaperType(),tousse.optString("washOperator"),tousse.optString("washOperatorCode"), + weight,tousse.optString("remark"), tousseDefinition.getPrintAmountForPrint(objectDao),false,tousse.optString("isUrgentTousse"),0); + tousseInstanceManager.saveSplitForeignTousseName(tousseNameAlias); + tiJSON.put("logPrintTousse", true); + tiJSON.put("printCause", "装配打印"); + tiJSON.put("tousseDefinitionId", td.getId()); buff.append(tousseInstance.getBarcode()); - JSONObject tiJSON = new JSONObject(); - tiJSON.put("id", tousseInstance.getId()); - tiJSON.put("tousseName", tousseInstance.getTousseName()); - tiJSON.put("barcode", tousseInstance.getBarcode()); tiJSONArray.add(tiJSON); }