From 1b81c61871be9f0316de4b2d0a3aedd0f07c409d Mon Sep 17 00:00:00 2001 From: chenglifeng Date: Mon, 28 Oct 2024 19:50:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B5=8B=E9=87=8F=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E3=80=81=E5=B7=A5=E7=A8=8B=E8=AE=A1=E9=87=8F=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=8E=A5=E5=8F=A3=E5=8F=8A=E9=A1=B5=E9=9D=A2=E8=B0=83?= =?UTF-8?q?=E6=95=B4=EF=BC=9B=E9=A1=B9=E7=9B=AE=E5=88=97=E8=A1=A8=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=BF=AE=E6=94=B9=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../logic/viewmodel/ControlNetViewModel.kt | 8 +- .../logic/viewmodel/ProjectViewModel.kt | 109 +++++++++++++++- .../com/project/survey/model/LoginBean.kt | 2 +- .../com/project/survey/model/MeasureBean.kt | 24 ++++ .../com/project/survey/model/PointEntry.kt | 20 +++ .../com/project/survey/model/ProjectBean.kt | 80 +++++++----- .../java/com/project/survey/network/Api.kt | 46 ++++++- .../project/survey/network/RetrofitClient.kt | 2 +- .../com/project/survey/ui/SplashActivity.kt | 2 +- .../survey/ui/approval/ApprovalActivity.kt | 2 +- .../project/survey/ui/home/HomeFragment.kt | 14 ++- .../CoordinateSystemContainerFragment.java | 2 +- .../pointlofting/record/RecordsActivity.java | 2 +- .../pointmeasure/PointMeasureListActivity.kt | 119 ++++++++++++------ .../pointmeasure/PointMeasureListFragment.kt | 38 +++--- .../adapter/PointMeasureListAdapter.kt | 23 ++-- .../survey/ui/project/ProjectListActivity.kt | 17 ++- .../survey/ui/project/ProjectListFragment.kt | 65 +++++----- .../java/com/project/survey/util/SPUtils.kt | 8 +- .../layout/activity_point_measure_list.xml | 61 ++------- app/src/main/res/layout/fragment_home.xml | 31 ++--- app/src/main/res/values/strings.xml | 2 + app/src/main/res/values/styles.xml | 3 +- 23 files changed, 466 insertions(+), 214 deletions(-) create mode 100644 app/src/main/java/com/project/survey/model/MeasureBean.kt create mode 100644 app/src/main/java/com/project/survey/model/PointEntry.kt diff --git a/app/src/main/java/com/project/survey/logic/viewmodel/ControlNetViewModel.kt b/app/src/main/java/com/project/survey/logic/viewmodel/ControlNetViewModel.kt index 093c581..c54bc3f 100644 --- a/app/src/main/java/com/project/survey/logic/viewmodel/ControlNetViewModel.kt +++ b/app/src/main/java/com/project/survey/logic/viewmodel/ControlNetViewModel.kt @@ -27,7 +27,7 @@ class ControlNetViewModel : BaseViewModel() { launch { val currentProject = SPUtils.getParcelable(SPConstants.CURRENT_PROJECT, ProjectBean::class.java) - val res = api.fetchSpecialControlNetworkList(currentProject?.BD_XMXX_ID ?: "", pageNum) + val res = api.fetchSpecialControlNetworkList(currentProject?.XMXX_ID ?: "", pageNum) if (res.success) { _controlNetworkListResponse.postValue(res.data) } @@ -51,7 +51,7 @@ class ControlNetViewModel : BaseViewModel() { val currentProject = SPUtils.getParcelable(SPConstants.CURRENT_PROJECT, ProjectBean::class.java) val res = api.fetchSpecialControlNetworkInfo( - currentProject?.BD_XMXX_ID ?: "", + currentProject?.XMXX_ID ?: "", controlNetworkName, pointName, pageNum @@ -74,7 +74,7 @@ class ControlNetViewModel : BaseViewModel() { val currentProject = SPUtils.getParcelable(SPConstants.CURRENT_PROJECT, ProjectBean::class.java) val res = api.fetchSpecialControlNetCGList( - currentProject?.BD_XMXX_ID ?: "", + currentProject?.XMXX_ID ?: "", "BD_KZWZBCG", "BD_KZWZBCG_ZY", j_query, @@ -95,7 +95,7 @@ class ControlNetViewModel : BaseViewModel() { val currentProject = SPUtils.getParcelable(SPConstants.CURRENT_PROJECT, ProjectBean::class.java) val res = api.fetchSpecialControlNetCGList( - currentProject?.BD_XMXX_ID ?: "", + currentProject?.XMXX_ID ?: "", "BD_KZWZBCG", "BD_KZWZBCG", j_query, diff --git a/app/src/main/java/com/project/survey/logic/viewmodel/ProjectViewModel.kt b/app/src/main/java/com/project/survey/logic/viewmodel/ProjectViewModel.kt index b1b0889..2cedf03 100644 --- a/app/src/main/java/com/project/survey/logic/viewmodel/ProjectViewModel.kt +++ b/app/src/main/java/com/project/survey/logic/viewmodel/ProjectViewModel.kt @@ -3,7 +3,10 @@ package com.project.survey.logic.viewmodel import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import com.project.survey.constants.SPConstants +import com.project.survey.logic.bean.ListResult import com.project.survey.model.ApprovalBean +import com.project.survey.model.MeasureBean +import com.project.survey.model.PointEntry import com.project.survey.model.ProjectBean import com.project.survey.network.RetrofitClient import com.project.survey.util.SPUtils @@ -12,7 +15,6 @@ class ProjectViewModel : BaseViewModel() { val api = RetrofitClient.createApiService() - val projectResponse: LiveData> get() = _projectResponse private val _projectResponse = MutableLiveData>() @@ -22,9 +24,11 @@ class ProjectViewModel : BaseViewModel() { */ fun fetchProjectList() { launch { - val res = api.fetchProjectList(SPUtils.getString(SPConstants.PERSON_ID) ?: "") + val res = api.fetchProjectList(SPUtils.getString(SPConstants.PERSON_ID)) if (res.success) { - _projectResponse.postValue(res.data) + _projectResponse.postValue(res.data.map { it.values }) + } else { + errorResponse.postValue(res.message) } } } @@ -40,10 +44,107 @@ class ProjectViewModel : BaseViewModel() { launch { val currentProject = SPUtils.getParcelable(SPConstants.CURRENT_PROJECT, ProjectBean::class.java) - val res = api.fetchWorkTask(currentProject?.BD_XMXX_ID ?: "", type, page) + val res = api.fetchWorkTask(currentProject?.XMXX_ID ?: "", type, page) if (res.success) { _workTaskListResponse.postValue(res.data.data.rows) } } } + + val measureBeanListResponse: LiveData> + get() = _measureBeanListResponse + private val _measureBeanListResponse = MutableLiveData>() + + /** + * 获取测量工作:测量计划与工程计量 + */ + private fun fetchMeasureDataList( + tableCode: String, + funcCode: String, + j_query: String, + page: Int = 1, + start: Int + ) { + launch { + val res = api.fetchMeasureDataList( + SPUtils.getString(SPConstants.PROJECT_ID), + tableCode, + funcCode, + j_query, + page, + start = start + ) + if (res.success) { + _measureBeanListResponse.postValue(res.data) + } else { + errorResponse.postValue(res.message) + } + } + } + + /** + * 获取 测量计划 列表 + */ + fun fetchCLJH(page: Int = 1, start: Int = 0) { + fetchMeasureDataList("BD_CLJH", "BD_CLJH", "", page, start) + } + + /** + * 获取 工程计量 列表 + */ + fun fetchGCJL(page: Int = 1, start: Int = 0) { + fetchMeasureDataList("BD_CLGZ_GCJL", "BD_CLGZ_GCJL", "", page, start) + } + + val updateMeasureWorkStatusResponse: LiveData + get() = _updateMeasureWorkStatusResponse + private val _updateMeasureWorkStatusResponse = MutableLiveData() + + /** + * 修改测量工作状态 + */ + fun updateMeasureWorkStatus(workId: String, workType: String, status: String) { + launch { + val res = api.updateMeasureWorkStatus( + SPUtils.getString(SPConstants.PROJECT_ID), + workId, + workType, + status + ) + if (res.success) { + _updateMeasureWorkStatusResponse.postValue(res.data) + } else { + errorResponse.postValue(res.message) + } + } + } + + /** + * 修改 测量计划 工作状态 + */ + fun updateCLJHStatus(workId: String, status: String) { + updateMeasureWorkStatus(workId, "BD_CLJH", status) + } + + /** + * 修改 工程计量 工作状态 + */ + fun updateGCJLStatus(workId: String, status: String) { + updateMeasureWorkStatus(workId, "BD_CLGZ_GCJL", status) + } + + /** + * 测点记录录入 + */ + fun uploadPointEntry(pointEntryList: List) { + launch { + val res = + api.uploadPointEntry(SPUtils.getString(SPConstants.PROJECT_ID), pointEntryList) + if (res.success) { + + } else { + errorResponse.postValue(res.message) + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/model/LoginBean.kt b/app/src/main/java/com/project/survey/model/LoginBean.kt index f8e5f9d..707a1bc 100644 --- a/app/src/main/java/com/project/survey/model/LoginBean.kt +++ b/app/src/main/java/com/project/survey/model/LoginBean.kt @@ -12,5 +12,5 @@ import kotlinx.android.parcel.Parcelize data class LoginBean( val token: String, val mobilePhone: String, - val personId: String + val personId: String? ) : Parcelable diff --git a/app/src/main/java/com/project/survey/model/MeasureBean.kt b/app/src/main/java/com/project/survey/model/MeasureBean.kt new file mode 100644 index 0000000..29c3439 --- /dev/null +++ b/app/src/main/java/com/project/survey/model/MeasureBean.kt @@ -0,0 +1,24 @@ +package com.project.survey.model + +/** + * + */ +data class MeasureBean( + val BD_CONTRACT_ID: String, + val BD_FBFXPZ_DWGCMC: String, //单位工程名称 + val SY_COMPANY_ID: String, + val CLJH_ENDTIME: String, + val BD_FBFXPZ_FXGCMC: String, //分项工程名称 + val SY_CREATEUSERNAME: String, + val CLJH_SBDW_ID: String, + val SY_PREAPPROVUSERNAMES: String, + val SY_CURRENTTASK: String, + val BD_CLJH_ID: String, //测量计划ID,即测量工作ID + val CLJH_STARTTIME: String, + val CLJH_CONTENT: String, //测量内容 + val CLJH_LCMC: String, //流程名称 + val BD_FBFXPZ_FBGCMC: String, //分部工程名称 + val BD_FBFXPZ_DYGCMC: String, //单元工程名称 + val CLJH_BDLSH: String, //流程编号 + val CLJH_CLLX_NAME: String, //测量类型 +) diff --git a/app/src/main/java/com/project/survey/model/PointEntry.kt b/app/src/main/java/com/project/survey/model/PointEntry.kt new file mode 100644 index 0000000..c0c88fa --- /dev/null +++ b/app/src/main/java/com/project/survey/model/PointEntry.kt @@ -0,0 +1,20 @@ +package com.project.survey.model + +data class PointEntry( + val name: String, //点名称 "点1" + val workId: String, //测量工作id "80ffa3b7701a46f9b320297e332d5678" + val workType: String, //测量计划传BD_CLJH,工程计量传:BD_CLGZ_GCJL + val antennaHight: String, //天线高 "11" + val remark: String, //备注 "点1" + val x: String, //"111" + val y: String, //"11" + val z: String, //"11" + val longitude: String, //经度 + val latitude: String, //纬度 + val hrms: String, + val vrms: String, + val pdop: String, + val delay: String, //延迟 "xx" + val jzt: String, //解状态 "xx" + val satellite: String, //结算卫星 "xx" +) diff --git a/app/src/main/java/com/project/survey/model/ProjectBean.kt b/app/src/main/java/com/project/survey/model/ProjectBean.kt index 1e5f3bb..2963c7e 100644 --- a/app/src/main/java/com/project/survey/model/ProjectBean.kt +++ b/app/src/main/java/com/project/survey/model/ProjectBean.kt @@ -4,33 +4,42 @@ import android.os.Parcelable import androidx.annotation.Keep import kotlinx.android.parcel.Parcelize -//{ -// "XMXX_PILENO": "20221111", -// "XMXX_INDUSTRYTYPE": "水电工程", -// "SY_COMPANY_ID": null, -// "$TABLE_CODE$": null, -// "SY_CREATEUSERNAME": null, -// "XMXX_STATUS": "完工", -// "XMXX_LEVEL": "A类", -// "SY_ORDERINDEX": null, -// "SY_GROUP_COMPANY_NAME": null, -// "SY_COMPANY_NAME": null, -// "XMXX_CODE": "202109[101]", -// "BD_XMXX_ID": "f5b09f04f26d4d0e99591c01a5dedeeb", -// "SY_CREATEORGID": null, -// "SY_STATUS": "1", -// "SY_CREATEUSERID": null, -// "SY_GROUP_COMPANY_ID": null, -// "XMXX_CONTACTNAME": "何嘉能", -// "XMXX_LOCATIONXY": "122;39", -// "XMXX_FILE": null, -// "XMXX_CONTACTNAMEID": "", -// "XMXX_DESCRIPTION": "测试项目", -// "SY_CREATEORGNAME": null, -// "SY_CREATETIME": null, -// "SY_ORG_ID": null, -// "XMXX_NAME": "测试项目" -//} + +/** + * { + * "values": { + * "XMXX_PILENO": "K1+000~K1+022", + * "XMXX_INDUSTRYTYPE": "水电工程", + * "SY_COMPANY_ID": null, + * "SY_CREATEUSERNAME": null, + * "XMXX_STATUS": "完工", + * "XMXX_LEVEL": "B类", + * "SY_ORDERINDEX": null, + * "SY_GROUP_COMPANY_NAME": null, + * "SY_COMPANY_NAME": null, + * "XMXX_CODE": "XMBHTest20241014001", + * "SY_CREATEORGID": null, + * "SY_STATUS": "1", + * "SY_CREATEUSERID": null, + * "SY_GROUP_COMPANY_ID": null, + * "XMXX_CONTACTNAME": "徐齐行", + * "XMXX_LOCATIONXY": "121.1;29.6", + * "XMXX_FILE": "[{\"fileKey\":\"imNMv698gNhK6K4savQ\",\"relName\":\"22ec2661b8cde194bd42900c99e46bef.jpg\",\"suffix\":\"jpg\",\"hasThumbnail\":true,\"fullUrl\":null,\"size\":59,\"createUserName\":\"admin123\",\"createUserDeptName\":\"北斗\",\"createTime\":\"2024-10-14 09:34:49\",\"createTimeStr\":\"2024-10-14 09:34:49\",\"dicId\":null,\"dicCode\":null,\"dicName\":null,\"remarks\":null}]", + * "XMXX_ID": "xYgALS4VOJ0vDrEVUcQ", + * "XMXX_CONTACTNAMEID": "", + * "SY_CREATEORGNAME": null, + * "XMXX_DESCRIPTION": "舟山市,古称海中洲,浙江省辖地级市 [2],位于浙江省东北部舟山群岛 [1],地处中国东南沿海,长江口南侧,杭州湾外缘的东海洋面上。 [95]地势由西南向东北倾斜,南部岛大,海拔高,排列密集,北部岛小,地势低,分布稀疏,四面环海;属亚热带季风气候;总面积2.22万平方千米,其中海域面积2.08万平方千米,4696个岛礁陆地总面积1440.2平方千米 [46]。截至2024年2月,舟山市下辖2个区、2个县。截至2023年末,舟山市常住人口为117.3万人。 [92]\n舟山市是中国第一个以群岛建制的地级市,地处中国东部黄金海岸线与长江黄金水道的交汇处,背靠长三角广阔经济腹地,舟山拥有2085个岛屿和270多公里深水岸线,是中国第一大群岛和重要港口城市。 [96]1953年6月10日,设立舟山专区;1987年1月,撤销舟山地区,建立舟山市。舟山市是长江三角洲中心区城市,上海大都市圈重要城市 [58],也是中国第四个国家级新区舟山群岛新区所在地 [60],是国际性的港口与海岛旅游城市 [62],是海洋经济先导区 [62],境内有由国务院批准设立的大宗商品交易管理与监督中心 [3]、中国(浙江)自由贸易试验区舟山片区 [61]。宁波舟山港年货物吞吐量位居全球第一,集装箱吞吐量位居世界第三。 [59]2024年,宁波舟山国际航运中心全球排名第8。 [106]舟山市拥有普陀山、嵊泗列岛两个国家级风景名胜区,岱山、桃花岛两个省级风景名胜区以及海岛历史文化名城定海。\n2023年,舟山市实现地区生产总值2100.8亿元,同比增长8.2%,高出全省平均2.2个百分点。", + * "SY_CREATETIME": null, + * "SY_ORG_ID": null, + * "XMXX_NAME": "齐恒测试项目(舟山)" + * }, + * "tenantIdField": "SY_TENANT_ID", + * "tenantNameField": "SY_TENANT_NAME", + * "tableCode": null, + * "pkCode": null, + * "pkValue": null + * } + */ @Keep @Parcelize data class ProjectBean( @@ -42,8 +51,17 @@ data class ProjectBean( val XMXX_PILENO: String, //起讫桩号 val XMXX_CONTACTNAME: String, //联系人 val XMXX_CONTACTNAMEID: String, //联系人ID - val XMXX_LOCATIONXY: String, //项目位置(度) + val XMXX_LOCATIONXY: String, //项目位置(度) "121.1;29.6" val XMXX_FILE: String?, //项目图片 - val XMXX_DESCRIPTION: String?, //项目图片 - val BD_XMXX_ID: String?, -) : Parcelable \ No newline at end of file + val XMXX_DESCRIPTION: String?, + val XMXX_ID: String, //项目ID + val SY_STATUS: String?, +) : Parcelable + +@Keep +@Parcelize +data class ProjectData( + val tenantIdField: String, + val tenantNameField: String, + val values: ProjectBean +): Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/network/Api.kt b/app/src/main/java/com/project/survey/network/Api.kt index 96301df..65478cf 100644 --- a/app/src/main/java/com/project/survey/network/Api.kt +++ b/app/src/main/java/com/project/survey/network/Api.kt @@ -6,7 +6,12 @@ import com.project.survey.model.ControlNetworkBean import com.project.survey.model.ControlNetCGBean import com.project.survey.model.ControlNetworkInfoBean import com.project.survey.model.LoginBean +import com.project.survey.model.MeasureBean +import com.project.survey.model.PointEntry import com.project.survey.model.ProjectBean +import com.project.survey.model.ProjectData +import okhttp3.RequestBody +import retrofit2.http.Body import retrofit2.http.Field import retrofit2.http.FormUrlEncoded import retrofit2.http.GET @@ -71,7 +76,7 @@ interface Api { @GET("je/project/getAllProjectIDByPersonId") suspend fun fetchProjectList( @Query("personId") personId: String - ): HttpResult> + ): HttpResult> // /** // * 发送验证码 @@ -151,4 +156,43 @@ interface Api { @Field("limit") limit: Int = 30, @Field("start") start: Int = 0 ): HttpResult> + + + /** + * 获取测量工作:测量计划与工程计量 + * @param tableCode 测量计划传BD_CLJH,工程计量传:BD_CLGZ_GCJL + * @param funcCode 测量计划传BD_CLJH,工程计量传:BD_CLGZ_GCJL + * @param j_qurey 固定参数 [{"code":"SY_CURRENTTASK","type":"=","value":"施工单位APP上开展测量工作"}] + */ + @FormUrlEncoded + @POST("je/cloud/beiDou/load") + suspend fun fetchMeasureDataList( + @Header("projectId") projectId: String, + @Field("tableCode") tableCode: String, + @Field("funcCode") funcCode: String, + @Field("j_qurey") j_qurey: String = "", + @Field("page") page: Int, + @Field("limit") limit: Int = 30, + @Field("start") start: Int = 0 + ): HttpResult> + + /** + * 修改测量工作状态 + */ + @GET("je/measureWork/modifyWorkStatus") + suspend fun updateMeasureWorkStatus( + @Header("projectId") projectId: String, + @Query("workId") workId: String, //测量工作ID + @Query("workType") workType: String, //测量计划传BD_CLJH,工程计量传:BD_CLGZ_GCJL + @Query("status") status: String //执行中、已结束(对应按钮:进入测量、结束测量) + ) : HttpResult + + /** + * 测点记录录入 + */ + @POST("je/measureWork/pointsEntry") + suspend fun uploadPointEntry( + @Header("projectId") projectId: String, + @Body requestBody: List + ) : HttpResult } \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/network/RetrofitClient.kt b/app/src/main/java/com/project/survey/network/RetrofitClient.kt index 509dc6f..4d4df19 100644 --- a/app/src/main/java/com/project/survey/network/RetrofitClient.kt +++ b/app/src/main/java/com/project/survey/network/RetrofitClient.kt @@ -52,7 +52,7 @@ object RetrofitClient { } else { builder.addHeader("pd", "jecloud-gcclzhglpt") } - val token = SPUtils.getString(SPConstants.TOKEN) ?: "" + val token = SPUtils.getString(SPConstants.TOKEN) builder.removeHeader("Authorization") if (token.isNotBlank()) { builder.addHeader("Authorization", token) diff --git a/app/src/main/java/com/project/survey/ui/SplashActivity.kt b/app/src/main/java/com/project/survey/ui/SplashActivity.kt index cd4d94f..d90d565 100644 --- a/app/src/main/java/com/project/survey/ui/SplashActivity.kt +++ b/app/src/main/java/com/project/survey/ui/SplashActivity.kt @@ -30,7 +30,7 @@ class SplashActivity : BaseBindingActivity() { MockUtil.login() MainActivity.start() } else { - if (SPUtils.getString(SPConstants.TOKEN).isNullOrBlank()) { + if (SPUtils.getString(SPConstants.TOKEN).isBlank()) { LoginActivity.start() } else { val currentProject = diff --git a/app/src/main/java/com/project/survey/ui/approval/ApprovalActivity.kt b/app/src/main/java/com/project/survey/ui/approval/ApprovalActivity.kt index 9eb6f9c..7f1f25c 100644 --- a/app/src/main/java/com/project/survey/ui/approval/ApprovalActivity.kt +++ b/app/src/main/java/com/project/survey/ui/approval/ApprovalActivity.kt @@ -126,7 +126,7 @@ class ApprovalActivity : BaseBindingActivity(), OnRefre adapter.setOnItemClickListener { _, _, position -> adapter.getItem(position)?.let { bean -> // http://10.190.183.37/app/micro/func/#/pages/func/form/{功能编码}/{流程ID}?authorization={登录token}&appId=2024-0926-1104-0165 - val token = SPUtils.getString(SPConstants.TOKEN) ?: "" + val token = SPUtils.getString(SPConstants.TOKEN) val url = BuildConfig.BASE_URL + "app/micro/func/#/pages/func/form/${bean.funcCode}/${bean.pkValue}?authorization=${token}&appId=2024-0926-1104-0165" AgentWebActivity.navigation2(this, Uri.parse(url)) diff --git a/app/src/main/java/com/project/survey/ui/home/HomeFragment.kt b/app/src/main/java/com/project/survey/ui/home/HomeFragment.kt index db7e873..db783da 100644 --- a/app/src/main/java/com/project/survey/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/project/survey/ui/home/HomeFragment.kt @@ -48,10 +48,18 @@ class HomeFragment : BaseBindingFragment() { } override fun initListener() { - //点测量 - mBinding.itemPointMeasure.setOnClickNoRepeatListener { - PointMeasureListActivity.start() + // 测量计划 + mBinding.itemSurveyPlan.setOnClickNoRepeatListener { + PointMeasureListActivity.start(PointMeasureListActivity.TYPE_SURVEY_PLAN) } + // 工程计量 + mBinding.itemEngineeringMetrology.setOnClickNoRepeatListener { + PointMeasureListActivity.start(PointMeasureListActivity.TYPE_PROJECT_MEASURE) + } +// //点测量 +// mBinding.itemPointMeasure.setOnClickNoRepeatListener { +// PointMeasureListActivity.start() +// } //放样 mBinding.itemLofting.setOnClickNoRepeatListener { LoftingListActivity.start() diff --git a/app/src/main/java/com/project/survey/ui/instrument/coordinatesystem/fragment/CoordinateSystemContainerFragment.java b/app/src/main/java/com/project/survey/ui/instrument/coordinatesystem/fragment/CoordinateSystemContainerFragment.java index 8743a64..530f949 100644 --- a/app/src/main/java/com/project/survey/ui/instrument/coordinatesystem/fragment/CoordinateSystemContainerFragment.java +++ b/app/src/main/java/com/project/survey/ui/instrument/coordinatesystem/fragment/CoordinateSystemContainerFragment.java @@ -222,7 +222,7 @@ public class CoordinateSystemContainerFragment extends AbstractCoordinateSystemC return; } currentProjectRecord.coordinateSystem = coordinateSystem; - UserConfig userConfig = AppDataBase.getInstance().userConfigDao().findByLeanCloudUserId(SPUtils.INSTANCE.getString(SPConstants.PERSON_ID)); + UserConfig userConfig = AppDataBase.getInstance().userConfigDao().findByLeanCloudUserId(SPUtils.INSTANCE.getString(SPConstants.PERSON_ID, "")); ProjectDb.getInstance().userSafe(userConfig).save(currentProjectRecord); //切换线路 ThreadPoolUtil.executeInMain(success); diff --git a/app/src/main/java/com/project/survey/ui/lofting/pointlofting/record/RecordsActivity.java b/app/src/main/java/com/project/survey/ui/lofting/pointlofting/record/RecordsActivity.java index 1df4316..1090b15 100644 --- a/app/src/main/java/com/project/survey/ui/lofting/pointlofting/record/RecordsActivity.java +++ b/app/src/main/java/com/project/survey/ui/lofting/pointlofting/record/RecordsActivity.java @@ -333,7 +333,7 @@ public class RecordsActivity extends ColorfulActivity { if (recordsUtils != null) { recordsUtils.update(binding.recyclerviewRecords, isSortByTimeAcs, null, - SPUtils.INSTANCE.getString(SPConstants.PROJECT_ID), "", "", + SPUtils.INSTANCE.getString(SPConstants.PROJECT_ID, ""), "", "", filterUtils.filterParameter()); // if (RecordTypeConstants.TYPE_MEASURING_TAPE == currentTypeFromSpinner) { diff --git a/app/src/main/java/com/project/survey/ui/pointmeasure/PointMeasureListActivity.kt b/app/src/main/java/com/project/survey/ui/pointmeasure/PointMeasureListActivity.kt index a9e3181..8b59d3c 100644 --- a/app/src/main/java/com/project/survey/ui/pointmeasure/PointMeasureListActivity.kt +++ b/app/src/main/java/com/project/survey/ui/pointmeasure/PointMeasureListActivity.kt @@ -1,34 +1,59 @@ package com.project.survey.ui.pointmeasure -import android.view.View -import androidx.core.os.bundleOf +import androidx.activity.viewModels import com.project.survey.R import com.project.survey.databinding.ActivityPointMeasureListBinding +import com.project.survey.extend.smartDismiss +import com.project.survey.extend.toast +import com.project.survey.logic.viewmodel.ControlNetViewModel +import com.project.survey.logic.viewmodel.ProjectViewModel import com.project.survey.ui.base.BaseBindingActivity +import com.project.survey.ui.pointmeasure.adapter.PointMeasureListAdapter +import com.project.survey.ui.pointmeasure.measure.PointSurveyNewActivity import com.project.survey.util.ActivityNavUtil +import com.scwang.smart.refresh.layout.api.RefreshLayout +import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener /** * 点测量列表 */ -class PointMeasureListActivity : BaseBindingActivity() { +class PointMeasureListActivity : BaseBindingActivity(), + OnRefreshLoadMoreListener { companion object { const val KEY_TYPE = "KEY_TYPE" - const val TYPE_ALL = "TYPE_ALL"//全部 const val TYPE_SURVEY_PLAN = "TYPE_SURVEY_PLAN"//测量计划 const val TYPE_PROJECT_MEASURE = "TYPE_PROJECT_MEASURE"//工程计量 - fun start() { - ActivityNavUtil.startActivity { } + fun start(type: String) { + ActivityNavUtil.startActivity { + putString(KEY_TYPE, type) + } } } + private val viewModel: ProjectViewModel by viewModels() + + private val adapter by lazy { PointMeasureListAdapter(type) } + private var type = "" + private var currentPage = 1 + private var start = 0 + override fun getBinding(): ActivityPointMeasureListBinding = ActivityPointMeasureListBinding.inflate(layoutInflater) override fun initView() { - immersionToolbar(mBinding.toolbar, R.string.point_measure) - + type = intent.getStringExtra(KEY_TYPE) ?: "" + immersionToolbar( + mBinding.toolbar, when (type) { + TYPE_SURVEY_PLAN -> getString(R.string.survey_plan) + TYPE_PROJECT_MEASURE -> getString(R.string.engineering_metrology) + else -> "" + } + ) + mBinding.smartRefreshLayout.setOnRefreshLoadMoreListener(this) + mBinding.recyclerView.setAdapter(adapter) + adapter.isStateViewEnable = true } override fun initListener() { @@ -36,44 +61,68 @@ class PointMeasureListActivity : BaseBindingActivity + adapter.getItem(position)?.let { bean -> +// viewModel.updateMeasureWorkStatus(bean.BD_CLJH_ID, if (type == TYPE_SURVEY_PLAN) "BD_CLJH" else "BD_CLGZ_GCJL", "已结束") + } + } - mBinding.tvProjectMeasured.setOnClickListener { - setBtnSelected(mBinding.tvProjectMeasured) - switchFragment(TYPE_PROJECT_MEASURE) + // 进入测量 + adapter.addOnItemChildClickListener(R.id.tvEnterMeasure) { adapter, _, position -> + adapter.getItem(position)?.let { bean -> + PointSurveyNewActivity.start(mContext) +// viewModel.updateMeasureWorkStatus(bean.BD_CLJH_ID, if (type == TYPE_SURVEY_PLAN) "BD_CLJH" else "BD_CLGZ_GCJL", "执行中") + } } } - private fun switchFragment(type: String) { -// val frament = PointMeasureListFragment() -// frament.arguments = bundleOf(KEY_TYPE to type) - - val transaction = supportFragmentManager.beginTransaction() - transaction.replace(R.id.container, PointMeasureListFragment.newInstance(type)) - transaction.commit() - } override fun initData() { - loadFirstPage() + viewModel.errorResponse.observe(this) { + toast(it) + mBinding.smartRefreshLayout.smartDismiss() + } + viewModel.measureBeanListResponse.observe(this) { + mBinding.smartRefreshLayout.smartDismiss() + if (currentPage == 1) { + adapter.submitList(it.rows) + if (it.rows.isEmpty()) { + mBinding.smartRefreshLayout.finishLoadMoreWithNoMoreData() + adapter.setStateViewLayout(this, R.layout.layout_no_data) + } else { + currentPage++ + start += it.totalCount + } + } else { + if (it.rows.isEmpty()) { + mBinding.smartRefreshLayout.finishLoadMoreWithNoMoreData() + } else { + adapter.addAll(it.rows) + currentPage++ + start += it.totalCount + } + } + } + fetchData() } - - private fun loadFirstPage() { - setBtnSelected(mBinding.tvAll) - switchFragment(TYPE_ALL) + private fun fetchData() { + if (type == TYPE_SURVEY_PLAN) { + viewModel.fetchCLJH(currentPage, start) + } else { + viewModel.fetchGCJL(currentPage, start) + } } - private fun setBtnSelected(view: View) { - mBinding.tvAll.isSelected = false - mBinding.tvSurveyPlan.isSelected = false - mBinding.tvProjectMeasured.isSelected = false + override fun onRefresh(refreshLayout: RefreshLayout) { + currentPage = 1 + fetchData() + } - view.isSelected = true + override fun onLoadMore(refreshLayout: RefreshLayout) { + fetchData() } + } \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/ui/pointmeasure/PointMeasureListFragment.kt b/app/src/main/java/com/project/survey/ui/pointmeasure/PointMeasureListFragment.kt index 1016748..f20ca17 100644 --- a/app/src/main/java/com/project/survey/ui/pointmeasure/PointMeasureListFragment.kt +++ b/app/src/main/java/com/project/survey/ui/pointmeasure/PointMeasureListFragment.kt @@ -9,10 +9,10 @@ import com.project.survey.databinding.FragmentPointMeasureListBinding import com.project.survey.extend.toast import com.project.survey.model.PointMeasureListBean import com.project.survey.ui.base.BaseBindingFragment -import com.project.survey.ui.pointmeasure.adapter.PointMeasureListAdapter import com.project.survey.ui.pointmeasure.measure.PointSurveyNewActivity import com.project.survey.widget.decoration.TransparentDividerDecoration +@Deprecated("") class PointMeasureListFragment : BaseBindingFragment() { companion object { @@ -31,12 +31,12 @@ class PointMeasureListFragment : BaseBindingFragment - toast("生成报验单:$position") - } - // 结束测量 - adapter.addOnItemChildClickListener(R.id.tvStopMeasure) { _, _, position -> - toast("结束测量:$position") - } - // 进入测量 - adapter.addOnItemChildClickListener(R.id.tvEnterMeasure) { _, _, position -> - adapter.getItem(position)?.let { bean -> - PointSurveyNewActivity.start(mContext) - } - } +// // 生成报验单 +// adapter.addOnItemChildClickListener(R.id.tvGenerateForm) { _, _, position -> +// toast("生成报验单:$position") +// } +// // 结束测量 +// adapter.addOnItemChildClickListener(R.id.tvStopMeasure) { _, _, position -> +// toast("结束测量:$position") +// } +// // 进入测量 +// adapter.addOnItemChildClickListener(R.id.tvEnterMeasure) { _, _, position -> +// adapter.getItem(position)?.let { bean -> +// PointSurveyNewActivity.start(mContext) +// } +// } } diff --git a/app/src/main/java/com/project/survey/ui/pointmeasure/adapter/PointMeasureListAdapter.kt b/app/src/main/java/com/project/survey/ui/pointmeasure/adapter/PointMeasureListAdapter.kt index 1efa292..b48187d 100644 --- a/app/src/main/java/com/project/survey/ui/pointmeasure/adapter/PointMeasureListAdapter.kt +++ b/app/src/main/java/com/project/survey/ui/pointmeasure/adapter/PointMeasureListAdapter.kt @@ -5,18 +5,21 @@ import android.view.ViewGroup import com.chad.library.adapter4.BaseQuickAdapter import com.chad.library.adapter4.viewholder.QuickViewHolder import com.project.survey.R +import com.project.survey.model.MeasureBean +import com.project.survey.ui.pointmeasure.PointMeasureListActivity -class PointMeasureListAdapter : BaseQuickAdapter() { +class PointMeasureListAdapter(val type: String) : BaseQuickAdapter() { - override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: Any?) { - item?.let { bean -> - holder.setText(R.id.tvName, "测量单位报审(验)单") - .setText(R.id.tvNO, "XMBH2021-0000-$position") - .setText(R.id.tvType, "测量类型") - .setText(R.id.tvProjectName, "单位-分部-分项$position") - .setText(R.id.tvMeasureContent, "内容名称") - .setText(R.id.tvApplyUser, "张三") - } + override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: MeasureBean?) { + if (item == null) return + + holder.setText(R.id.tvName, item.CLJH_LCMC) + .setText(R.id.tvNO, item.CLJH_BDLSH) + .setText(R.id.tvType, item.CLJH_CLLX_NAME) + .setText(R.id.tvProjectName, item.BD_FBFXPZ_FXGCMC) + .setText(R.id.tvMeasureContent, item.CLJH_CONTENT) + .setText(R.id.tvApplyUser, "") + .setVisible(R.id.tvGenerateForm, type == PointMeasureListActivity.TYPE_SURVEY_PLAN) } override fun onCreateViewHolder( diff --git a/app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt b/app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt index 661ac35..bf77004 100644 --- a/app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt +++ b/app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt @@ -11,12 +11,12 @@ import com.bingce.data.surveyor.designdata.kv.KeyValueConstants import com.bingce.data.surveyor.designdata.kv.KeyValueRecord import com.bingce.data.surveyor.designdata.project.ProjectRecord import com.bingce.utils.ThreadPoolUtil -import com.project.survey.App import com.project.survey.R import com.project.survey.constants.EventConstants import com.project.survey.constants.SPConstants import com.project.survey.databinding.ActivityProjectListBinding import com.project.survey.extend.smartDismiss +import com.project.survey.extend.toast import com.project.survey.logic.event.Message import com.project.survey.logic.viewmodel.ProjectViewModel import com.project.survey.ui.MainActivity @@ -70,6 +70,7 @@ class ProjectListActivity : BaseBindingActivity(), O override fun initData() { viewModel.errorResponse.observe(this) { + toast(it) mBinding.smartRefreshLayout.smartDismiss() } viewModel.projectResponse.observe(this) { @@ -96,12 +97,17 @@ class ProjectListActivity : BaseBindingActivity(), O adapter.getItem(position)?.let { bean -> // 进入项目,设置当前项目 SPUtils.put(SPConstants.CURRENT_PROJECT, bean) - SPUtils.put(SPConstants.PROJECT_ID, bean.XMXX_CODE) + SPUtils.put(SPConstants.PROJECT_ID, bean.XMXX_ID) // 存储配置--当前项目 ThreadPoolUtil.execute { //存储新的项目 ProjectDb.getInstance().save( - ProjectRecord(bean.BD_XMXX_ID, bean.XMXX_NAME, CoordinateSystem.newCoordinateSystem(this), Date().time).apply { + ProjectRecord( + bean.XMXX_ID, + bean.XMXX_NAME, + CoordinateSystem.newCoordinateSystem(this), + Date().time + ).apply { author = bean.XMXX_CONTACTNAME } ) @@ -112,7 +118,10 @@ class ProjectListActivity : BaseBindingActivity(), O currentProjectConfig.value = bean.XMXX_CODE } else { currentProjectConfig = - KeyValueRecord(KeyValueConstants.KEY_CURRENT_PROJECT_ID, bean.XMXX_CODE) + KeyValueRecord( + KeyValueConstants.KEY_CURRENT_PROJECT_ID, + bean.XMXX_CODE + ) } KeyValueDb.getInstance().save(currentProjectConfig) } diff --git a/app/src/main/java/com/project/survey/ui/project/ProjectListFragment.kt b/app/src/main/java/com/project/survey/ui/project/ProjectListFragment.kt index 61a6f2b..4dda2ba 100644 --- a/app/src/main/java/com/project/survey/ui/project/ProjectListFragment.kt +++ b/app/src/main/java/com/project/survey/ui/project/ProjectListFragment.kt @@ -13,6 +13,7 @@ import com.project.survey.ui.project.adapter.ProjectListAdapter import com.project.survey.util.SPUtils import com.project.survey.widget.decoration.HorDividerDecoration +@Deprecated("使用 ProjectListActivity") class ProjectListFragment : BaseBindingFragment() { companion object { @@ -34,50 +35,50 @@ class ProjectListFragment : BaseBindingFragment() { ): FragmentProjectListBinding = FragmentProjectListBinding.inflate(inflater, container, false) private val viewModel: ProjectViewModel by viewModels() - private val adapter by lazy { ProjectListAdapter() } +// private val adapter by lazy { ProjectListAdapter() } private var type: String = "" override fun initView() { type = arguments?.getString(TYPE, "") ?: "" - mBinding.recyclerView.addItemDecoration(HorDividerDecoration(mContext)) - mBinding.recyclerView.setAdapter(adapter) +// mBinding.recyclerView.addItemDecoration(HorDividerDecoration(mContext)) +// mBinding.recyclerView.setAdapter(adapter) } override fun initData() { - viewModel.projectResponse.observe(this) { - if (type == TYPE_ALL) { - adapter.submitList(it) - } else { - adapter.submitList( - it.filter { bean -> - bean.XMXX_CODE in - (SPUtils.getString(SPConstants.RECENTLY_PROJECT) ?: "").split(",") - } - ) - } - } - - viewModel.fetchProjectList() +// viewModel.projectResponse.observe(this) { +// if (type == TYPE_ALL) { +// adapter.submitList(it) +// } else { +// adapter.submitList( +// it.filter { bean -> +// bean.XMXX_CODE in +// (SPUtils.getString(SPConstants.RECENTLY_PROJECT) ?: "").split(",") +// } +// ) +// } +// } +// +// viewModel.fetchProjectList() } override fun initListener() { - adapter.setOnItemClickListener { _, _, position -> - // TODO 去详情页 - adapter.getItem(position)?.let { bean -> - val recentlyList = (SPUtils.getString(SPConstants.RECENTLY_PROJECT) ?: "") - .split(",") - .toMutableList() - if (bean.XMXX_CODE !in recentlyList) { - recentlyList.add(bean.XMXX_CODE) - } - SPUtils.put( - SPConstants.RECENTLY_PROJECT, - recentlyList.joinToString(",") - ) - } - } +// adapter.setOnItemClickListener { _, _, position -> +// // TODO 去详情页 +// adapter.getItem(position)?.let { bean -> +// val recentlyList = (SPUtils.getString(SPConstants.RECENTLY_PROJECT) ?: "") +// .split(",") +// .toMutableList() +// if (bean.XMXX_CODE !in recentlyList) { +// recentlyList.add(bean.XMXX_CODE) +// } +// SPUtils.put( +// SPConstants.RECENTLY_PROJECT, +// recentlyList.joinToString(",") +// ) +// } +// } } } \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/util/SPUtils.kt b/app/src/main/java/com/project/survey/util/SPUtils.kt index 72c74c6..6de4cdf 100644 --- a/app/src/main/java/com/project/survey/util/SPUtils.kt +++ b/app/src/main/java/com/project/survey/util/SPUtils.kt @@ -62,8 +62,12 @@ object SPUtils { return mmkv.decodeBytes(key) } - fun getString(key: String): String? { - return mmkv.decodeString(key, "") +// fun getString(key: String): String? { +// return mmkv.decodeString(key, "") +// } + + fun getString(key: String, defaultValue: String = ""): String { + return mmkv.decodeString(key, defaultValue) ?: defaultValue } fun getParcelable(key: String, tClass: Class): T? { diff --git a/app/src/main/res/layout/activity_point_measure_list.xml b/app/src/main/res/layout/activity_point_measure_list.xml index 4d4a932..1d99d27 100644 --- a/app/src/main/res/layout/activity_point_measure_list.xml +++ b/app/src/main/res/layout/activity_point_measure_list.xml @@ -1,6 +1,7 @@ @@ -27,54 +28,18 @@ android:layout_height="wrap_content" app:sw_hint="流程名称、编号、申请人" /> - - - - - - - - - - - + android:layout_height="match_parent"> + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 7d2426d..5f1a850 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -50,36 +50,39 @@ app:layout_constraintTop_toTopOf="parent" /> + app:siw_name="@string/survey_plan" /> + app:layout_constraintStart_toEndOf="@id/itemSurveyPlan" + app:layout_constraintTop_toBottomOf="@id/tvTitle1" + app:siw_icon="@drawable/icon_point_measurement" + app:siw_name="@string/engineering_metrology" /> - + app:layout_constraintStart_toEndOf="@id/itemEngineeringMetrology" + app:layout_constraintTop_toTopOf="@id/itemSurveyPlan" + app:siw_icon="@drawable/icon_lofting" + app:siw_name="@string/stakeout" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b9d0f0c..29717f0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,6 +3,8 @@ 工程测量 北斗应用 + 测量计划 + 工程计量 点测量 放样 流程审批 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 2e40eb5..696dc16 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -121,7 +121,8 @@