Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/service/OperationReservationManagerImpl.java =================================================================== diff -u -r41569 -r41585 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/service/OperationReservationManagerImpl.java (.../OperationReservationManagerImpl.java) (revision 41569) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/service/OperationReservationManagerImpl.java (.../OperationReservationManagerImpl.java) (revision 41585) @@ -121,6 +121,11 @@ private InvoicePlanManager invoicePlanManager; + /** + * 联合手术名称的默认分隔符“+” + */ + private static final String DEFAULT_OPERARION_JOIN_SEPARATOR = "+"; + public void setInvoicePlanManager(InvoicePlanManager invoicePlanManager) { this.invoicePlanManager = invoicePlanManager; } @@ -1347,18 +1352,27 @@ private List getOperationeTousseItemByoperationName_NeedSplit(String operation, String depart){ List operationUseTousseItemList = null;// 手术使用器械包明细集合 if(StringUtils.isNotBlank(operation)){ + + //1、查询系统是否有该手术名称定义 + OperationName operationNameObj = (OperationName)objectDao.getByProperty(OperationName.class.getSimpleName(), "operationName", operation); + //2-1、若有该手术名称定义:则获取该定义下的所有的器械包明细(常用物品+追加物品) + if(null != operationNameObj){ + return operationNameObj.getAllTousseItemsMergeByTousseDefinition(objectDao); + } + OperationName operationNameObject = null; ListoperationNameList = new ArrayList(); String operationName = operation;//手术预约单手术名字 boolean isHaveSecondOperationName = false;//手术单手术名 是否由多个手术名合拼 //1、 如果手术名称包含"+"时则有多个手术名称 - if(operation.indexOf("+") != -1){ + String operationJoinSeparator = getOperationJoinSeparator(); + if(operation.indexOf(operationJoinSeparator) != -1){ //手术名通过"+"分割 - String[] operationArray = operationName.split("\\+"); + String[] operationArray = operationName.split("\\" + operationJoinSeparator); //2-1样式:手术1【+手术2】 if(operationArray.length == 2 && operationName.indexOf("【") != -1 && operationName.indexOf("】") != -1){ operationNameList.add(StringUtils.substringBefore(operationName, "【")); //第一手术名称 - operationNameList.add(StringUtils.substring(operationName,operation.indexOf("+")+1,operation.indexOf("】"))); //第二手术名称 + operationNameList.add(StringUtils.substring(operationName,operation.indexOf(operationJoinSeparator)+1,operation.indexOf("】"))); //第二手术名称 isHaveSecondOperationName = true; }//2-2样式:手术1+手术2+手术名3+。。。。 else if(operationArray.length >= 2){ @@ -1426,6 +1440,20 @@ } /** + * 获取联合手术名称间的分隔符,对于没有此operationJoinSeparator配置项的项目,则operationJoinSeparator的值设置为"+", + * @return 分隔符 + */ + private static String getOperationJoinSeparator() { + String operationReservationSettings = ConfigUtils.getSystemSetConfigByName("operationReservationSettings"); + if(StringUtils.isBlank(operationReservationSettings)){ + return DEFAULT_OPERARION_JOIN_SEPARATOR; + } + JSONObject operationReservationSettingsJson = JSONObject.fromObject(operationReservationSettings); + String operationJoinSeparator = operationReservationSettingsJson.optString("operationJoinSeparator"); + return StringUtils.defaultIfEmpty(operationJoinSeparator, DEFAULT_OPERARION_JOIN_SEPARATOR); + } + + /** * 根据手术名获取手术名对象 * @param operation 同步单的手术名(可能有拼接) * @param operationName 需要获取对象的手术名