测量计划,测点实时上传

main
chenglifeng 6 months ago
parent f22ede9ee9
commit 6d7b185b20
  1. 6
      app/build.gradle
  2. 15
      app/src/main/java/com/project/survey/logic/viewmodel/ProjectViewModel.kt
  3. 25
      app/src/main/java/com/project/survey/model/PointEntry.kt
  4. 74
      app/src/main/java/com/project/survey/ui/instrument/setupstation/CoordinatePointsLibraryActivity.java
  5. 53
      app/src/main/java/com/project/survey/ui/instrument/setupstation/ResultsTheExportActivity.java
  6. 3
      app/src/main/java/com/project/survey/ui/instrument/setupstation/db/RecordsFixedDataBase.java
  7. 6
      app/src/main/java/com/project/survey/ui/pointmeasure/PointMeasureListActivity.kt
  8. 41
      app/src/main/java/com/project/survey/ui/pointmeasure/measure/PointSurveyNewActivity.java

@ -203,8 +203,10 @@ dependencies {
implementation Libs.webChatSdk
implementation Libs.xxPermissions
implementation project(':colorful')
annotationProcessor AndroidX.Room.compiler
annotationProcessor Libs.Glide.compiler
// annotationProcessor AndroidX.Room.compiler
kapt AndroidX.Room.compiler
// annotationProcessor Libs.Glide.compiler
kapt Libs.Glide.compiler
implementation Libs.LeanCloud.storage

@ -133,9 +133,24 @@ class ProjectViewModel : BaseViewModel() {
updateMeasureWorkStatus(workId, "BD_CLGZ_GCJL", status)
}
val uploadPointEntryResponse: LiveData<String>
get() = _uploadPointEntryResponse
private val _uploadPointEntryResponse = MutableLiveData<String>()
/**
* 测点记录录入
*/
fun uploadPointEntry(pointEntry: PointEntry) {
launch {
val res =
api.uploadPointEntry(SPUtils.getString(SPConstants.PROJECT_ID), arrayListOf(pointEntry))
if (res.success) {
_uploadPointEntryResponse.postValue(res.data)
} else {
errorResponse.postValue(res.message)
}
}
}
fun uploadPointEntry(pointEntryList: List<PointEntry>) {
launch {
val res =

@ -1,5 +1,9 @@
package com.project.survey.model
import com.bingce.data.surveyor.surveydata.pointsurvey.PointRecord
import com.bingce.device.Device
import com.bingce.device.enums.DeviceTypeEnum
data class PointEntry(
val name: String, //点名称 "点1"
val workId: String, //测量工作id "80ffa3b7701a46f9b320297e332d5678"
@ -17,4 +21,23 @@ data class PointEntry(
val delay: String, //延迟 "xx"
val jzt: String, //解状态 "xx"
val satellite: String, //结算卫星 "xx"
)
) {
constructor(workType: String, record: PointRecord) : this(
record.name,
record.jobId,
workType,
if (Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_RTK) "${record.deviceInfoData.rtkStatusData?.poleHeight}" else "${record.deviceInfoData.tsStatusData?.hr}",
record.remarks?:"",
"${record.x}",
"${record.y}",
"${record.h}",
"${record.longitude}",
"${record.latitude}",
if (Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_RTK) "${record.deviceInfoData.rtkStatusData?.hrms}" else "",
if (Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_RTK) "${record.deviceInfoData.rtkStatusData?.vrms}" else "",
if (Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_RTK) "${record.deviceInfoData.rtkStatusData?.pdop}" else "",
if (Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_RTK) "${record.deviceInfoData.rtkStatusData?.diffAge}" else "",
if (Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_RTK) record.deviceInfoData.rtkStatusData?.solutionState?:"" else "",
if (Device.getInstance().deviceType == DeviceTypeEnum.DEVICE_TYPE_RTK) "${record.deviceInfoData.rtkStatusData?.satSolutionNum}" else ""
)
}

@ -19,6 +19,8 @@ import androidx.paging.PagingLiveData;
import androidx.paging.PagingSource;
import androidx.recyclerview.widget.RecyclerView;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.bingce.data.cache.CachedCurrentJob;
import com.bingce.data.cache.CachedProject;
import com.bingce.data.database.DBQueryConstant;
@ -30,6 +32,7 @@ import com.bingce.data.surveyor.surveydata.pointsurvey.PointRecord;
import com.bingce.error.BingCeErrorCode;
import com.bingce.ui.BcDialogExt;
import com.bingce.utils.ActivityUtils;
import com.bingce.utils.IntentUtil;
import com.bingce.utils.SimpleTextWatcher;
import com.bingce.utils.ThreadPoolUtil;
import com.bingce.viewmodel.AbstractCoordinatePointsLibraryViewModelKt;
@ -95,7 +98,8 @@ public class CoordinatePointsLibraryActivity extends BaseSurveyNewActivity {
filterParameter, binding.etEnterNameCode.getText().toString().trim()
));
}
private List<PointRecord> getAllPoint(){
private List<PointRecord> getAllPoint() {
return PointDb.getInstance().rawQueryListData(CoordinatePointsLibraryActivitySQLiteUtils.searchSQLit(
jobId,
filterParameter, binding.etEnterNameCode.getText().toString().trim()
@ -107,8 +111,8 @@ public class CoordinatePointsLibraryActivity extends BaseSurveyNewActivity {
@Override
public void fireByKey(String key) {
ThreadPoolUtil.execute(() -> {
String projectId = CachedProject.currentProjectId();
jobId = CachedCurrentJob.currentJobId(projectId);
// String projectId = CachedProject.currentProjectId();
// jobId = CachedCurrentJob.currentJobId(projectId);
ThreadPoolUtil.executeInMain(() -> {
pagingDataLiveData.removeObservers(CoordinatePointsLibraryActivity.this);
pagingDataLiveData = PagingLiveData.cachedIn(PagingLiveData.getLiveData(pager), getLifecycle());
@ -145,6 +149,7 @@ public class CoordinatePointsLibraryActivity extends BaseSurveyNewActivity {
@Override
protected void initView() {
setTitle(getString(R.string.point_survey_point_library));
jobId = IntentUtil.stringExtra(this, KEY_JOB_ID);
if (App.instance.isThemeDark()) {
binding.topLayout.setBackgroundColor(getColor(R.color.theme_dark_black));
@ -175,7 +180,7 @@ public class CoordinatePointsLibraryActivity extends BaseSurveyNewActivity {
coordinatePointNameLibraryAdapter.resetSelPos();
coordinatePointLibraryAdapter.notifyDataSetChanged();
coordinatePointNameLibraryAdapter.notifyDataSetChanged();
}else {
} else {
coordinatePointLibraryAdapter.resetSelPos();
coordinatePointNameLibraryAdapter.resetSelPos();
coordinatePointLibraryAdapter.selAll();
@ -186,8 +191,8 @@ public class CoordinatePointsLibraryActivity extends BaseSurveyNewActivity {
});
ThreadPoolUtil.execute(() -> {
String projectId = CachedProject.currentProjectId();
jobId = CachedCurrentJob.currentJobId(projectId);
// String projectId = CachedProject.currentProjectId();
// jobId = CachedCurrentJob.currentJobId(projectId);
ThreadPoolUtil.executeInMain(() -> {
pagingDataLiveData = PagingLiveData.cachedIn(PagingLiveData.getLiveData(pager), getLifecycle());
pagingDataLiveData
@ -223,8 +228,8 @@ public class CoordinatePointsLibraryActivity extends BaseSurveyNewActivity {
filterParameter.setCodeKey(codeKey);
filterParameter.setRemarkKey(remarksKey);
ThreadPoolUtil.execute(() -> {
String projectId = CachedProject.currentProjectId();
jobId = CachedCurrentJob.currentJobId(projectId);
// String projectId = CachedProject.currentProjectId();
// jobId = CachedCurrentJob.currentJobId(projectId);
ThreadPoolUtil.executeInMain(() -> {
pagingDataLiveData.removeObservers(this);
pagingDataLiveData =
@ -252,25 +257,40 @@ public class CoordinatePointsLibraryActivity extends BaseSurveyNewActivity {
ToastUtils.showShort(R.string.please_select_one_data_item);
return;
}
BcDialogExt.create().showMessage(getString(R.string.warning),"确定要删除选择的点吗?",
getString(R.string.confirm), getString(R.string.cancel), (baseDialog, view) -> {
ThreadPoolUtil.execute(() -> {
PointDb.getInstance().delete(selItem);
resetSelPos();
});
return false;
}, (baseDialog, view) -> false);
new MaterialDialog.Builder(this)
.title(R.string.warning)
.content("确定要删除选择的点吗?")
.negativeText(R.string.cancel)
.positiveText(R.string.confirm)
.onPositive((materialDialog, dialogAction) -> {
ThreadPoolUtil.execute(() -> {
PointDb.getInstance().delete(selItem);
resetSelPos();
});
}).show();
// BcDialogExt.create().showMessage(getString(R.string.warning),"确定要删除选择的点吗?",
// getString(R.string.confirm), getString(R.string.cancel), (baseDialog, view) -> {
// ThreadPoolUtil.execute(() -> {
// PointDb.getInstance().delete(selItem);
// resetSelPos();
// });
// return false;
// }, (baseDialog, view) -> false);
});
binding.pointsLibraryBtnExport.setOnClickListener(v -> {
ResultsTheExportActivity.start(CoordinatePointsLibraryActivity.this, "导出", false,
filterParameter.getNameKey(),
filterParameter.getCodeKey(),
filterParameter.getRemarkKey(),
filterParameter.getDateStart(),
filterParameter.getDateEnd());
});
// 导出
binding.pointsLibraryBtnExport.setOnClickListener(v ->
ResultsTheExportActivity.start(
this,
jobId,
false,
filterParameter.getNameKey(),
filterParameter.getCodeKey(),
filterParameter.getRemarkKey(),
filterParameter.getDateStart(),
filterParameter.getDateEnd())
);
binding.pointsLibraryBtnConfirm.setOnClickListener(new View.OnClickListener() {
@Override
@ -301,7 +321,7 @@ public class CoordinatePointsLibraryActivity extends BaseSurveyNewActivity {
}
});
boolean isSelect = getIntent().getBooleanExtra(KEY_IS_PICK,false);
boolean isSelect = getIntent().getBooleanExtra(KEY_IS_PICK, false);
if (isSelect) {
binding.pointsLibraryBtnConfirm.setVisibility(View.VISIBLE);
@ -368,6 +388,7 @@ public class CoordinatePointsLibraryActivity extends BaseSurveyNewActivity {
}
}
});
public static void start(FragmentActivity fragmentActivity) {
ThreadPoolUtil.execute(() -> {
String projectId = CachedProject.currentProjectId();
@ -383,6 +404,7 @@ public class CoordinatePointsLibraryActivity extends BaseSurveyNewActivity {
fragmentActivity.startActivity(intent);
});
}
private static final String RESULT_ID = "id";
private static final String RESULT_NAME = "name";
private static final String RESULT_CODE = "code";
@ -494,7 +516,7 @@ public class CoordinatePointsLibraryActivity extends BaseSurveyNewActivity {
binding.bodyRv.removeOnScrollListener(rightScrollListener);
leftScrollListener = null;
rightScrollListener = null;
}catch (Exception e){
} catch (Exception e) {
e.printStackTrace();
}
super.onDestroy();

@ -4,6 +4,7 @@ import static androidx.recyclerview.widget.LinearLayoutManager.VERTICAL;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import androidx.activity.result.ActivityResultLauncher;
@ -47,6 +48,7 @@ import java.util.Arrays;
import java.util.Date;
import java.util.List;
import blankj.utilcode.util.ActivityUtils;
import blankj.utilcode.util.ToastUtils;
@ -633,19 +635,42 @@ public class ResultsTheExportActivity extends BaseSurveyNewActivity {
private final static String KEY_START_DATE = "KEYSTARTDATE";
private final static String KEY_END_DATE = "KEYENDDATE";
public static void start(Context context, String title, Boolean isImport, String name, String code, String remark, Date startDate, Date endDate) {
ThreadPoolUtil.execute(() -> {
String jobId = CachedCurrentJob.currentJobId(CachedProject.currentProjectId());
Intent intent = new Intent(context, ResultsTheExportActivity.class);
intent.putExtra(ConstUtils.intentConst.keyActivityTitleName, title);
intent.putExtra(ConstUtils.intentConst.keyIsImport, isImport);
intent.putExtra(KEY_JOB_ID, jobId);
intent.putExtra(KEY_NAME, name);
intent.putExtra(KEY_CODE, code);
intent.putExtra(KEY_REMARK, remark);
intent.putExtra(KEY_START_DATE, startDate == null ? null : startDate.getTime());
intent.putExtra(KEY_END_DATE, endDate == null ? SystemUtils.getSimpleDateTimeStamp() : endDate.getTime());
context.startActivity(intent);
});
// public static void start(Context context, String title, Boolean isImport, String name, String code, String remark, Date startDate, Date endDate) {
// ThreadPoolUtil.execute(() -> {
// String jobId = CachedCurrentJob.currentJobId(CachedProject.currentProjectId());
// Intent intent = new Intent(context, ResultsTheExportActivity.class);
// intent.putExtra(ConstUtils.intentConst.keyActivityTitleName, title);
// intent.putExtra(ConstUtils.intentConst.keyIsImport, isImport);
// intent.putExtra(KEY_JOB_ID, jobId);
// intent.putExtra(KEY_NAME, name);
// intent.putExtra(KEY_CODE, code);
// intent.putExtra(KEY_REMARK, remark);
// intent.putExtra(KEY_START_DATE, startDate == null ? null : startDate.getTime());
// intent.putExtra(KEY_END_DATE, endDate == null ? SystemUtils.getSimpleDateTimeStamp() : endDate.getTime());
// context.startActivity(intent);
// });
// }
public static void start(Context context, String jobId, Boolean isImport, String name, String code, String remark, Date startDate, Date endDate) {
// Bundle bundle = new Bundle();
// bundle.putString(ConstUtils.intentConst.keyActivityTitleName, "导出");
// bundle.putBoolean(ConstUtils.intentConst.keyIsImport, isImport);
// bundle.putString(KEY_JOB_ID, jobId);
// bundle.putString(KEY_NAME, name);
// bundle.putString(KEY_CODE, code);
// bundle.putString(KEY_REMARK, remark);
// bundle.putLong(KEY_START_DATE, startDate == null ? null : startDate.getTime());
// bundle.putLong(KEY_END_DATE, endDate == null ? SystemUtils.getSimpleDateTimeStamp() : endDate.getTime());
// ActivityUtils.startActivity(bundle, ResultsTheExportActivity.class);
Intent intent = new Intent(context, ResultsTheExportActivity.class);
intent.putExtra(ConstUtils.intentConst.keyActivityTitleName, "导出");
intent.putExtra(ConstUtils.intentConst.keyIsImport, isImport);
intent.putExtra(KEY_JOB_ID, jobId);
intent.putExtra(KEY_NAME, name);
intent.putExtra(KEY_CODE, code);
intent.putExtra(KEY_REMARK, remark);
intent.putExtra(KEY_START_DATE, startDate == null ? null : startDate.getTime());
intent.putExtra(KEY_END_DATE, endDate == null ? SystemUtils.getSimpleDateTimeStamp() : endDate.getTime());
context.startActivity(intent);
}
}

@ -7,6 +7,7 @@ import androidx.room.Room;
import androidx.room.RoomDatabase;
import com.bingce.path.PathManager;
import com.project.survey.ui.instrument.setupstation.db.resultformat.FormatRecord;
import com.project.survey.ui.instrument.setupstation.db.resultformat.FormatRecordDao;
@ -34,7 +35,7 @@ public abstract class RecordsFixedDataBase extends RoomDatabase {
return Room.databaseBuilder(
context.getApplicationContext(),
RecordsFixedDataBase.class,
DB_NAME)
PathManager.defaultDbPath(context, DB_NAME))
.enableMultiInstanceInvalidation()
.fallbackToDestructiveMigrationOnDowngrade()
.build();

@ -22,8 +22,8 @@ class PointMeasureListActivity : BaseBindingActivity<ActivityPointMeasureListBin
companion object {
const val KEY_TYPE = "KEY_TYPE"
const val TYPE_SURVEY_PLAN = "TYPE_SURVEY_PLAN"//测量计划
const val TYPE_PROJECT_MEASURE = "TYPE_PROJECT_MEASURE"//工程计量
const val TYPE_SURVEY_PLAN = "BD_CLJH"//测量计划
const val TYPE_PROJECT_MEASURE = "BD_CLGZ_GCJL"//工程计量
fun start(type: String) {
ActivityNavUtil.startActivity<PointMeasureListActivity> {
@ -71,7 +71,7 @@ class PointMeasureListActivity : BaseBindingActivity<ActivityPointMeasureListBin
// 进入测量
adapter.addOnItemChildClickListener(R.id.tvEnterMeasure) { adapter, _, position ->
adapter.getItem(position)?.let { bean ->
PointSurveyNewActivity.start(mContext)
PointSurveyNewActivity.start(type, bean.BD_CLJH_ID)
// viewModel.updateMeasureWorkStatus(bean.BD_CLJH_ID, if (type == TYPE_SURVEY_PLAN) "BD_CLJH" else "BD_CLGZ_GCJL", "执行中")
}
}

@ -14,6 +14,7 @@ import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.SystemClock;
import android.text.TextUtils;
import android.util.DisplayMetrics;
@ -30,6 +31,8 @@ import android.widget.RadioButton;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.preference.PreferenceManager;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@ -66,9 +69,12 @@ import com.bingce.utils.ThreadPoolUtil;
import com.bingce.utils.Util;
import com.project.survey.App;
import com.project.survey.R;
import com.project.survey.constants.SPConstants;
import com.project.survey.databinding.ActivityPointSurveyNewBinding;
import com.project.survey.dialog.CustomLineChartDialog;
import com.project.survey.logic.viewmodel.ProjectViewModel;
import com.project.survey.model.ControlRecord;
import com.project.survey.model.PointEntry;
import com.project.survey.ui.base.BaseSurveyNewActivity;
import com.project.survey.ui.instrument.setupstation.CoordinatePointsLibraryActivity;
import com.project.survey.ui.instrument.setupstation.LauncherEvent;
@ -77,6 +83,7 @@ import com.project.survey.ui.pointmeasure.measure.util.SurveyToolBarClickListene
import com.project.survey.util.CommonUtils;
import com.project.survey.util.DeviceConnectUtil;
import com.project.survey.util.DrawableUtils;
import com.project.survey.util.SPUtils;
import com.project.survey.util.SurveyUIUtils;
import com.project.survey.widget.bingce.dragdrop.DefaultItemCallback;
import com.project.survey.widget.bingce.dragdrop.DefaultItemTouchHelper;
@ -91,6 +98,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import blankj.utilcode.util.ActivityUtils;
import blankj.utilcode.util.ToastUtils;
import blankj.utilcode.util.Utils;
import cn.liuyanbing.surveyor.model.base.BasePoint;
@ -103,6 +111,13 @@ import lecho.hellocharts.renderer.LineChartRenderer;
* 点测量
*/
public class PointSurveyNewActivity extends BaseSurveyNewActivity implements View.OnClickListener {
private static final String KEY_WORK_TYPE = "workType";
private final static String KEY_JOB_ID = "jobId";
private final static String KEY_PROJECT_ID = "projectId";
private final static String KEY_ROAD_ID = "roadId";
private ProjectViewModel viewModel;
private ActivityPointSurveyNewBinding binding;
private List<PointRecord> surveyBaseRecordPointList;
private final Line knowRecordPointLine = new Line();
@ -163,6 +178,8 @@ public class PointSurveyNewActivity extends BaseSurveyNewActivity implements Vie
DrawableUtils.tintModifyColorVector(binding.ivScale, R.drawable.ic_scale, R.color.white);
DrawableUtils.setClickBackgroundEffect(binding.bottomSheet, R.color.theme_dark_black, R.color.theme_dark_black, 10, RADIUS_TOP);
}
viewModel = new ViewModelProvider(this).get(ProjectViewModel.class);
viewModel.getUploadPointEntryResponse().observe(this, ToastUtils::showShort);
preferences = PreferenceManager.getDefaultSharedPreferences(this);
//比例尺
@ -595,12 +612,14 @@ public class PointSurveyNewActivity extends BaseSurveyNewActivity implements Vie
ToastUtils.showShort(R.string.point_name_cannot_be_empty);
return;
}
String workType = IntentUtil.stringExtra(this, KEY_WORK_TYPE);
String jobId = IntentUtil.stringExtra(this, KEY_JOB_ID);
String projectId = IntentUtil.stringExtra(this, KEY_PROJECT_ID);
String roadId = IntentUtil.stringExtra(this, KEY_ROAD_ID);
// String projectId = IntentUtil.stringExtra(this, KEY_PROJECT_ID);
String projectId = SPUtils.INSTANCE.getString(SPConstants.PROJECT_ID, "");
// String roadId = IntentUtil.stringExtra(this, KEY_ROAD_ID);
DeviceInfoData deviceInfoData = DeviceUtils.collectDeviceInfo();
PointRecord record = new PointRecord(projectId, jobId, roadId
PointRecord record = new PointRecord(projectId, jobId, ""
, pointType, pointName, code
, recordRemarks
, x, y, z
@ -624,14 +643,13 @@ public class PointSurveyNewActivity extends BaseSurveyNewActivity implements Vie
binding.etPointName.setText(Util.lastOfStringPlusStep(pointName, Device.getInstance().rtkPointNameAddStep));
});
PointDb.getInstance().save(record);
PointEntry pointEntry = new PointEntry(workType, record);
viewModel.uploadPointEntry(pointEntry);
});
}
private static final String KEY_JOB_NAME = "jobName";
private final static String KEY_JOB_ID = "jobId";
private final static String KEY_PROJECT_ID = "projectId";
private final static String KEY_ROAD_ID = "roadId";
@Override
protected void initData() {
ThreadPoolUtil.execute(() -> {
@ -1382,4 +1400,11 @@ public class PointSurveyNewActivity extends BaseSurveyNewActivity implements Vie
binding.baseSurveyStakingSetting.tvTiltPrimAuto.setTextColor(getColor(R.color.color_BCBCBC));
}
}
public static void start(String workType, String jobId) {
Bundle bundle = new Bundle();
bundle.putString(KEY_WORK_TYPE, workType);
bundle.putString(KEY_JOB_ID, jobId);
ActivityUtils.startActivity(bundle, PointSurveyNewActivity.class);
}
}
Loading…
Cancel
Save