riku
2025-07-02 3013b813e5df6977c0be921928f73b1a3adde290
app/src/main/java/cn/flightfeather/thirdappmodule/module/inspection/MenuCameraViewModel.kt
@@ -26,7 +26,7 @@
    private val inspectionRepository = InspectionRepository()
    private val problemRepository = ProblemRepository()
    private val commonRepository = CommonRepository()
    private val commonRepository = CommonRepository.instance
    //常规记录图片
    val routineRecordList = MutableLiveData<ArrayList<Mediafile>>().apply { value = ArrayList() }
@@ -38,12 +38,6 @@
    val fileList = MutableLiveData<MutableList<MediaData>>().apply { value = mutableListOf() }
    private var loadedCount = 0
    private val dataSet = listOf(
            Pair(MediaFileType.RoutineRecord, routineRecordList),
            Pair(MediaFileType.Nameplate, nameplateList),
            Pair(MediaFileType.MonitorDevice, monitorDeviceList)
    )
    /**
     * 获取任意拍照图片
     */
@@ -52,19 +46,19 @@
            override fun onSuccess(types: List<MediaFileType>?) {
                fileList.value?.clear()
                loadedCount = 0
                types?.forEachWithIndex { i, type ->
                    inspectionRepository.getMediaFile(inspectionId, type.value, object : ResultCallBack<ArrayList<Mediafile>> {
                types?.forEach { t ->
                    inspectionRepository.getMediaFile(inspectionId, t.value, object : ResultCallBack<ArrayList<Mediafile>> {
                        override fun onSuccess(result: ArrayList<Mediafile>?) {
                            commonRepository.getAlias(sceneTypeId, type, object : ResultCallBack<String> {
                            commonRepository.getAlias(sceneTypeId, t.value, object : ResultCallBack<String> {
                                override fun onSuccess(alias: String?) {
                                    result?.let {
                                        fileList.value?.add(MediaData().apply {
                                            this.type = type
                                            this.type = t
                                            this.alias = if (alias.isNullOrBlank()) null else alias
                                            dataList = it
                                            dataList.add(0, Mediafile())
                                        })
                                        onMediaFileGet(types.size, sceneTypeId)
                                        onMediaFileGet(types.size, types)
                                    }
                                }
@@ -85,11 +79,6 @@
            }
        })
        dataSet.forEach { p ->
        }
    }
    /**
@@ -121,43 +110,54 @@
        })
    }
    private fun onMediaFileGet(total: Int, sceneTypeId: Int) {
    /**
     * 将任意拍的结果按照给定的分类顺序排列
     */
    private fun onMediaFileGet(total: Int, types: List<MediaFileType>) {
        loadedCount++
        // 当每种类型的数据都获取完毕后,进行重排序操作
        if (loadedCount == total) {
            val list = fileList.value?.sortedBy {
                it.type?.value
            }?.toMutableList() ?: mutableListOf()
            if (sceneTypeId == SceneType.Construction.value
                    || sceneTypeId == SceneType.Wharf.value
                    || sceneTypeId == SceneType.MixingPlant.value
                    || sceneTypeId == SceneType.StorageYard.value) {
                fileList.value?.clear()
                for (i in list.indices) {
                    if (list[i].type == MediaFileType.RoutineRecord) {
                        fileList.value?.add(list[i])
                        list.removeAt(i)
                        break
                    }
                }
                for (i in list.indices) {
                    if (list[i].type == MediaFileType.MonitorDevice) {
                        fileList.value?.add(list[i])
                        list.removeAt(i)
                        break
                    }
                }
                for (i in list.indices) {
                    if (list[i].type == MediaFileType.Nameplate) {
                        fileList.value?.add(list[i])
                        list.removeAt(i)
                        break
                    }
                }
                fileList.value?.addAll(list)
                fileList.value = fileList.value
            } else {
                fileList.value = list
            val tempList = mutableListOf<MediaData>()
            types.forEach { t ->
                fileList.value?.find { it.type?.value == t.value }?.let { tempList.add(it) }
            }
            fileList.value = tempList
//            val list = fileList.value?.sortedBy {
//                it.type?.value
//            }?.toMutableList() ?: mutableListOf()
//            if (sceneTypeId == SceneType.Construction.value
//                    || sceneTypeId == SceneType.Wharf.value
//                    || sceneTypeId == SceneType.MixingPlant.value
//                    || sceneTypeId == SceneType.StorageYard.value) {
//                fileList.value?.clear()
//                for (i in list.indices) {
//                    if (list[i].type == MediaFileType.RoutineRecord) {
//                        fileList.value?.add(list[i])
//                        list.removeAt(i)
//                        break
//                    }
//                }
//                for (i in list.indices) {
//                    if (list[i].type == MediaFileType.MonitorDevice) {
//                        fileList.value?.add(list[i])
//                        list.removeAt(i)
//                        break
//                    }
//                }
//                for (i in list.indices) {
//                    if (list[i].type == MediaFileType.Nameplate) {
//                        fileList.value?.add(list[i])
//                        list.removeAt(i)
//                        break
//                    }
//                }
//                fileList.value?.addAll(list)
//                fileList.value = fileList.value
//            } else {
//                fileList.value = list
//            }
        }
    }