From 253f680fb9666751e0f9a8e5e8f2f9e3eb1894e3 Mon Sep 17 00:00:00 2001
From: 18034727885 <973609879@qq.com>
Date: 星期五, 26 六月 2026 14:47:00 +0800
Subject: [PATCH] 修复问题

---
 app/src/main/java/com/example/smart/ui/project/ProjectDetailsActivity.kt |   49 +++++++++++++++---------
 app/src/main/java/com/example/smart/ui/project/bean/TaskDetailInfo.kt    |   25 ++++++++----
 basecore/src/main/java/com/example/basecore/amap/ILocationCallBack.kt    |    5 ++
 basecore/src/main/java/com/example/basecore/amap/LocationProvider.java   |    1 
 4 files changed, 53 insertions(+), 27 deletions(-)

diff --git a/app/src/main/java/com/example/smart/ui/project/ProjectDetailsActivity.kt b/app/src/main/java/com/example/smart/ui/project/ProjectDetailsActivity.kt
index 2ae2205..1633e71 100644
--- a/app/src/main/java/com/example/smart/ui/project/ProjectDetailsActivity.kt
+++ b/app/src/main/java/com/example/smart/ui/project/ProjectDetailsActivity.kt
@@ -10,28 +10,22 @@
 import android.widget.ImageView
 import androidx.activity.viewModels
 import androidx.core.app.ActivityCompat
-import androidx.fragment.app.viewModels
+import com.amap.api.location.AMapLocation
 import com.example.basecore.BaseBindingActivity
 import com.example.basecore.amap.ILocationCallBack
 import com.example.basecore.amap.LocationProvider
 import com.example.basecore.util.SchemeUtils
-import com.example.basecore.util.ToastUtils
 import com.example.basecore.util.dp2px
-import com.example.smart.R
-import com.example.smart.databinding.ActivityProjectDetailsBinding
-import com.example.smart.ui.options.device.RequestDeviceActivity
-import com.example.smart.ui.project.popup.ProjectDetailsPopupWindow
-import com.example.smart.ui.project.provider.ProjectPageAdapter
-import com.example.smart.util.projectEventScheme
-import com.example.smart.widget.dialog.CommonDialog
-import com.example.smart.widget.dialog.LoadingDialog
-import com.google.android.material.tabs.TabLayoutMediator
 import com.example.basecore.util.showCenterToast
 import com.example.basecore.util.showOnlyToast
 import com.example.basecore.util.startAct
 import com.example.basecore.util.toast
+import com.example.smart.R
+import com.example.smart.databinding.ActivityProjectDetailsBinding
 import com.example.smart.enumlist.CheckTaskState
 import com.example.smart.ui.exclude.ExcludeActivity
+import com.example.smart.ui.options.device.RequestDeviceActivity
+import com.example.smart.ui.project.bean.AddressInfo
 import com.example.smart.ui.project.bean.TaskDetailInfo
 import com.example.smart.ui.project.check.CheckViewModel
 import com.example.smart.ui.project.check.EditDialog
@@ -39,9 +33,13 @@
 import com.example.smart.ui.project.check.bean.CheckRefresh
 import com.example.smart.ui.project.frag.ProjectParam
 import com.example.smart.ui.project.onduty.PostListActivity
-import com.example.smart.ui.project.onduty.bean.OnDutyBean
-import com.example.smart.util.createWorkScheme
+import com.example.smart.ui.project.popup.ProjectDetailsPopupWindow
+import com.example.smart.ui.project.provider.ProjectPageAdapter
+import com.example.smart.util.projectEventScheme
 import com.example.smart.util.signProject
+import com.example.smart.widget.dialog.CommonDialog
+import com.example.smart.widget.dialog.LoadingDialog
+import com.google.android.material.tabs.TabLayoutMediator
 import org.greenrobot.eventbus.EventBus
 
 class ProjectDetailsActivity : BaseBindingActivity() {
@@ -351,24 +349,37 @@
 
     private fun onGenerateLocation() {
         mLocationProvider.getLocation(object : ILocationCallBack {
-
-            override fun onLocationSuccess(address: String, lat: Double, lon: Double) {
+            override fun onLocationSuccess(aMapLocation: AMapLocation) {
+                super.onLocationSuccess(aMapLocation)
                 binding.commonLayout.post {
-                    if (TextUtils.isEmpty(address)) {
+                    if (TextUtils.isEmpty(aMapLocation.address)) {
                         toast("位置信息获取失败,请重试...")
                         return@post
                     }
                     if (taskDetailInfo == null) {
                         return@post
                     }
-                    taskDetailInfo?.location = address
+                    taskDetailInfo?.apply {
+                        projectId = taskDetailInfo!!.project.id.toString()
+                        addressInfo = AddressInfo(
+                            province = aMapLocation.province,
+                            city = aMapLocation.city,
+                            district = aMapLocation.district,
+                            detail = aMapLocation.address,
+                            lonLat = "${aMapLocation.longitude},${aMapLocation.latitude}"
+                        )
+                    }
+                    taskDetailInfo?.location = aMapLocation.address
 
                     val gps = ArrayList<Double>()
-                    gps.add(lat)
-                    gps.add(lon)
+                    gps.add(aMapLocation.latitude)
+                    gps.add(aMapLocation.longitude)
                     taskDetailInfo?.gps = gps
                     viewModel.editTask(taskDetailInfo!!)
                 }
+            }
+
+            override fun onLocationSuccess(address: String, lat: Double, lon: Double) {
 
             }
 
diff --git a/app/src/main/java/com/example/smart/ui/project/bean/TaskDetailInfo.kt b/app/src/main/java/com/example/smart/ui/project/bean/TaskDetailInfo.kt
index 8e74879..b1897f4 100644
--- a/app/src/main/java/com/example/smart/ui/project/bean/TaskDetailInfo.kt
+++ b/app/src/main/java/com/example/smart/ui/project/bean/TaskDetailInfo.kt
@@ -3,7 +3,6 @@
 import androidx.annotation.Keep
 import com.example.smart.bean.EntityRef
 import com.example.smart.enumlist.CheckTaskState
-import org.w3c.dom.Entity
 
 /**
  * @author: dai hang
@@ -15,20 +14,22 @@
     val id: Int,
     val plan: EntityRef,
     val project: EntityRef,
-    val client:EntityRef?,
+    val client: EntityRef?,
     val state: CheckTaskState,
-    val assemblePlace : String,
+    val assemblePlace: String,
     val date: String,
     var location: String,
-    val createTime:String,
-    val updateTime:String,
+    val createTime: String,
+    val updateTime: String,
     var gps: List<Double>,
     val creator: EntityRef,
     val groupLeaders: List<EntityRef>,
     val groupMembers: List<EntityRef>,
     val drivers: List<EntityRef>,
-    val cars: List<EntityRef>
-){
+    val cars: List<EntityRef>,
+    var addressInfo: AddressInfo?=null,
+    var projectId: String?=null,
+) {
     // 判定是否关闭的函数
     fun isClosed(): Boolean {
         return !(state == CheckTaskState.Init
@@ -37,4 +38,12 @@
                 || state == CheckTaskState.Rejected
                 || state == CheckTaskState.Reviewing)
     }
-}
\ No newline at end of file
+}
+
+data class AddressInfo(
+    val province: String? = null,
+    val city: String? = null,
+    val district: String? = null,
+    val detail: String? = null,
+    var lonLat: String?=null,
+)
\ No newline at end of file
diff --git a/basecore/src/main/java/com/example/basecore/amap/ILocationCallBack.kt b/basecore/src/main/java/com/example/basecore/amap/ILocationCallBack.kt
index 17d1abb..950f318 100644
--- a/basecore/src/main/java/com/example/basecore/amap/ILocationCallBack.kt
+++ b/basecore/src/main/java/com/example/basecore/amap/ILocationCallBack.kt
@@ -1,11 +1,16 @@
 package com.example.basecore.amap
 
+import com.amap.api.location.AMapLocation
+
 /**
  * @author: dai hang
  * @data: 2024/3/20 15:32
  * @description:
  */
 interface ILocationCallBack {
+    fun onLocationSuccess(aMapLocation: AMapLocation) {
+    }
+
     fun onLocationSuccess(address: String, lat: Double, lon: Double)
 
     fun onLocationFailed(reason: String)
diff --git a/basecore/src/main/java/com/example/basecore/amap/LocationProvider.java b/basecore/src/main/java/com/example/basecore/amap/LocationProvider.java
index c10425f..3a645f2 100644
--- a/basecore/src/main/java/com/example/basecore/amap/LocationProvider.java
+++ b/basecore/src/main/java/com/example/basecore/amap/LocationProvider.java
@@ -64,6 +64,7 @@
             @Override
             public void onLocationChanged(AMapLocation location) {
                 if (location.getErrorCode() == 0) {
+                    callBack.onLocationSuccess(location);
                     callBack.onLocationSuccess(location.getAddress(), location.getLatitude(), location.getLongitude());
                 } else  {
                     callBack.onLocationFailed(location.getErrorInfo());

--
Gitblit v1.7.1