Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManagerImpl.java =================================================================== diff -u -r41602 -r41661 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManagerImpl.java (.../DataSynchronizationManagerImpl.java) (revision 41602) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManagerImpl.java (.../DataSynchronizationManagerImpl.java) (revision 41661) @@ -2194,6 +2194,20 @@ orgUnitCodeSet.addAll(codeParentCodeMap.values()); Map orgUnitMap = getOrgUnitMapByCode(orgUnitCodeSet); Set errorParentCodingSet = new HashSet(); + //异常父节点编码默认值 + OrgUnit defaultParentOrgUnitForErrorParentOrgUnit = null; + if(config != null){ + JsonObject rootConfig = config.getAsJsonObject("同步组织机构"); + if(rootConfig != null && rootConfig.get("异常父节点编码默认值") != null){ + String defaultParentCodeForErrorParentCode = rootConfig.get("异常父节点编码默认值").getAsString(); + if(StringUtils.isNotBlank(defaultParentCodeForErrorParentCode)){ + defaultParentOrgUnitForErrorParentOrgUnit = orgUnitManager.getByCode(defaultParentCodeForErrorParentCode); + if(defaultParentOrgUnitForErrorParentOrgUnit == null){ + throw new RuntimeException("dataSyncConfig.json中的“异常父节点编码默认值”异常,不存在科室编码为" + defaultParentCodeForErrorParentCode + "的科室!"); + } + } + } + } for (OrgUnit orgUnit : savedOrgUnitList) { String parentCoding = codeParentCodeMap.get(orgUnitManager.getOrgForeignKeyForSync(orgUnit)); if(StringUtils.isBlank(parentCoding)){ @@ -2202,7 +2216,10 @@ THTreeNode parent = orgUnitMap.get(parentCoding); if(parent == null){ errorParentCodingSet.add(parentCoding); - continue; + if(defaultParentOrgUnitForErrorParentOrgUnit == null){ + continue; + } + parent = defaultParentOrgUnitForErrorParentOrgUnit; } THTreeNode THTreeNode = orgUnitMap.get(orgUnitManager.getOrgForeignKeyForSync(orgUnit)); if(THTreeNode == null){ @@ -2212,7 +2229,11 @@ objectDao.saveOrUpdate(THTreeNode); } if(CollectionUtils.isNotEmpty(errorParentCodingSet)){ - throw new RuntimeException("上级科室编码异常,科室不存在的异常上级科室编码:" + StringTools.join(errorParentCodingSet, ";")); + String log = "上级科室编码异常,科室不存在的异常上级科室编码:" + StringTools.join(errorParentCodingSet, ";"); + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_SYNC, Log.TYPE_QUERY, log); + if(defaultParentOrgUnitForErrorParentOrgUnit == null){ + throw new RuntimeException("上级科室编码异常,科室不存在的异常上级科室编码:" + StringTools.join(errorParentCodingSet, ";")); + } } } Index: ssts-web/src/main/webapp/disinfectsystem/config/gdsfybjy/interfaces/dataSyncConfig.json =================================================================== diff -u -r40302 -r41661 --- ssts-web/src/main/webapp/disinfectsystem/config/gdsfybjy/interfaces/dataSyncConfig.json (.../dataSyncConfig.json) (revision 40302) +++ ssts-web/src/main/webapp/disinfectsystem/config/gdsfybjy/interfaces/dataSyncConfig.json (.../dataSyncConfig.json) (revision 41661) @@ -2,7 +2,8 @@ "同步组织机构":{ "默认父节点的编码" : "0", "更新交集数据" : true, - "移除差集数据" : false + "移除差集数据" : false, + "异常父节点编码默认值" : "0" }, "同步用户":{ "默认父节点的编码" : "0",