Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java =================================================================== diff -u -r36892 -r36900 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 36892) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 36900) @@ -7003,11 +7003,13 @@ } String defaultSterilisation = sterilisationList.get(0).getSterilisation(); //默认任务组 - List taskGroupList = taskGroupManager.getByProperty("departCode", "JLK"); + /*List taskGroupList = taskGroupManager.getByProperty("departCode", "JLK"); if(CollectionUtils.isEmpty(taskGroupList)){ throw new SystemException("任务组设置不存在"); - } - String defaultTaskGroup = taskGroupList.get(0).getTaskGroupName(); + }*/ + String defaultTaskGroup = "聚力康供应室任务组"; + //根据名称查询祖先包定义 + List tousseAncestorTDList = loadTousseAncestorTousseDefinition(tousseDefinitionList); for (TousseDefinition tousseDefinition : tousseDefinitionList) { TousseDefinitionParameterDto tdParameterDto = buildTousseDefinitionParameterDto(tousseDefinition, inventorySerialNumberMdMap); tousseDefinition.setMaterialInstances(null); @@ -7023,12 +7025,79 @@ }else{ //新建的包定义只有名称、外部编码、包类型、供应商属性,其它属性需要设置默认值 setJLKTousseDefinitionDefalutValue(tousseDefinition, defaultPackageType, defaultPackageSize, defaultSterilisation, defaultTaskGroup); + //获取同名的祖先包定义 + TousseDefinition ancestorTD = getTousseAncestorTousseDefinitionFromTDListByName(tousseDefinition, tousseAncestorTDList); + if(ancestorTD != null){ + tousseDefinition.setForDisplay(false); + tousseDefinition.setAncestorID(ancestorTD.getId()); + } } - this.saveOrUpdateTousseDefinition(origineTd, tousseDefinition, tdParameterDto); + if(tousseDefinition.getForDisplay()){ + //祖先包定义的保存方式 + this.saveOrUpdateTousseDefinition(origineTd, tousseDefinition, tdParameterDto); + }else{ + //非祖先包定义的保存方式 + this.saveTousseDefinition(tousseDefinition, tdParameterDto.getMaterialDefinitionConfigResult(), tousseDefinition.getAncestorID(), TousseDefinition.UPDATE_MATERIAL_DISPOSABLE_MODE_BOTH, null); + } } } /** + * 根据名称查询消毒物品和外来器械包定义的祖先包定义(外来器械包还需要根据供应商判断) + * @param tousseDefinition + * @param tousseAncestorTDList + * @return + */ + private TousseDefinition getTousseAncestorTousseDefinitionFromTDListByName(TousseDefinition tousseDefinition, List tousseAncestorTDList) { + if(tousseDefinition == null || CollectionUtils.isEmpty(tousseAncestorTDList)){ + return null; + } + for (TousseDefinition td : tousseAncestorTDList) { + if(StringUtils.equals(td.getName(), tousseDefinition.getName()) && td.getForDisplay()){ + if(tousseDefinition.isForeignTousse() + && td.isForeignTousse() + && StringUtils.equals(StringUtils.defaultString(td.getSupplierName()), StringUtils.defaultString(tousseDefinition.getSupplierName()))){ + //同名、供应商相同的外来器械包 + return td; + }else if(tousseDefinition.isDisinfection() && td.isDisinfection()){ + //同名的消毒物品 + return td; + } + } + } + return null; + } + + /** + * 根据名称查询消毒物品和外来器械包定义的祖先包定义(外来器械包还需要根据供应商判断) + * @param tousseDefinitionList + * @return + */ + @SuppressWarnings("unchecked") + private List loadTousseAncestorTousseDefinition(List tousseDefinitionList) { + List ancestorTDList = new ArrayList(); + if(CollectionUtils.isEmpty(tousseDefinitionList)){ + return ancestorTDList; + } + Set disinfectionOrForeignTousseName = new HashSet(); + for (TousseDefinition td : tousseDefinitionList) { + if(td.isDisinfection() || td.isForeignTousse()){ + disinfectionOrForeignTousseName.add(td.getName()); + } + } + if(CollectionUtils.isEmpty(disinfectionOrForeignTousseName)){ + return ancestorTDList; + } + String hql = String.format("select po from %s po where po.forDisplay = true and %s", TousseDefinition.class.getSimpleName(), SqlUtils.getStringFieldInLargeCollectionsPredicate("po.name", disinfectionOrForeignTousseName)); + List tdList = objectDao.findByHql(hql); + if(CollectionUtils.isNotEmpty(tdList)){ + return tdList; + } + return ancestorTDList; + } + + + /** * 聚力康推送的包定义只有名称、外部编码、包类型、供应商属性,其它属性需要设置默认值 * @param tousseDefinition */ @@ -7156,7 +7225,7 @@ if(CollectionUtils.isEmpty(externalCodeSet)){ return dbExternalCodeTdMap; } - String sql = String.format("select po from %s po where po.forDisplay = true and %s ", + String sql = String.format("select po from %s po where %s ", TousseDefinition.class.getSimpleName(), SqlUtils.getStringFieldInLargeCollectionsPredicate("po.externalCode", externalCodeSet)); List list = objectDao.findByHql(sql);