diff --git a/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt b/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt index 4a273c82..11adb7c2 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt @@ -21,6 +21,7 @@ import com.navinfo.omqs.Constant.Companion.installTaskid import com.navinfo.omqs.bean.ImportConfig import com.navinfo.omqs.db.deep.LinkList import com.navinfo.omqs.hilt.OMDBDataBaseHiltFactory +import com.navinfo.omqs.util.CMLog import dagger.assisted.Assisted import dagger.assisted.AssistedInject import io.realm.Realm @@ -210,623 +211,514 @@ class ImportOMDBHelper @AssistedInject constructor( // 遍历解压后的文件,读取该数据返回 // Log.d("ImportOMDBHelper", "表解析===开始时间$dataImportTime===") - + CMLog.writeLogtoFile( + ImportOMDBHelper::class.java.name, + "importOmdbZipFile", + "开始" + ) for (importConfig in importConfigList) { for ((index, currentEntry) in importConfig.tableMap.entries.withIndex()) { processIndex += 1 -// Log.d( -// "ImportOMDBHelper", -// "表解析===开始时间$tableImportTime===${currentEntry.value.table}" -// ) -// Log.d( -// "ImportOMDBHelper", -// "表解析===processIndex${processIndex}====${processIndex}/${tableNum}" -// ) -// val listResult = mutableListOf() + val currentConfig = currentEntry.value + + CMLog.writeLogtoFile( + ImportOMDBHelper::class.java.name, + "importOmdbZipFile", + "${currentConfig.table}开始" + ) + val txtFile = unZipFiles.find { it.name == currentConfig.table } - if (txtFile != null) { - val fileReader = FileReader(txtFile) - val bufferedReader = BufferedReader(fileReader) - var line: String? = bufferedReader.readLine() - while (line != null) { - if (line == null || line.trim() == "") { - line = bufferedReader.readLine() - continue - } - elementIndex += 1 - dataIndex += 1 -// Log.d("ImportOMDBHelper", "解析第:${index + 1}行") - val map = gson.fromJson>( - line, object : TypeToken>() {}.type - ).toMutableMap() - map["qi_table"] = currentConfig.table - map["qi_name"] = currentConfig.name - map["qi_code"] = - if (currentConfig.code == 0) currentConfig.code else currentEntry.key - map["qi_zoomMin"] = currentConfig.zoomMin - map["qi_zoomMax"] = currentConfig.zoomMax + Log.e("qj", "开始遍历文件==${currentConfig.table}") + if (txtFile != null && txtFile.exists()) { + try { - // 先查询这个mesh下有没有数据,如果有则跳过即可 - val renderEntity = RenderEntity() - renderEntity.code = map["qi_code"].toString() - renderEntity.name = map["qi_name"].toString() - renderEntity.table = map["qi_table"].toString() - renderEntity.taskId = task.id - renderEntity.zoomMin = map["qi_zoomMin"].toString().toInt() - renderEntity.zoomMax = map["qi_zoomMax"].toString().toInt() + Log.e("qj", "开始遍历文件1") + val fileReader = FileReader(txtFile) + val bufferedReader = BufferedReader(fileReader) + var line: String? = bufferedReader.readLine() - // 在外层记录当前数据的linkPid - if (map.containsKey("linkPid")) { - renderEntity.linkPid = - map["linkPid"].toString().split(",")[0] - } else if (map.containsKey("linkList")) { - val linkList = map["linkList"].toString() - if (!linkList.isNullOrEmpty() && linkList != "null") { - val list: List = gson.fromJson( - linkList, - object : TypeToken>() {}.type - ) - renderEntity.linkPid = list[0].linkPid - } - } - - Log.e( - "jingo", - "安装数据 ${renderEntity.table} ${renderEntity.linkPid} ${elementIndex} ${insertIndex}" - ) - renderEntity.geometry = map["geometry"].toString() -// Log.d("ImportOMDBHelper", "解析===1处理3D") - // 其他数据插入到Properties中 - /* if (!currentConfig.is3D) { // 如果是非3d要素,则自动将Z轴坐标全部置为0 - val coordinates = - renderEntity.wkt?.coordinates?.map { coordinate -> - coordinate.z = 0.0 - coordinate - }?.toTypedArray() - var newGeometry: Geometry? = null - if (renderEntity.wkt?.geometryType == Geometry.TYPENAME_POINT) { - newGeometry = GeometryTools.createPoint( - coordinates!![0].x, - coordinates!![0].y - ) - } else if (renderEntity.wkt?.geometryType == Geometry.TYPENAME_LINESTRING) { - newGeometry = - GeometryTools.createLineString(coordinates) - } else if (renderEntity.wkt?.geometryType == Geometry.TYPENAME_POLYGON) { - newGeometry = - GeometryTools.createLineString(coordinates) - } - if (newGeometry != null) { - renderEntity.geometry = newGeometry.toString() - } - }*/ -// Log.d("ImportOMDBHelper", "解析===2处理3D") -// Log.d("ImportOMDBHelper", "解析===1处理属性") - for ((key, value) in map) { - when (value) { - is String -> renderEntity.properties[key] = value - is Int -> renderEntity.properties[key] = - value.toInt().toString() - - is Double -> renderEntity.properties[key] = - value.toDouble().toString() - - else -> renderEntity.properties[key] = value.toString() - } - } -// Log.d("ImportOMDBHelper", "解析===2处理属性") -// Log.d("ImportOMDBHelper", "解析===1处理name") - // 如果properties中不包含name,那么自动将要素名称添加进properties中 - if (!renderEntity.properties.containsKey("name")) { - renderEntity.properties["name"] = renderEntity.name; - } -// Log.d("ImportOMDBHelper", "解析===2处理name") -// Log.d("ImportOMDBHelper", "解析===1处理杆状物") - - if (currentConfig.filterData) { - when (renderEntity.code.toInt()) { - - DataCodeEnum.OMDB_POLE.code.toInt() -> { - //过滤树类型的杆状物,无需导入到数据库中 - val poleType = renderEntity.properties["poleType"] - if (poleType != null && poleType.toInt() == 2) { - line = bufferedReader.readLine() - continue - } - } - - DataCodeEnum.OMDB_LANE_MARK_BOUNDARYTYPE.code.toInt() -> { - val boundaryType = - renderEntity.properties["boundaryType"] - if (boundaryType != null) { - when (boundaryType.toInt()) { - 0, 1, 6, 8, 9 -> { - renderEntity.enable = 0 -// Log.e( -// "qj", -// "过滤不显示数据${renderEntity.table}" -// ) - line = bufferedReader.readLine() - continue - } - } - } - } - - DataCodeEnum.OMDB_RDBOUND_BOUNDARYTYPE.code.toInt() -> { - val boundaryType = - renderEntity.properties["boundaryType"] - if (boundaryType != null) { - when (boundaryType.toInt()) { - 0, 1, 3, 4, 5, 7, 9 -> { - renderEntity.enable = 0 -// Log.e( -// "qj", -// "过滤不显示数据${renderEntity.table}" -// ) - line = bufferedReader.readLine() - continue - } - } - } - } - - DataCodeEnum.OMDB_OBJECT_STOPLOCATION.code.toInt() -> { - val locationType = - renderEntity.properties["locationType"] - if (locationType != null) { - when (locationType.toInt()) { - 3, 4 -> { - renderEntity.enable = 0 -// Log.e( -// "qj", -// "过滤不显示数据${renderEntity.table}" -// ) - line = bufferedReader.readLine() - continue - } - } - } - } - - DataCodeEnum.OMDB_RESTRICTION.code.toInt() -> { - if (renderEntity.properties.containsKey("linkIn") && renderEntity.properties.containsKey( - "linkOut" - ) - ) { - val linkIn = renderEntity.properties["linkIn"] - val linkOut = renderEntity.properties["linkOut"] - if (linkIn != null && linkOut != null) { - val checkMsg = "$linkIn$linkOut" - if (resHashMap.containsKey(checkMsg)) { -// Log.e( -// "qj", -// "${renderEntity.name}==过滤交限linkin与linkout相同且存在多条数据" -// ) - line = bufferedReader.readLine() - continue - } else { - resHashMap[checkMsg] = renderEntity - } - } - } - } - } - - } - -// Log.d("ImportOMDBHelper", "解析===2处理杆状物") -// Log.d("ImportOMDBHelper", "解析===1任务路线匹配") - - //遍历判断只显示与任务Link相关的任务数据 - if (currentConfig.checkLinkId) { - - if (renderEntity.linkPid.isNotEmpty()) { - - val currentLinkPid = renderEntity.linkPid - -// Log.d( -// "ImportOMDBHelper", -// "解析===1任务路线匹配${currentLinkPid}" -// ) - - if (!currentLinkPid.isNullOrEmpty() && currentLinkPid != "null") { - - val list = currentLinkPid.split(",") - - if (list.isNotEmpty()) { - -// Log.d( -// "ImportOMDBHelper", -// "解析===1任务路线匹配${list.size}" -// ) - - m@ for (linkPid in list) { - if (hashMap.containsKey(linkPid.toLong())) { - renderEntity.enable = 1 -// Log.e( -// "qj", -// "${renderEntity.name}==包括任务link" -// ) - break@m - } - } - } - } - - } else if (renderEntity.code.toInt() == DataCodeEnum.OMDB_INTERSECTION.code.toInt()||renderEntity.code.toInt() == DataCodeEnum.OMDB_LANE_CONSTRUCTION.code.toInt() && renderEntity.properties.containsKey( - "linkList" - ) - ) { - - if (renderEntity.properties["linkList"] != null) { - -// Log.e( -// "qj", -// "linkList==开始${renderEntity.name}==${renderEntity.properties["linkList"]}}" -// ) - - val linkList = renderEntity.properties["linkList"] - - if (!linkList.isNullOrEmpty() && linkList != "null") { - -// Log.e( -// "qj", -// "linkList==${renderEntity.name}==${renderEntity.properties["linkList"]}}" -// ) - - val list: List = gson.fromJson( - linkList, - object : TypeToken>() {}.type - ) - - m@ for (link in list) { - if (hashMap.containsKey(link.linkPid.toLong())) { - renderEntity.enable = 1 -// Log.e( -// "qj", -// "${renderEntity.name}==包括任务link" -// ) - break@m - } - } - } - } - } else { - //不包括linkPid直接过滤 + while (line != null) { + if (line == null || line.trim() == "") { line = bufferedReader.readLine() continue } - //过滤掉非任务路线上的数据 - if (renderEntity.enable != 1) { -// Log.e( -// "qj", -// "${renderEntity.name}==过滤不包括任务路线上的数据" -// ) - line = bufferedReader.readLine() - continue + elementIndex += 1 + dataIndex += 1 + val map = gson.fromJson>( + line, object : TypeToken>() {}.type + ).toMutableMap() + map["qi_table"] = currentConfig.table + map["qi_name"] = currentConfig.name + map["qi_code"] = + if (currentConfig.code == 0) currentConfig.code else currentEntry.key + map["qi_zoomMin"] = currentConfig.zoomMin + map["qi_zoomMax"] = currentConfig.zoomMax + + // 先查询这个mesh下有没有数据,如果有则跳过即可 + val renderEntity = RenderEntity() + renderEntity.code = map["qi_code"].toString() + renderEntity.name = map["qi_name"].toString() + renderEntity.table = map["qi_table"].toString() + renderEntity.taskId = task.id + renderEntity.zoomMin = map["qi_zoomMin"].toString().toInt() + renderEntity.zoomMax = map["qi_zoomMax"].toString().toInt() + + Log.e( + "jingo", + "安装数据 ${renderEntity.table} ${renderEntity.linkPid} $elementIndex $insertIndex" + ) + + renderEntity.geometry = map["geometry"].toString() + Log.e("jingo", "map解析开始") + for ((key, value) in map) { + when (value) { + is String -> renderEntity.properties[key] = value + is Int -> renderEntity.properties[key] = + value.toInt().toString() + + is Double -> renderEntity.properties[key] = + value.toDouble().toString() + + else -> renderEntity.properties[key] = + value.toString() + } } - } else { - renderEntity.enable = 1 + // 如果properties中不包含name,那么自动将要素名称添加进properties中 + if (!renderEntity.properties.containsKey("name")) { + renderEntity.properties["name"] = renderEntity.name; + } - /* var geometry = GeometryTools.createGeometry(renderEntity.geometry) - if(multipLine.intersects(geometry)){ - renderEntity.enable = 1 - }else{ - val dis = multipLine.distance(GeometryTools.createGeometry(renderEntity.geometry)) - if(dis>36){ - continue - }else{ - renderEntity.enable = 1 - } - }*/ -// Log.e("qj", "${renderEntity.name}==不包括任务linkPid") - } -// Log.d("ImportOMDBHelper", "解析===2任务路线匹配") -// Log.d("ImportOMDBHelper", "解析===1预处理") + Log.e("jingo", "map解析结束") - if (currentConfig.catch) { - renderEntity.catchEnable = 1 - } else { - renderEntity.catchEnable = 0 - } - - // 对renderEntity做预处理后再保存 - val resultEntity = - importConfig.transformProperties(renderEntity, realm) -// Log.d("ImportOMDBHelper", "解析===2预处理") - if (resultEntity != null) { - -// Log.d("ImportOMDBHelper", "解析===1子code处理") - //对code编码需要特殊处理 存在多个属性值时,渲染优先级:SA>PA,存在多个属性值时,渲染优先级:FRONTAGE>MAIN_SIDE_A CCESS - - if (currentConfig.existSubCode) { + if (currentConfig.filterData) { when (renderEntity.code.toInt()) { - DataCodeEnum.OMDB_LINK_ATTRIBUTE.code.toInt() -> { -// Log.e("qj", "道路属性===0") + DataCodeEnum.OMDB_POLE.code.toInt() -> { + //过滤树类型的杆状物,无需导入到数据库中 + val poleType = + renderEntity.properties["poleType"] + if (poleType != null && poleType.toInt() == 2) { + line = bufferedReader.readLine() + continue + } + } - var type = renderEntity.properties["sa"] - - if (type != null && type == "1") { - renderEntity.code = - DataCodeEnum.OMDB_LINK_ATTRIBUTE_SA.code -// Log.e("qj", "道路属性===1") - } else { - type = renderEntity.properties["pa"] - if (type != null && type == "1") { - renderEntity.code = - DataCodeEnum.OMDB_LINK_ATTRIBUTE_PA.code -// Log.e("qj", "道路属性===2") - } else { - type = - renderEntity.properties["frontage"] - if (type != null && type == "1") { - renderEntity.code = - DataCodeEnum.OMDB_LINK_ATTRIBUTE_FORNTAGE.code - renderEntity.zoomMin = 15 - renderEntity.zoomMax = 17 -// Log.e("qj", "道路属性===3") - } else { - type = - renderEntity.properties["mainSideAccess"] - if (type != null && type == "1") { - renderEntity.code = - DataCodeEnum.OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS.code - renderEntity.zoomMin = 15 - renderEntity.zoomMax = 17 -// Log.e("qj", "道路属性===4") - } else { - renderEntity.enable = 0 - renderEntity.zoomMin = 15 - renderEntity.zoomMax = 17 -// Log.e( -// "qj", -// "过滤不显示数据${renderEntity.table}" -// ) -// Log.e("qj", "道路属性===5") - line = bufferedReader.readLine() - continue - } + DataCodeEnum.OMDB_LANE_MARK_BOUNDARYTYPE.code.toInt() -> { + val boundaryType = + renderEntity.properties["boundaryType"] + if (boundaryType != null) { + when (boundaryType.toInt()) { + 0, 1, 6, 8, 9 -> { + renderEntity.enable = 0 + line = bufferedReader.readLine() + continue } } } } - //桥 - DataCodeEnum.OMDB_BRIDGE.code.toInt() -> { - when (renderEntity.properties["bridgeType"]) { - "1" -> renderEntity.code = - DataCodeEnum.OMDB_BRIDGE_1.code - "2" -> renderEntity.code = - DataCodeEnum.OMDB_BRIDGE_2.code - // "3" -> renderEntity.code = DataCodeEnum.OMDB_BRIDGE_3.code - else -> DataCodeEnum.OMDB_BRIDGE.code - } - } - DataCodeEnum.OMDB_RAMP.code.toInt() -> { - /*匝道*/ - val formWay = - renderEntity.properties["formOfWay"] - if (formWay != null) { - when (formWay.toInt()) { - 93 -> renderEntity.code = - DataCodeEnum.OMDB_RAMP_1.code - - 98 -> renderEntity.code = - DataCodeEnum.OMDB_RAMP_2.code - - 99 -> renderEntity.code = - DataCodeEnum.OMDB_RAMP_3.code - - 100 -> renderEntity.code = - DataCodeEnum.OMDB_RAMP_4.code - - 102 -> renderEntity.code = - DataCodeEnum.OMDB_RAMP_5.code - - 103 -> renderEntity.code = - DataCodeEnum.OMDB_RAMP_6.code - - 104 -> renderEntity.code = - DataCodeEnum.OMDB_RAMP_7.code + DataCodeEnum.OMDB_RDBOUND_BOUNDARYTYPE.code.toInt() -> { + val boundaryType = + renderEntity.properties["boundaryType"] + if (boundaryType != null) { + when (boundaryType.toInt()) { + 0, 1, 3, 4, 5, 7, 9 -> { + renderEntity.enable = 0 + line = bufferedReader.readLine() + continue + } } } } - DataCodeEnum.OMDB_LINK_FORM1.code.toInt() -> { - /*道路形态1*/ - val formWay = - renderEntity.properties["formOfWay"] - if (formWay != null) { - when (formWay.toInt()) { - 35 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM1_1.code - - 37 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM1_2.code - - 38 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM1_3.code + DataCodeEnum.OMDB_OBJECT_STOPLOCATION.code.toInt() -> { + val locationType = + renderEntity.properties["locationType"] + if (locationType != null) { + when (locationType.toInt()) { + 3, 4 -> { + renderEntity.enable = 0 + line = bufferedReader.readLine() + continue + } } } } - DataCodeEnum.OMDB_LINK_FORM2.code.toInt() -> { -// Log.e( -// "qj", -// "道路形态2${renderEntity.properties["formOfWay"]}" -// ) - /*道路形态2*/ - val formWay = - renderEntity.properties["formOfWay"] - if (formWay != null) { - when (formWay.toInt()) { - 10 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_1.code + DataCodeEnum.OMDB_RESTRICTION.code.toInt() -> { + if (renderEntity.properties.containsKey("linkIn") && renderEntity.properties.containsKey( + "linkOut" + ) + ) { + val linkIn = + renderEntity.properties["linkIn"] + val linkOut = + renderEntity.properties["linkOut"] + if (linkIn != null && linkOut != null) { + val checkMsg = "$linkIn$linkOut" + if (resHashMap.containsKey(checkMsg)) { + line = bufferedReader.readLine() + continue + } else { + resHashMap[checkMsg] = renderEntity + } + } + } + } + } + } - 11 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_2.code + //遍历判断只显示与任务Link相关的任务数据 + if (currentConfig.checkLinkId) { - 17 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_3.code + if (renderEntity.linkPid.isNotEmpty()) { - 18 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_4.code + val currentLinkPid = renderEntity.linkPid - 20 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_5.code - 22 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_6.code + if (!currentLinkPid.isNullOrEmpty() && currentLinkPid != "null") { - 36 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_7.code + val list = currentLinkPid.split(",") - 52 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_8.code + if (list.isNotEmpty()) { - 53 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_9.code - - 54 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_10.code - - 60 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_11.code - - 84 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_12.code - - 85 -> renderEntity.code = - DataCodeEnum.OMDB_LINK_FORM2_13.code + m@ for (linkPid in list) { + if (hashMap.containsKey(linkPid.toLong())) { + renderEntity.enable = 1 + break@m + } } } } - DataCodeEnum.OMDB_LANE_CONSTRUCTION.code.toInt() -> { - //特殊处理空数据,渲染原则使用 - val startTime = - renderEntity.properties["startTime"] - if (startTime == null || startTime == "") { - renderEntity.properties["startTime"] = - "null" + } else if (renderEntity.code.toInt() == DataCodeEnum.OMDB_INTERSECTION.code.toInt() || renderEntity.code.toInt() == DataCodeEnum.OMDB_LANE_CONSTRUCTION.code.toInt() && renderEntity.properties.containsKey( + "linkList" + ) + ) { + + if (renderEntity.properties["linkList"] != null) { + + val linkList = + renderEntity.properties["linkList"] + + if (!linkList.isNullOrEmpty() && linkList != "null") { + + val list: List = gson.fromJson( + linkList, + object : + TypeToken>() {}.type + ) + + m@ for (link in list) { + if (hashMap.containsKey(link.linkPid.toLong())) { + renderEntity.enable = 1 + break@m + } + } + } + } + } else { + //不包括linkPid直接过滤 + line = bufferedReader.readLine() + continue + } + //过滤掉非任务路线上的数据 + if (renderEntity.enable != 1) { + line = bufferedReader.readLine() + continue + } + + } else { + renderEntity.enable = 1 + } + + if (currentConfig.catch) { + renderEntity.catchEnable = 1 + } else { + renderEntity.catchEnable = 0 + } + + var resultEntity = importConfig.transformProperties(renderEntity, realm) + + if (resultEntity != null) { + + if (currentConfig.existSubCode) { + when (renderEntity.code.toInt()) { + DataCodeEnum.OMDB_LINK_ATTRIBUTE.code.toInt() -> { + var type = renderEntity.properties["sa"] + + if (type != null && type == "1") { + renderEntity.code = + DataCodeEnum.OMDB_LINK_ATTRIBUTE_SA.code + } else { + type = renderEntity.properties["pa"] + if (type != null && type == "1") { + renderEntity.code = + DataCodeEnum.OMDB_LINK_ATTRIBUTE_PA.code + } else { + type = + renderEntity.properties["frontage"] + if (type != null && type == "1") { + renderEntity.code = + DataCodeEnum.OMDB_LINK_ATTRIBUTE_FORNTAGE.code + renderEntity.zoomMin = 15 + renderEntity.zoomMax = 17 + } else { + type = + renderEntity.properties["mainSideAccess"] + if (type != null && type == "1") { + renderEntity.code = + DataCodeEnum.OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS.code + renderEntity.zoomMin = 15 + renderEntity.zoomMax = 17 + } else { + renderEntity.enable = 0 + renderEntity.zoomMin = 15 + renderEntity.zoomMax = 17 + line = + bufferedReader.readLine() + continue + } + } + } + } + } + //桥 + DataCodeEnum.OMDB_BRIDGE.code.toInt() -> { + when (renderEntity.properties["bridgeType"]) { + "1" -> renderEntity.code = + DataCodeEnum.OMDB_BRIDGE_1.code + + "2" -> renderEntity.code = + DataCodeEnum.OMDB_BRIDGE_2.code + + else -> DataCodeEnum.OMDB_BRIDGE.code + } + } + + DataCodeEnum.OMDB_RAMP.code.toInt() -> { + //*匝道*//* + val formWay = + renderEntity.properties["formOfWay"] + if (formWay != null) { + when (formWay.toInt()) { + 93 -> renderEntity.code = + DataCodeEnum.OMDB_RAMP_1.code + + 98 -> renderEntity.code = + DataCodeEnum.OMDB_RAMP_2.code + + 99 -> renderEntity.code = + DataCodeEnum.OMDB_RAMP_3.code + + 100 -> renderEntity.code = + DataCodeEnum.OMDB_RAMP_4.code + + 102 -> renderEntity.code = + DataCodeEnum.OMDB_RAMP_5.code + + 103 -> renderEntity.code = + DataCodeEnum.OMDB_RAMP_6.code + + 104 -> renderEntity.code = + DataCodeEnum.OMDB_RAMP_7.code + } + } + } + + DataCodeEnum.OMDB_LINK_FORM1.code.toInt() -> { + //*道路形态1*//* + val formWay = + renderEntity.properties["formOfWay"] + if (formWay != null) { + when (formWay.toInt()) { + 35 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM1_1.code + + 37 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM1_2.code + + 38 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM1_3.code + } + } + } + + DataCodeEnum.OMDB_LINK_FORM2.code.toInt() -> { + //*道路形态2*//* + val formWay = + renderEntity.properties["formOfWay"] + if (formWay != null) { + when (formWay.toInt()) { + 10 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_1.code + + 11 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_2.code + + 17 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_3.code + + 18 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_4.code + + 20 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_5.code + + 22 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_6.code + + 36 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_7.code + + 52 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_8.code + + 53 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_9.code + + 54 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_10.code + + 60 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_11.code + + 84 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_12.code + + 85 -> renderEntity.code = + DataCodeEnum.OMDB_LINK_FORM2_13.code + } + } + } + + DataCodeEnum.OMDB_LANE_CONSTRUCTION.code.toInt() -> { + //特殊处理空数据,渲染原则使用 + val startTime = + renderEntity.properties["startTime"] + if (startTime == null || startTime == "") { + renderEntity.properties["startTime"] = + "null" + } + } + } + + if (renderEntity.table == DataCodeEnum.OMDB_NODE_FORM.name) {//特殊处理,因为code相同,使用表名判断 + //过滤不需要渲染的要素 + val formOfWay = + renderEntity.properties["formOfWay"] + if (formOfWay != null && formOfWay.toInt() == 30) { + renderEntity.enable = 2 + renderEntity.code = + DataCodeEnum.OMDB_NODE_FORM.code + } else { + line = bufferedReader.readLine() + continue + } + } else if (renderEntity.table == DataCodeEnum.OMDB_NODE_PA.name) {//特殊处理,因为code相同,使用表名判断 + //过滤不需要渲染的要素 + val attributeType = + renderEntity.properties["attributeType"] + if (attributeType != null && attributeType.toInt() == 30) { + renderEntity.enable = 2 + renderEntity.code = + DataCodeEnum.OMDB_NODE_PA.code + } else { + line = bufferedReader.readLine() + continue } } } - if (renderEntity.table == DataCodeEnum.OMDB_NODE_FORM.name) {//特殊处理,因为code相同,使用表名判断 - //过滤不需要渲染的要素 - val formOfWay = renderEntity.properties["formOfWay"] - if (formOfWay != null && formOfWay.toInt() == 30) { - renderEntity.enable = 2 - renderEntity.code = - DataCodeEnum.OMDB_NODE_FORM.code - } else { -// Log.e( -// "qj", -// "过滤不显示数据${renderEntity.table}" -// ) - line = bufferedReader.readLine() - continue - } - } else if (renderEntity.table == DataCodeEnum.OMDB_NODE_PA.name) {//特殊处理,因为code相同,使用表名判断 - //过滤不需要渲染的要素 - val attributeType = - renderEntity.properties["attributeType"] - if (attributeType != null && attributeType.toInt() == 30) { - renderEntity.enable = 2 - renderEntity.code = - DataCodeEnum.OMDB_NODE_PA.code - } else { -// Log.e( -// "qj", -// "过滤不显示数据${renderEntity.table}" -// ) - line = bufferedReader.readLine() - continue - } + ++insertIndex + + //移除该字段,减少数据量 + if (renderEntity.properties.containsKey("geometry")) { + renderEntity.properties.remove("geometry") } - } -// Log.d("ImportOMDBHelper", "解析===2子code处理") - ++insertIndex - Log.e("qj", "统计==${insertIndex}") - - //移除该字段,减少数据量 - if (renderEntity.properties.containsKey("geometry")) { - renderEntity.properties.remove("geometry") - } - - //移除该字段,减少数据量 - if (renderEntity.properties.containsKey("linkPid")) { - renderEntity.properties.remove("linkPid") - } - - // 如果当前解析的是OMDB_RD_LINK数据,将其缓存在预处理类中,以便后续处理其他要素时使用 - if (currentConfig.code == DataCodeEnum.OMDB_RD_LINK.code.toInt()) { - if (renderEntity.linkRelation == null) { - renderEntity.linkRelation = LinkRelation() + //移除该字段,减少数据量 + if (renderEntity.properties.containsKey("linkPid")) { + renderEntity.properties.remove("linkPid") } - renderEntity.linkRelation!!.linkPid = - renderEntity.linkPid - renderEntity.linkRelation!!.sNodeId = - renderEntity.properties["snodePid"] - renderEntity.linkRelation!!.eNodeId = - renderEntity.properties["enodePid"] - } - renderEntity.propertiesDb = StrZipUtil.compress( - gson.toJson(renderEntity.properties).toString() - ) - listRenderEntity.add(renderEntity) + // 如果当前解析的是OMDB_RD_LINK数据,将其缓存在预处理类中,以便后续处理其他要素时使用 + if (currentConfig.code == DataCodeEnum.OMDB_RD_LINK.code.toInt()) { + if (renderEntity.linkRelation == null) { + renderEntity.linkRelation = LinkRelation() + } + renderEntity.linkRelation!!.linkPid = + renderEntity.linkPid + renderEntity.linkRelation!!.sNodeId = + renderEntity.properties["snodePid"] + renderEntity.linkRelation!!.eNodeId = + renderEntity.properties["enodePid"] + } + + //去掉暂用控件较大的字段多余属性字段 + if (renderEntity.properties.containsKey("shapeList")) { + renderEntity.properties.remove("shapeList") + } + + var gsonStr = gson.toJson(renderEntity.properties).toString() + renderEntity.propertiesDb = StrZipUtil.compress(gsonStr) + + listRenderEntity.add(renderEntity) + } + + if (listRenderEntity.size > 50000) { + Log.e("jingo", "50000刷新") + realm.copyToRealmOrUpdate(listRenderEntity) + realm.commitTransaction() + realm.close() + listRenderEntity.clear() + insertIndex = 0 + realm = Realm.getInstance(currentInstallTaskConfig) + realm.beginTransaction() + } + line = bufferedReader.readLine() } - - if (listRenderEntity.size > 10000) { - Log.e( - "jingo", "10000刷新" - ) - realm.copyToRealm(listRenderEntity) - realm.commitTransaction() - realm.close() - listRenderEntity.clear() - insertIndex = 0 -// Realm.compactRealm(currentInstallTaskConfig) - realm = Realm.getInstance(currentInstallTaskConfig) - realm.beginTransaction() - } - line = bufferedReader.readLine() + bufferedReader.close() + } catch (e: Exception) { + CMLog.writeLogtoFile( + ImportOMDBHelper::class.java.name, + "importOmdbZipFile", + "${currentConfig.table}安装异常" + ) } - bufferedReader.close() + } else { + CMLog.writeLogtoFile( + ImportOMDBHelper::class.java.name, + "importOmdbZipFile", + "文件不存在" + ) } // 1个文件发送一次flow流 emit("${processIndex}/${tableNum}") -// Log.d("ImportOMDBHelper", "表解析===2${currentConfig.table}") -// Log.d( -// "ImportOMDBHelper", -// "表解析===结束用时时间${(System.currentTimeMillis() - tableImportTime)}===${currentEntry.value.table}===$elementIndex" -// ) + CMLog.writeLogtoFile( + ImportOMDBHelper::class.java.name, + "importOmdbZipFile", + "${currentConfig.table}结束==$elementIndex" + ) elementIndex = 0 -// tableImportTime = System.currentTimeMillis() - } } + CMLog.writeLogtoFile( + ImportOMDBHelper::class.java.name, + "importOmdbZipFile", + "结束===总量$dataIndex" + ) - realm.copyToRealm(listRenderEntity) + realm.copyToRealmOrUpdate(listRenderEntity) realm.commitTransaction() - realm.close() listRenderEntity.clear() -// Log.d( -// "ImportOMDBHelper", -// "表解析===结束用时时间${(System.currentTimeMillis() - dataImportTime)}===$dataIndex===插入$insertIndex" -// ) Log.e("qj", "安装结束") } catch (e: Exception) { if (realm.isInTransaction) { diff --git a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt index 871db6ee..c71508c0 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt @@ -740,9 +740,11 @@ class ImportPreProcess { // angleReference.renderEntityId = renderEntity.id angleReference.name = "${renderEntity.name}车道中线面" angleReference.table = renderEntity.table + Log.e("jingo", "几何转换开始") angleReference.geometry = - GeometryTools.createGeometry(renderEntity.geometry).buffer(0.000035) + GeometryTools.createGeometry(renderEntity.geometry).buffer(0.000010) .toString()//GeometryTools.computeLine(0.000035,0.000035,renderEntity.geometry) + Log.e("jingo", "几何转换结束") angleReference.properties["qi_table"] = renderEntity.table angleReference.properties["widthProperties"] = "3" angleReference.zoomMin = renderEntity.zoomMin @@ -750,9 +752,6 @@ class ImportPreProcess { angleReference.taskId = renderEntity.taskId angleReference.enable = renderEntity.enable val listResult = mutableListOf() - angleReference.propertiesDb = StrZipUtil.compress( - gson.toJson(angleReference.properties).toString() - ) listResult.add(angleReference) insertData(listResult) } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt index 67fac786..9e17469e 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt @@ -473,6 +473,71 @@ class TaskViewModel @Inject constructor( } } + /** + * 重新下载数据任务 + */ + fun resetDownload(context: Context, taskBean: TaskBean) { + val mDialog = FirstDialog(context) + mDialog.setTitle("提示?") + mDialog.setMessage("是否重置下载状态,请确认!") + mDialog.setPositiveButton( + "确定" + ) { dialog, _ -> + dialog.dismiss() + liveDataCloseTask.postValue(TaskDelStatus.TASK_DEL_STATUS_BEGIN) + viewModelScope.launch(Dispatchers.IO) { + //删除已下载的数据 + val fileTemp = + File("${Constant.DOWNLOAD_PATH}${taskBean.evaluationTaskName}_${taskBean.dataVersion}.zip") + if (fileTemp.exists()) { + fileTemp.delete() + } + val taskFileTemp = File(Constant.USER_DATA_PATH + "/${taskBean.id}") + //重命名 + if (taskFileTemp.exists()) { + /* var currentSelectTaskFolder = File(Constant.USER_DATA_PATH + "/${taskBean.id}") + var currentSelectTaskConfig = + RealmConfiguration.Builder().directory(currentSelectTaskFolder) + .name("OMQS.realm").encryptionKey(Constant.PASSWORD) + .allowQueriesOnUiThread(true) + .schemaVersion(2).build() + Realm.getInstance(currentSelectTaskConfig).executeTransaction { r -> + //删除已有所有数据 + r.delete(RenderEntity::class.java) + r.delete(ReferenceEntity::class.java) + } + Realm.getInstance(currentSelectTaskConfig).close()*/ + } + //将下载状态修改已下载 + val realm = realmOperateHelper.getRealmDefaultInstance() + taskBean.syncStatus = FileManager.Companion.FileUploadStatus.NONE + taskBean.status = FileManager.Companion.FileDownloadStatus.NONE + realm.beginTransaction() + realm.copyToRealmOrUpdate(taskBean) + realm.commitTransaction() + realm.close() + liveDataCloseTask.postValue(TaskDelStatus.TASK_DEL_STATUS_SUCCESS) + withContext(Dispatchers.Main) { + if (taskBean.id == currentSelectTaskBean?.id ?: 0) { + mapController.layerManagerHandler.updateOMDBVectorTileLayer() + } else { + setSelectTaskBean(taskBean) + } + realmOperateHelper.getRealmDefaultInstance().refresh() + //重新加载数据 + getLocalTaskList() + } + } + } + mDialog.setNegativeButton( + "取消" + ) { _, _ -> + liveDataCloseTask.postValue(TaskDelStatus.TASK_DEL_STATUS_CANCEL) + mDialog.dismiss() + } + mDialog.show() + } + /** * 关闭任务 */ @@ -484,7 +549,9 @@ class TaskViewModel @Inject constructor( "确定" ) { dialog, _ -> dialog.dismiss() + liveDataCloseTask.postValue(TaskDelStatus.TASK_DEL_STATUS_BEGIN) viewModelScope.launch(Dispatchers.IO) { + liveDataCloseTask.postValue(TaskDelStatus.TASK_DEL_STATUS_LOADING) val realm = realmOperateHelper.getRealmDefaultInstance() realm.executeTransaction { val objects = @@ -518,14 +585,14 @@ class TaskViewModel @Inject constructor( FileManager.checkOMDBFileInfo(item) } liveDataTaskList.postValue(taskList) - liveDataCloseTask.postValue(true) + liveDataCloseTask.postValue(TaskDelStatus.TASK_DEL_STATUS_SUCCESS) realm.close() } } mDialog.setNegativeButton( "取消" ) { _, _ -> - liveDataCloseTask.postValue(false) + liveDataCloseTask.postValue(TaskDelStatus.TASK_DEL_STATUS_CANCEL) mDialog.dismiss() } mDialog.show() diff --git a/vtm b/vtm index c046e788..9e0cc6dc 160000 --- a/vtm +++ b/vtm @@ -1 +1 @@ -Subproject commit c046e788f5c739612a31c308639fca2de639669a +Subproject commit 9e0cc6dcdce04d1082ed6459e8810d6329e8cfdc