18034727885
2026-04-15 7bc0929de16396ed06459872c8d0fb7cd7f30b0c
修复问题
7个文件已修改
86 ■■■■■ 已修改文件
app/src/main/java/com/xw/yunwei/net/WorkApi.kt 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/net/WorkRepository.kt 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/work/site/SiteErrorUploadActivity.kt 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/work/site/viewmodel/SiteErrorUploadVM.kt 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_picture_operation.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common/src/main/java/com/xw/common/utils/GlideEngine.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
gradle/wrapper/gradle-wrapper.properties 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/net/WorkApi.kt
@@ -137,5 +137,5 @@
    /* 现场情况上报 */
    @POST("operation/maintenance-app/api/v1/pointSituationReport/addPointSituationReport")
    fun addPointSituationReport(@Body params: Map<String, Any>): Call<HttpResponse<Any>>
    fun addPointSituationReport(@Body params: RequestBody): Call<HttpResponse<Any>>
}
app/src/main/java/com/xw/yunwei/net/WorkRepository.kt
@@ -6,6 +6,7 @@
import com.xw.yunwei.model.CheckRecordModel
import com.xw.yunwei.model.MaintainRecordModel
import com.xw.yunwei.model.SiteModel
import com.xw.yunwei.model.UploadModel
class WorkRepository(private val api: WorkApi) {
@@ -62,14 +63,15 @@
        work: Boolean,
        model: SiteModel,
        sceneDescription: String,
        scenePhoto: List<String>,//现场照片JSON数组
    ): Any? {
        scenePhoto: MutableList<UploadModel>,
    ): Boolean {
        val map = mapOf<String, Any>(
            "fieldSituation" to if (work) 1 else 2,//现场情况(1=正常,2=异常)
            "pointId" to model.id.toString(),//点位id
            "sceneDescription" to sceneDescription,//现场情况说明
            "scenePhoto" to GsonUtils.toJson(scenePhoto),
            "scenePhoto" to GsonUtils.toJson(scenePhoto),//现场照片JSON数组
        )
        return api.addPointSituationReport(map).interceptAwait()
        api.addPointSituationReport(getBody(map)).interceptAwait()
        return true
    }
}
app/src/main/java/com/xw/yunwei/ui/work/site/SiteErrorUploadActivity.kt
@@ -7,6 +7,7 @@
import androidx.core.widget.addTextChangedListener
import androidx.recyclerview.widget.GridLayoutManager
import com.xw.common.base.BaseActivity
import com.xw.common.utils.BindUtils.getUrl
import com.xw.common.utils.GlideEngine
import com.xw.yunwei.BR
import com.xw.yunwei.R
@@ -14,6 +15,7 @@
import com.xw.yunwei.model.SiteModel
import com.xw.yunwei.ui.work.site.adapter.PictureOperationAdapter
import com.xw.yunwei.ui.work.site.viewmodel.SiteErrorUploadVM
import org.json.JSONArray
class SiteErrorUploadActivity : BaseActivity<ActivitySiteErrorUploadBinding, SiteErrorUploadVM>() {
    companion object {
@@ -75,7 +77,7 @@
                R.drawable.shape_gray11_bg_4
            }
        )
        binding.tvWork.setTextColor(
        binding.tvError.setTextColor(
            ContextCompat.getColor(
                this,
                if (viewModel.working.value == false) {
@@ -97,7 +99,15 @@
    override fun setObservable() {
        super.setObservable()
        viewModel.model.observe(this) {
            GlideEngine.createGlideEngine().load(binding.ivPicture, it.pointPictures, 0, 0, 4f)
            var url = ""
            try {
                url = JSONArray(it.pointPictures).get(0).toString().getUrl()
            } catch (e: Exception) {
                e.printStackTrace()
            } finally {
                GlideEngine.createGlideEngine()
                    .load(binding.ivPicture, url, R.mipmap.img_site_bg, R.mipmap.img_site_bg, 4f)
            }
            binding.tvTitle.text = it.pointName
            binding.tvDetail.text = it.pointAddress
        }
app/src/main/java/com/xw/yunwei/ui/work/site/viewmodel/SiteErrorUploadVM.kt
@@ -5,6 +5,7 @@
import android.content.Context
import android.view.View
import androidx.core.net.toUri
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.MutableLiveData
import com.blankj.utilcode.util.UriUtils
import com.luck.picture.lib.basic.PictureSelector
@@ -14,11 +15,13 @@
import com.luck.picture.lib.interfaces.OnResultCallbackListener
import com.xw.common.CommonDialog
import com.xw.common.base.BaseViewModel
import com.xw.common.base.ShowImgListDialog
import com.xw.common.utils.GlideEngine
import com.xw.common.utils.PictureCompressEngine
import com.xw.common.utils.ToastUtilCommon
import com.xw.yunwei.R
import com.xw.yunwei.model.SiteModel
import com.xw.yunwei.model.UploadModel
import com.xw.yunwei.net.CommonRepository
import com.xw.yunwei.net.WorkRepository
import okhttp3.MediaType.Companion.toMediaType
@@ -57,7 +60,7 @@
        val list = operationPictures.value ?: mutableListOf()
        list.add(url)
        refreshPictures(list)
        operationPictures.postValue(list)
        operationPictures.postValue(list.toMutableList())
    }
    //移除图片
@@ -65,7 +68,7 @@
        val list = operationPictures.value ?: mutableListOf()
        list.removeAt(position)
        refreshPictures(list)
        operationPictures.postValue(list)
        operationPictures.postValue(list.toMutableList())
    }
    //刷新图片
@@ -83,6 +86,14 @@
        val element = list.elementAtOrNull(position) ?: return
        if (element.isEmpty()) {
            operatePictureFromDevice(context)
        } else {
            val backUp = list.toMutableList()
            backUp.removeIf { it.isEmpty() }
            ShowImgListDialog(
                context as FragmentActivity,
                backUp,
                position
            ).show()
        }
    }
@@ -99,7 +110,7 @@
        PictureSelector.create(context)
            .openGallery(SelectMimeType.ofImage())
            .setImageEngine(GlideEngine.createGlideEngine())
            .setMaxSelectNum(1)
            .setMaxSelectNum(pictureMax.value ?: 1)
            .setImageSpanCount(4)
            .isPreviewImage(true)
            .isDisplayCamera(false)
@@ -134,9 +145,8 @@
    }
    private fun uploadFile(files: MutableList<String>, succ: () -> Unit) {
        files.removeIf { it.isEmpty() }
        val result = files.find { !it.startsWith("http") }
    private fun uploadFile(files: MutableList<Pair<String, UploadModel?>>, succ: () -> Unit) {
        val result = files.find { it.second == null }
        if (result == null) {
            succ()
        } else {
@@ -145,13 +155,13 @@
                dismissDialog()
                isUploading = false
            }) {
                val file = File(result)
                val file = File(result.first)
                val fileRequestBody = file.asRequestBody("image/jpg".toMediaType())
                val mBuilder = MultipartBody.Builder()
                mBuilder.addFormDataPart("file", file.name, fileRequestBody)
                mBuilder.setType(MultipartBody.FORM)
                val data = commonRepository.uploadFile(mBuilder.build())
                files[files.indexOf(result)] = data?.url ?: ""
                files[files.indexOf(result)] = result.first to data
                uploadFile(files, succ)
            }
        }
@@ -170,25 +180,28 @@
        val list = operationPictures.value ?: mutableListOf()
        list.removeIf { it.isEmpty() }
        if (list.count { !it.startsWith("http") } > 0) {
            uploadFile(list) { submit(list) }
            val result = list.map { Pair<String, UploadModel?>(it, null) }.toMutableList()
            uploadFile(result) {
                result.removeIf { it.second == null }
                submit(result.map { it.second!! }.toMutableList())
            }
            return
        }
        submit(list)
        submit(mutableListOf())
    }
    //提交
    private fun submit(urls: MutableList<String>) {
    private fun submit(urls: MutableList<UploadModel>) {
        launchRequest {
            workRepository.addPointSituationReport(
                working.value!!,
                model.value!!,
                desc.value ?: "",
                urls
            )
                ?.let {
                    ToastUtilCommon.showSuc("提交成功")
                    finish()
                }
            ).let {
                ToastUtilCommon.showSuc("提交成功")
                finish()
            }
        }
    }
}
app/src/main/res/layout/item_picture_operation.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="@dimen/dp_5">
    android:layout_width="@dimen/dp_69"
    android:layout_height="@dimen/dp_69"
    android:padding="@dimen/dp_3">
    <ImageView
        android:id="@+id/iv_picture"
common/src/main/java/com/xw/common/utils/GlideEngine.java
@@ -3,6 +3,7 @@
import android.content.Context;
import android.widget.ImageView;
import androidx.annotation.DrawableRes;
import androidx.annotation.IdRes;
import androidx.annotation.NonNull;
@@ -115,7 +116,7 @@
     */
    public void load(@NonNull ImageView imageView,
                     String url,
                     @IdRes int error, @IdRes int placeHolder,
                     @DrawableRes int error, @DrawableRes int placeHolder,
                     float radius) {
        float value = radius * imageView.getContext().getResources().getDisplayMetrics().density;
        Glide.with(imageView)
gradle/wrapper/gradle-wrapper.properties
@@ -1,9 +1,9 @@
#Wed Feb 11 09:59:09 CST 2026
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionSha256Sum=a17ddd85a26b6a7f5ddb71ff8b05fc5104c0202c6e64782429790c933686c806
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
networkTimeout=10000
#distributionSha256Sum=a17ddd85a26b6a7f5ddb71ff8b05fc5104c0202c6e64782429790c933686c806
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.13-bin.zip
#networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists