Index: ssts-datasync/src/main/java/com/forgon/disinfectsystem/inventorymanagement/model/HrpInvoicePlan.java =================================================================== diff -u -r40302 -r41569 --- ssts-datasync/src/main/java/com/forgon/disinfectsystem/inventorymanagement/model/HrpInvoicePlan.java (.../HrpInvoicePlan.java) (revision 40302) +++ ssts-datasync/src/main/java/com/forgon/disinfectsystem/inventorymanagement/model/HrpInvoicePlan.java (.../HrpInvoicePlan.java) (revision 41569) @@ -23,6 +23,10 @@ */ private String depart; /** + * 处理科室部门编码 + */ + private String handleDepartCoding; + /** * 申请人 */ private String applicant; @@ -381,5 +385,11 @@ public void setSurgicalDiagnosis(String surgicalDiagnosis) { this.surgicalDiagnosis = surgicalDiagnosis; } + public String getHandleDepartCoding() { + return handleDepartCoding; + } + public void setHandleDepartCoding(String handleDepartCoding) { + this.handleDepartCoding = handleDepartCoding; + } } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/service/OperationReservationManagerImpl.java =================================================================== diff -u -r41534 -r41569 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/service/OperationReservationManagerImpl.java (.../OperationReservationManagerImpl.java) (revision 41534) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/operationreservation/service/OperationReservationManagerImpl.java (.../OperationReservationManagerImpl.java) (revision 41569) @@ -613,7 +613,7 @@ //2.根据同步手术预约单VO的手术名称获得使用器械包明细集合 if(CollectionUtils.isNotEmpty(syncInvoicePlanList)){ HrpInvoicePlan syncOperationReservation = syncInvoicePlanList.get(0); - operationUseTousseItemList = getOperationeTousseItemByoperationName(syncOperationReservation.getOperationName()); + operationUseTousseItemList = getOperationeTousseItemByoperationName(syncOperationReservation.getOperationName(), syncOperationReservation.getDepart()); } return operationUseTousseItemList; } @@ -1142,15 +1142,18 @@ } operationReservation.setDepart(depart); operationReservation.setSettleAccountsDepart(depart); - //处理科室:默认为一级供应室的部门 - SupplyRoomConfig firstSupplyRoomConfig = supplyRoomConfigManager.getFirstSupplyRoomConfig(); - operationReservation.setHandleDepartCoding(firstSupplyRoomConfig.getOrgUnitCoding()); - operationReservation.setHandleDepart(firstSupplyRoomConfig.getOrgUnitName()); + //优先取接口传的处理科室,否则取一级供应室 + SupplyRoomConfig supplyRoomConfig = getSupplyRoomConfig(syncOperationReservation); + if(supplyRoomConfig == null){ + throw new RuntimeException(operationName +"手术预约单同步失败:获取不到处理科室!"); + } + operationReservation.setHandleDepartCoding(supplyRoomConfig.getOrgUnitCoding()); + operationReservation.setHandleDepart(supplyRoomConfig.getOrgUnitName()); // if(StringUtils.isBlank(depart) || StringUtils.isBlank(operationOrgUnit.getOrgUnitCoding())){ throw new RuntimeException(operationName +"手术预约单同步失败!:申请科室不能为空!"); } - if(StringUtils.isBlank(firstSupplyRoomConfig.getOrgUnitCoding()) || StringUtils.isBlank(firstSupplyRoomConfig.getOrgUnitName())){ + if(StringUtils.isBlank(operationReservation.getHandleDepartCoding()) || StringUtils.isBlank(operationReservation.getHandleDepart())){ throw new RuntimeException(operationName +"手术预约单同步失败!:处理科室不能为空!"); } if(StringUtils.isBlank(syncOperationReservation.getOperatingRoom())){ @@ -1216,6 +1219,29 @@ }; /** + * 获取手术预约单的处理科室 + * @param syncOperationReservation 手术预约单 + * @return 处理科室 + */ + private SupplyRoomConfig getSupplyRoomConfig(HrpInvoicePlan syncOperationReservation) { + if(StringUtils.isNotBlank(syncOperationReservation.getHandleDepartCoding())){ + //优先获取接口获取到的供应室ZSYKEQ-52 + SupplyRoomConfig supplyRoomConfig = supplyRoomConfigManager.getSupplyRoomConfigByOrgUnitCoding(syncOperationReservation.getHandleDepartCoding()); + if(supplyRoomConfig == null){ + throw new RuntimeException(syncOperationReservation.getOperationName() +"手术预约单同步失败!:获取不到科室编码为:'"+syncOperationReservation.getHandleDepartCoding()+"'的处理科室"); + } + return supplyRoomConfig; + }else{ + //处理科室:默认为一级供应室的部门 + SupplyRoomConfig supplyRoomConfig = supplyRoomConfigManager.getFirstSupplyRoomConfig(); + if(supplyRoomConfig == null){ + throw new RuntimeException(syncOperationReservation.getOperationName() +"手术预约单同步失败!:获取不到一级供应室"); + } + return supplyRoomConfig; + } + } + + /** * 保存更新:重复同步过的手术预约单号信息 * @param serialNumber * @param onoperationReservation @@ -1242,7 +1268,7 @@ throw new RuntimeException("手术名不能为空!"); } //1.根据同步手术预约单的手术名称获得使用器械包明细集合 - List operationUseTousseItemList = getOperationeTousseItemByoperationName(operation); + List operationUseTousseItemList = getOperationeTousseItemByoperationName(operation, operationReservation.getDepart()); List oldApplicationItems = operationReservation.getApplicationItems(); List tousseItems = new ArrayList(); //2.根据手术使用器械包明细创建申请单明细 @@ -1301,15 +1327,15 @@ * @param operation * @return */ - private List getOperationeTousseItemByoperationName(String syncOperationName){ + private List getOperationeTousseItemByoperationName(String syncOperationName, String depart){ List operationUseTousseItemList = null;// 手术使用器械包明细集合 //根据config.js:同步手术预约申请单时,手术名称是否忽略"+",默认为false //若false:把"手术1+手术2"拆成手术1,手术2分别获得器械包明细 //若为true:把"手术1+手术2"看成一个手术名获得器械包明细 if(CssdUtils.getSystemSetConfigByNameBool("syncOperation_OperationNameIgnoreConnector")){ - operationUseTousseItemList = getOperationeTousseItemByoperationName_IgnoreConnector(syncOperationName); + operationUseTousseItemList = getOperationeTousseItemByoperationName_IgnoreConnector(syncOperationName, depart); }else{ - operationUseTousseItemList = getOperationeTousseItemByoperationName_NeedSplit(syncOperationName); + operationUseTousseItemList = getOperationeTousseItemByoperationName_NeedSplit(syncOperationName, depart); } return operationUseTousseItemList; } @@ -1318,7 +1344,7 @@ * @param operation * @return */ - private List getOperationeTousseItemByoperationName_NeedSplit(String operation){ + private List getOperationeTousseItemByoperationName_NeedSplit(String operation, String depart){ List operationUseTousseItemList = null;// 手术使用器械包明细集合 if(StringUtils.isNotBlank(operation)){ OperationName operationNameObject = null; @@ -1350,13 +1376,13 @@ //1-1样式: 手术1【xxx】 if(operationName.indexOf("【") != -1 && operationName.indexOf("】") != -1){ String oName = StringUtils.substringBefore(operationName, "【");//手术名为【前 - operationNameObject = getOperationNameByName(operation,oName); + operationNameObject = getOperationNameByName(operation,oName,depart); if(null != operationNameObject){ operationUseTousseItemList = operationNameObject.getAllTousseItemsMergeByTousseDefinition(objectDao); } }else{ //1-2样式:手术1 - operationNameObject = getOperationNameByName(operation,operationName); + operationNameObject = getOperationNameByName(operation,operationName,depart); if(null != operationNameObject){ operationUseTousseItemList = operationNameObject.getAllTousseItemsMergeByTousseDefinition(objectDao); } @@ -1373,18 +1399,18 @@ //把去掉,号后的第一手术名称替换原来的 operationNameList.set(0, firstOName); } - OperationName firstONameObject = getOperationNameByName(operation,firstOName); + OperationName firstONameObject = getOperationNameByName(operation,firstOName,depart); //2-1、样式:手术1+手术2。若第一个手术名称的配置是要读取第二个手术名称的物品。则只获得第二手术使用器械包明细集合(常用物品与追加物品合并后的物品项) if(operationNameList.size() == 2 && firstONameObject != null && StringUtils.equals(Constants.STR_YES, firstONameObject.getUseSecondOperationItems())){ - OperationName secondONameObject = getOperationNameByName(operation,operationNameList.get(1)); + OperationName secondONameObject = getOperationNameByName(operation,operationNameList.get(1),depart); if(null != secondONameObject){ operationUseTousseItemList = secondONameObject.getAllTousseItemsMergeByTousseDefinition(objectDao); } }else{//2-2、 合拼多个手术名称下手术器械包明细下 相同的物品 for (int i = 0; i < operationNameList.size(); i++) { //通过手术名获得手术名称对象 - OperationName oNameObject = getOperationNameByName(operation,operationNameList.get(i)); + OperationName oNameObject = getOperationNameByName(operation,operationNameList.get(i),depart); if(null != oNameObject){ oNameObjectList.add(oNameObject); } @@ -1405,12 +1431,12 @@ * @param operationName 需要获取对象的手术名 * @return */ - private OperationName getOperationNameByName(String operation,String operationName){ + private OperationName getOperationNameByName(String operation,String operationName, String depart){ OperationName operationNameObject = (OperationName)objectDao.getByProperty(OperationName.class.getSimpleName(), "operationName",operationName ); if(null == operationNameObject){ //根据confjs配置:同步手术预约申请单时,若匹配不到手术名称定义,是否新建手术名称定义,默认为false。 if(CssdUtils.getSystemSetConfigByNameBool("syncOperation_BuildNewOperationName")){ - syncSaveOperationName(operationName); + syncSaveOperationName(operationName, depart); } //根据confjs配置:同步手术预约申请单时,若有匹配不到的手术名,是否允许同步:默认为false. if(CssdUtils.getSystemSetConfigByNameBool("syncOperation_AllowSyncWhenAnyNoMatchingOperationName")){ @@ -1457,7 +1483,7 @@ * @param syncOperationName * @return */ - private List getOperationeTousseItemByoperationName_IgnoreConnector(String syncOperationName){ + private List getOperationeTousseItemByoperationName_IgnoreConnector(String syncOperationName, String depart){ List operationUseTousseItemList = null;// 手术使用器械包明细集合 if(StringUtils.isNotBlank(syncOperationName)){ //1、查询系统是否有该手术名称定义 @@ -1469,7 +1495,7 @@ //根据confjs配置:同步手术预约申请单时,若匹配不到手术名称定义,是否新建手术名称定义,默认为false。 if(CssdUtils.getSystemSetConfigByNameBool("syncOperation_BuildNewOperationName")){ //新建手术名称定义 - syncSaveOperationName(syncOperationName); + syncSaveOperationName(syncOperationName, depart); //根据confjs配置:同步手术预约申请单时,若有匹配不到的手术名,是否允许同步:默认为false. if(CssdUtils.getSystemSetConfigByNameBool("syncOperation_AllowSyncWhenAnyNoMatchingOperationName")){ return null; @@ -1485,9 +1511,11 @@ * 根据同步手术名称新建手术名称定义 * @param syncOperationName */ - private void syncSaveOperationName(String syncOperationName){ + private void syncSaveOperationName(String syncOperationName, String depart){ //所属科室:通过在config.js里面设科室名称获得 - String depart = CssdUtils.getSystemSetConfigByName("operationReservationDepartName"); + if(StringUtils.isBlank(depart)){ + depart = CssdUtils.getSystemSetConfigByName("operationReservationDepartName"); + } OrgUnit operationOrgUnit = (OrgUnit)objectDao.getBySql(OrgUnit.class.getSimpleName(), "where name='" + depart + "'"); if(null != operationOrgUnit){ String orgUnitCoding = operationOrgUnit.getOrgUnitCoding();//科室编码 Index: ssts-web/src/main/webapp/disinfectsystem/config/zsykzx/interfaces/mybatis/SyncOperationReservation_Mapper.xml =================================================================== diff -u -r41534 -r41569 --- ssts-web/src/main/webapp/disinfectsystem/config/zsykzx/interfaces/mybatis/SyncOperationReservation_Mapper.xml (.../SyncOperationReservation_Mapper.xml) (revision 41534) +++ ssts-web/src/main/webapp/disinfectsystem/config/zsykzx/interfaces/mybatis/SyncOperationReservation_Mapper.xml (.../SyncOperationReservation_Mapper.xml) (revision 41569) @@ -11,7 +11,7 @@ - + @@ -21,13 +21,17 @@ + +