registerPush(@Header("token") String token,
@Field("clientId") String clientId);
+
+ /**
+ * 公厕打扫签到
+ *
+ * http://111.198.10.15:11409/toiletClean/add
+ */
+ @FormUrlEncoded
+ @POST("/toiletClean/add")
+ Observable cleanToilet(@Header("token") String token,
+ @Field("toiletId") String toiletId,
+ @Field("userId") String userId,
+ @Field("lng") String lng,
+ @Field("lat") String lat,
+ @Field("cleanTime") String cleanTime,
+ @Field("photo") String photo,
+ @Field("workContent") String workContent);
}
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..d3d6972
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CleanToiletModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CleanToiletModelImpl.java
new file mode 100644
index 0000000..eb7fac5
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/mvp/model/CleanToiletModelImpl.java
@@ -0,0 +1,53 @@
+package com.casic.dcms.mvp.model;
+
+import com.casic.dcms.bean.ActionResultBean;
+import com.casic.dcms.utils.retrofit.RetrofitServiceManager;
+
+import rx.Observable;
+import rx.Observer;
+import rx.Subscription;
+import rx.android.schedulers.AndroidSchedulers;
+import rx.schedulers.Schedulers;
+
+public class CleanToiletModelImpl implements ICleanToiletModel {
+
+ private OnGetCleanResultListener listener;
+
+ public CleanToiletModelImpl(OnGetCleanResultListener cleanResultListener) {
+ this.listener = cleanResultListener;
+ }
+
+ /**
+ * 数据回调接口
+ */
+ public interface OnGetCleanResultListener {
+ void onSuccess(ActionResultBean resultBean);
+
+ void onFailure(Throwable throwable);
+ }
+
+ @Override
+ public Subscription sendRetrofitRequest(String toiletId, String userId, String lng, String lat, String cleanTime, String photo, String workContent) {
+ Observable observable = RetrofitServiceManager.getCleanToiletResult(toiletId, userId, lng, lat, cleanTime, photo, workContent);
+ return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() {
+ @Override
+ public void onCompleted() {
+
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ if (e.getCause() != null) {
+ listener.onFailure(e);
+ }
+ }
+
+ @Override
+ public void onNext(ActionResultBean resultBean) {
+ if (resultBean != null) {
+ listener.onSuccess(resultBean);
+ }
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICleanToiletModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICleanToiletModel.java
new file mode 100644
index 0000000..88bdd50
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/mvp/model/ICleanToiletModel.java
@@ -0,0 +1,8 @@
+package com.casic.dcms.mvp.model;
+
+import rx.Subscription;
+
+public interface ICleanToiletModel {
+ Subscription sendRetrofitRequest(String toiletId, String userId, String lng, String lat,
+ String cleanTime, String photo, String workContent);
+}
diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CleanToiletPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CleanToiletPresenterImpl.java
new file mode 100644
index 0000000..c59b5ca
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CleanToiletPresenterImpl.java
@@ -0,0 +1,37 @@
+package com.casic.dcms.mvp.presenter;
+
+import com.casic.dcms.bean.ActionResultBean;
+import com.casic.dcms.mvp.BasePresenter;
+import com.casic.dcms.mvp.model.CleanToiletModelImpl;
+import com.casic.dcms.mvp.view.IPublicToiletView;
+
+public class CleanToiletPresenterImpl extends BasePresenter implements ICleanToiletPresenter, CleanToiletModelImpl.OnGetCleanResultListener {
+
+ private IPublicToiletView view;
+ private CleanToiletModelImpl actionModel;
+
+ public CleanToiletPresenterImpl(IPublicToiletView toiletView) {
+ this.view = toiletView;
+ actionModel = new CleanToiletModelImpl(this);
+ }
+
+ @Override
+ public void onSuccess(ActionResultBean resultBean) {
+ view.obtainCleanResult(resultBean);
+ }
+
+ @Override
+ public void onFailure(Throwable throwable) {
+
+ }
+
+ @Override
+ public void onReadyRetrofitRequest(String toiletId, String userId, String lng, String lat, String cleanTime, String photo, String workContent) {
+ addSubscription(actionModel.sendRetrofitRequest(toiletId, userId, lng, lat, cleanTime, photo, workContent));
+ }
+
+ @Override
+ public void disposeRetrofitRequest() {
+ unSubscription();
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICleanToiletPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICleanToiletPresenter.java
new file mode 100644
index 0000000..0b38424
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICleanToiletPresenter.java
@@ -0,0 +1,8 @@
+package com.casic.dcms.mvp.presenter;
+
+public interface ICleanToiletPresenter {
+ void onReadyRetrofitRequest(String toiletId, String userId, String lng, String lat,
+ String cleanTime, String photo, String workContent);
+
+ void disposeRetrofitRequest();
+}
diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPublicToiletView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPublicToiletView.java
new file mode 100644
index 0000000..0272202
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/mvp/view/IPublicToiletView.java
@@ -0,0 +1,7 @@
+package com.casic.dcms.mvp.view;
+
+import com.casic.dcms.bean.ActionResultBean;
+
+public interface IPublicToiletView {
+ void obtainCleanResult(ActionResultBean resultBean);
+}
diff --git a/app/src/main/java/com/casic/dcms/service/UploadLocationService.java b/app/src/main/java/com/casic/dcms/service/UploadLocationService.java
index 52c10a5..a7ff4f7 100644
--- a/app/src/main/java/com/casic/dcms/service/UploadLocationService.java
+++ b/app/src/main/java/com/casic/dcms/service/UploadLocationService.java
@@ -42,7 +42,7 @@
MainActivity.sendMessage(message);
}
}
- });
+ }, false);
}
@Override
diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
index 4f06f45..552cb77 100644
--- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
@@ -392,7 +392,7 @@
loadingDialog.dismiss();
}
}
- });
+ }, true);
break;
default:
break;
diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java
index f9cd111..0cd126c 100644
--- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java
@@ -149,7 +149,7 @@
loadingDialog.dismiss();
}
}
- });
+ }, true);
break;
default:
break;
diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java
index 1064b85..b421b01 100644
--- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java
@@ -7,9 +7,11 @@
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.location.Location;
+import android.text.InputType;
+import android.text.TextUtils;
+import android.util.Log;
import android.view.View;
import android.widget.ImageView;
-import android.widget.TextClock;
import android.widget.TextView;
import androidx.annotation.Nullable;
@@ -20,7 +22,9 @@
import com.casic.dcms.R;
import com.casic.dcms.base.BaseActivity;
import com.casic.dcms.bean.ActionResultBean;
+import com.casic.dcms.mvp.presenter.CleanToiletPresenterImpl;
import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl;
+import com.casic.dcms.mvp.view.IPublicToiletView;
import com.casic.dcms.mvp.view.IUploadFileView;
import com.casic.dcms.utils.ColorHelper;
import com.casic.dcms.utils.Constant;
@@ -28,6 +32,7 @@
import com.casic.dcms.utils.GlideLoadEngine;
import com.casic.dcms.utils.LocationHelper;
import com.casic.dcms.utils.StringHelper;
+import com.casic.dcms.utils.TimeOrDateUtil;
import com.casic.dcms.utils.ToastHelper;
import com.casic.dcms.utils.callback.ILocationListener;
import com.esri.arcgisruntime.geometry.Point;
@@ -40,15 +45,20 @@
import com.esri.arcgisruntime.mapping.view.MapView;
import com.esri.arcgisruntime.symbology.PictureMarkerSymbol;
import com.esri.arcgisruntime.util.ListenableList;
+import com.google.gson.Gson;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.entity.LocalMedia;
import com.qmuiteam.qmui.widget.QMUITopBarLayout;
+import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
import com.qmuiteam.qmui.widget.dialog.QMUITipDialog;
import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton;
import java.io.File;
+import java.util.ArrayList;
import butterknife.BindView;
import butterknife.OnClick;
@@ -57,8 +67,10 @@
import cn.bertsir.zbar.QrManager;
import cn.bertsir.zbar.view.ScanLineView;
-public class PublicToiletActivity extends BaseActivity implements View.OnClickListener, IUploadFileView {
+public class PublicToiletActivity extends BaseActivity implements View.OnClickListener,
+ IUploadFileView, IPublicToiletView {
+ private static final String TAG = "PublicToiletActivity";
private Context context = this;
@BindView(R.id.topLayout)
QMUITopBarLayout topLayout;
@@ -66,6 +78,8 @@
MapView mapView;
@BindView(R.id.locationStreetView)
TextView locationStreetView;
+ @BindView(R.id.workContentView)
+ TextView workContentView;
@BindView(R.id.toiletIdView)
TextView toiletIdView;
@BindView(R.id.startScanView)
@@ -76,12 +90,12 @@
ImageView takePictureView;
@BindView(R.id.signInButton)
QMUIRoundButton signInButton;
- @BindView(R.id.timeClockView)
- TextClock timeClockView;
private UploadImagePresenterImpl uploadImagePresenter;
private QMUITipDialog submitDialog;
- private String imagePath;//服务器返回的拍照数据集
+ private String imagePath = "";//服务器返回的拍照数据
+ private QMUITipDialog loadingDialog;
+ private CleanToiletPresenterImpl cleanToiletPresenter;
@Override
public int initLayoutView() {
@@ -102,8 +116,8 @@
@Override
public void initData() {
- double lng = getIntent().getDoubleExtra("lng", 0);
- double lat = getIntent().getDoubleExtra("lat", 0);
+ double lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG);
+ double lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT);
LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
@Override
public void onLocationGet(Location location) {
@@ -113,10 +127,10 @@
locationStreetView.setText("定位失败");
}
}
- });
+ }, false);
mapView.setAttributionTextVisible(false);//去掉左下角属性标识
- mapView.setViewpointScaleAsync(12000);
+ mapView.setViewpointScaleAsync(18000);
ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS);
//创建底图、并设置底图图层
@@ -125,16 +139,22 @@
arcGISMap.setBasemap(basemap);
mapView.setMap(arcGISMap);
-// Point point = new Point(lng, lat, mapView.getSpatialReference());
-// mapView.setViewpointCenterAsync(point, 1000);//标注到指定经纬度并放大地图显示
-// //添加图片Marker
-// addPictureMarker(point);
+ Point point = new Point(lng, lat, mapView.getSpatialReference());
+ mapView.setViewpointCenterAsync(point, 1000);//标注到指定经纬度并放大地图显示
+ //添加图片Marker
+ addPictureMarker(point);
uploadImagePresenter = new UploadImagePresenterImpl(this);
+ cleanToiletPresenter = new CleanToiletPresenterImpl(this);
submitDialog = new QMUITipDialog.Builder(this)
.setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING)
.setTipWord("提交中,请稍后")
.create();
+
+ loadingDialog = new QMUITipDialog.Builder(this)
+ .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING)
+ .setTipWord("定位中,请稍后")
+ .create();
}
@Override
@@ -146,8 +166,8 @@
Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line);
BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap);
PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable);
- pictureMarker.setHeight(24);
- pictureMarker.setWidth(24);
+ pictureMarker.setWidth(64);
+ pictureMarker.setHeight(42);
pictureMarker.loadAsync();
Graphic graphic = new Graphic(point, pictureMarker);
@@ -158,52 +178,122 @@
graphicsOverlays.add(mGraphicsOverlay);
}
- @OnClick({R.id.removeToLocalView, R.id.startScanView, R.id.takePictureView})
+ @OnClick({R.id.removeToLocalView, R.id.selectWorkLayout, R.id.startScanView, R.id.takePictureView, R.id.signInButton})
@Override
public void onClick(View v) {
- if (v.getId() == R.id.removeToLocalView) {
- LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
- @Override
- public void onLocationGet(Location location) {
- if (location != null) {
- mapView.setViewpointCenterAsync(new Point(location.getLongitude(), location.getLatitude()));
+ switch (v.getId()) {
+ case R.id.removeToLocalView:
+ loadingDialog.show();
+ LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
+ @Override
+ public void onLocationGet(Location location) {
+ if (location != null) {
+ mapView.setViewpointCenterAsync(new Point(location.getLongitude(), location.getLatitude()));
+ loadingDialog.dismiss();
+ }
}
- }
- });
- } else if (v.getId() == R.id.startScanView) {
- QrConfig qrConfig = new QrConfig.Builder().setTitleText("扫一扫") //设置Title文字
- .setShowLight(true) //显示手电筒按钮
- .setShowTitle(true) //显示Title
- .setScanType(QrConfig.TYPE_ALL)//识别二维码和条形码
- .setShowAlbum(false) //显示从相册选择按钮
- .setCornerColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)) //设置扫描框颜色
- .setLineColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)) //设置扫描线颜色
- .setLineSpeed(QrConfig.LINE_MEDIUM) //设置扫描线速度
- .setDesText(null) //扫描框下文字
- .setShowDes(true) //是否显示扫描框下面文字
- .setPlaySound(true) //是否扫描成功后bi~的声音
- .setIsOnlyCenter(true) //是否只识别框中内容(默认为全屏识别)
- .setTitleBackgroudColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor))
- .setTitleTextColor(Color.WHITE) //设置Title文字颜色
- .setScreenOrientation(QrConfig.SCREEN_PORTRAIT) //设置屏幕方式
- .setScanLineStyle(ScanLineView.style_hybrid) //扫描线样式
- .setShowVibrator(true) //是否震动提醒
- .create();
- QrManager.getInstance().init(qrConfig).startScan(this, new QrManager.OnScanResultCallback() {
- @Override
- public void onScanSuccess(ScanResult result) {
- toiletIdView.setText(result.content);
- }
- });
- } else if (v.getId() == R.id.takePictureView) {
- PictureSelector.create(this)
- .openCamera(PictureMimeType.ofImage())
- .imageEngine(GlideLoadEngine.createGlideEngine())
- .maxSelectNum(1)
- .isCompress(true)
- .compressQuality(80)
- .compressSavePath(FileUtils.getImageCompressPath())
- .forResult(PictureConfig.REQUEST_CAMERA);
+ }, true);
+ break;
+ case R.id.selectWorkLayout:
+ new QMUIBottomSheet.BottomListSheetBuilder(this)
+ .setTitle("请填写您此次工作的内容")
+ .addItem("日常保洁")
+ .addItem("自定义")
+ .setGravityCenter(true)
+ .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() {
+ @Override
+ public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) {
+ dialog.dismiss();
+
+ showEditDialog(tag);
+ }
+ }).build().show();
+ break;
+ case R.id.startScanView:
+ QrConfig qrConfig = new QrConfig.Builder().setTitleText("扫一扫") //设置Title文字
+ .setShowLight(true) //显示手电筒按钮
+ .setShowTitle(true) //显示Title
+ .setScanType(QrConfig.TYPE_ALL)//识别二维码和条形码
+ .setShowAlbum(false) //显示从相册选择按钮
+ .setCornerColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)) //设置扫描框颜色
+ .setLineColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)) //设置扫描线颜色
+ .setLineSpeed(QrConfig.LINE_MEDIUM) //设置扫描线速度
+ .setDesText(null) //扫描框下文字
+ .setShowDes(true) //是否显示扫描框下面文字
+ .setPlaySound(true) //是否扫描成功后bi~的声音
+ .setIsOnlyCenter(true) //是否只识别框中内容(默认为全屏识别)
+ .setTitleBackgroudColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor))
+ .setTitleTextColor(Color.WHITE) //设置Title文字颜色
+ .setScreenOrientation(QrConfig.SCREEN_PORTRAIT) //设置屏幕方式
+ .setScanLineStyle(ScanLineView.style_hybrid) //扫描线样式
+ .setShowVibrator(true) //是否震动提醒
+ .create();
+ QrManager.getInstance().init(qrConfig).startScan(this, new QrManager.OnScanResultCallback() {
+ @Override
+ public void onScanSuccess(ScanResult result) {
+ toiletIdView.setText(result.content);
+ }
+ });
+ break;
+ case R.id.takePictureView:
+ PictureSelector.create(this)
+ .openCamera(PictureMimeType.ofImage())
+ .imageEngine(GlideLoadEngine.createGlideEngine())
+ .maxSelectNum(1)
+ .isCompress(true)
+ .compressQuality(80)
+ .compressSavePath(FileUtils.getImageCompressPath())
+ .forResult(PictureConfig.REQUEST_CAMERA);
+ break;
+ case R.id.signInButton:
+ LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
+ @Override
+ public void onLocationGet(Location location) {
+ if (location != null) {
+ String toiletId = toiletIdView.getText().toString();
+ if (TextUtils.isEmpty(toiletId)) {
+ ToastHelper.showToast("公厕标识不能为空", ToastHelper.WARING);
+ return;
+ }
+
+ double longitude = location.getLongitude();
+ double latitude = location.getLatitude();
+
+ String cleanTime = TimeOrDateUtil.timestampToDate(System.currentTimeMillis());
+ cleanToiletPresenter.onReadyRetrofitRequest(toiletId, StringHelper.getUserId(),
+ String.valueOf(longitude), String.valueOf(latitude), cleanTime, imagePath,
+ StringHelper.filterString(workContentView.getText().toString()));
+ } else {
+ ToastHelper.showToast("定位失败,无法签到", ToastHelper.WARING);
+ }
+ }
+ }, true);
+ break;
+ }
+ }
+
+ private void showEditDialog(String tag) {
+ if (tag.equals("自定义")) {
+ QMUIDialog.EditTextDialogBuilder builder = new QMUIDialog.EditTextDialogBuilder(context);
+ builder.setTitle("自定义工作内容")
+ .setPlaceholder("请输入您此次的工作内容")
+ .setInputType(InputType.TYPE_CLASS_TEXT)
+ .addAction("取消", (dialog, index) -> dialog.dismiss())
+ .addAction("确定", new QMUIDialogAction.ActionListener() {
+ @Override
+ public void onClick(QMUIDialog dialog, int index) {
+ String inputStr = builder.getEditText().getText().toString();
+ if (!TextUtils.isEmpty(inputStr)) {
+ workContentView.setText(inputStr);
+ dialog.dismiss();
+ } else {
+ ToastHelper.showToast("自定义工作内容不能为空", ToastHelper.WARING);
+ }
+ }
+ });
+ builder.create().show();
+ } else {
+ workContentView.setText(tag);
}
}
@@ -245,14 +335,18 @@
this.imagePath = url;
String realPath = StringHelper.appendCompleteURL(url);
- Glide.with(context)
- .load(realPath)
- .apply(new RequestOptions().error(R.drawable.ic_load_error))
- .into(pictureView);
+ ArrayList urls = new ArrayList<>();
+ urls.add(realPath);
+
+ Glide.with(context).load(realPath)
+ .apply(new RequestOptions().error(R.drawable.ic_load_error)).into(pictureView);
pictureView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
-
+ Intent intent = new Intent(context, BigImageActivity.class);
+ intent.putExtra("index", 0);
+ intent.putStringArrayListExtra("images", urls);
+ startActivity(intent);
}
});
}
@@ -269,10 +363,18 @@
}
@Override
+ public void obtainCleanResult(ActionResultBean resultBean) {
+ Log.d(TAG, "obtainUploadAudioResult: " + new Gson().toJson(resultBean));
+ }
+
+ @Override
protected void onDestroy() {
super.onDestroy();
if (uploadImagePresenter != null) {
uploadImagePresenter.disposeRetrofitRequest();
}
+ if (cleanToiletPresenter != null) {
+ cleanToiletPresenter.disposeRetrofitRequest();
+ }
}
}
diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java
index 2a855ba..2ae9aa6 100644
--- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java
@@ -96,6 +96,7 @@
StringHelper.saveUserPhone(data.getPhone());
StringHelper.saveUserDept(data.getDeptName());
StringHelper.saveUserDeptId(data.getDeptId());
+ StringHelper.saveUserId(data.getId());
}
}
diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java
index 3ee2612..9f864db 100644
--- a/app/src/main/java/com/casic/dcms/utils/Constant.java
+++ b/app/src/main/java/com/casic/dcms/utils/Constant.java
@@ -14,6 +14,8 @@
Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO,
Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.CALL_PHONE, Manifest.permission.READ_PHONE_STATE};
+ public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"};
+ public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"};
public static final List ANALYSIS_ICONS = Arrays.asList(
R.drawable.ic_wtly, R.drawable.ic_ajzt, R.drawable.ic_gfwt,
@@ -30,8 +32,6 @@
Color.rgb(216, 248, 183), Color.rgb(129, 178, 20),
Color.rgb(120, 104, 230)};
- public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"};
- public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"};
public static final String IP_KEY = "BASE_IP";
public static final long FIVE_YEARS = 5L * 365 * 1000 * 60 * 60 * 24L;
diff --git a/app/src/main/java/com/casic/dcms/utils/LocationHelper.java b/app/src/main/java/com/casic/dcms/utils/LocationHelper.java
index 2fe93d1..947535e 100644
--- a/app/src/main/java/com/casic/dcms/utils/LocationHelper.java
+++ b/app/src/main/java/com/casic/dcms/utils/LocationHelper.java
@@ -26,34 +26,39 @@
/**
* 获取当前定位
*/
- public static void obtainCurrentLocation(Context context, ILocationListener listener) {
+ public static void obtainCurrentLocation(Context context, ILocationListener listener, boolean isOnce) {
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
LocationManager mLocationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
- //位置变化时更新位置
- mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 30 * 1000, 10, new LocationListener() {
- @Override
- public void onLocationChanged(@NotNull Location location) {
- listener.onLocationGet(location);
- }
+ if (isOnce) {
+ Location location = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ listener.onLocationGet(location);
+ } else {
+ //位置变化时更新位置
+ mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 30 * 1000, 10, new LocationListener() {
+ @Override
+ public void onLocationChanged(@NotNull Location location) {
+ listener.onLocationGet(location);
+ }
- @Override
- public void onStatusChanged(String provider, int status, Bundle extras) {
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
- }
+ }
- @Override
- public void onProviderEnabled(@NotNull String provider) {
+ @Override
+ public void onProviderEnabled(@NotNull String provider) {
- }
+ }
- @Override
- public void onProviderDisabled(@NotNull String provider) {
+ @Override
+ public void onProviderDisabled(@NotNull String provider) {
- }
- });
+ }
+ });
+ }
}
/**
diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java
index 1194333..254c847 100644
--- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java
+++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java
@@ -21,6 +21,14 @@
return (String) SaveKeyValues.getValue("userAccount", "");
}
+ public static void saveUserId(String userId) {
+ SaveKeyValues.putValue("userId", userId);
+ }
+
+ public static String getUserId() {
+ return (String) SaveKeyValues.getValue("userId", "");
+ }
+
public static void saveUserName(String name) {
SaveKeyValues.putValue("userName", name);
}
diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java
index ad97454..bbf2de9 100644
--- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java
+++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java
@@ -440,4 +440,20 @@
@POST("/userPush/register")
Observable registerPush(@Header("token") String token,
@Field("clientId") String clientId);
+
+ /**
+ * 公厕打扫签到
+ *
+ * http://111.198.10.15:11409/toiletClean/add
+ */
+ @FormUrlEncoded
+ @POST("/toiletClean/add")
+ Observable cleanToilet(@Header("token") String token,
+ @Field("toiletId") String toiletId,
+ @Field("userId") String userId,
+ @Field("lng") String lng,
+ @Field("lat") String lat,
+ @Field("cleanTime") String cleanTime,
+ @Field("photo") String photo,
+ @Field("workContent") String workContent);
}
diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java
index fb128b7..4f187c9 100644
--- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java
+++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java
@@ -501,4 +501,17 @@
RetrofitService service = retrofit.create(RetrofitService.class);
return service.registerPush(AuthenticationHelper.getToken(), clientId);
}
+
+ /**
+ * 公厕打扫签到
+ */
+ public static Observable getCleanToiletResult(String toiletId, String userId,
+ String lng, String lat,
+ String cleanTime, String photo,
+ String workContent) {
+ Retrofit retrofit = createRetrofit();
+ RetrofitService service = retrofit.create(RetrofitService.class);
+ return service.cleanToilet(AuthenticationHelper.getToken(), toiletId, userId, lng, lat, cleanTime,
+ photo, workContent);
+ }
}
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..d3d6972
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CleanToiletModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CleanToiletModelImpl.java
new file mode 100644
index 0000000..eb7fac5
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/mvp/model/CleanToiletModelImpl.java
@@ -0,0 +1,53 @@
+package com.casic.dcms.mvp.model;
+
+import com.casic.dcms.bean.ActionResultBean;
+import com.casic.dcms.utils.retrofit.RetrofitServiceManager;
+
+import rx.Observable;
+import rx.Observer;
+import rx.Subscription;
+import rx.android.schedulers.AndroidSchedulers;
+import rx.schedulers.Schedulers;
+
+public class CleanToiletModelImpl implements ICleanToiletModel {
+
+ private OnGetCleanResultListener listener;
+
+ public CleanToiletModelImpl(OnGetCleanResultListener cleanResultListener) {
+ this.listener = cleanResultListener;
+ }
+
+ /**
+ * 数据回调接口
+ */
+ public interface OnGetCleanResultListener {
+ void onSuccess(ActionResultBean resultBean);
+
+ void onFailure(Throwable throwable);
+ }
+
+ @Override
+ public Subscription sendRetrofitRequest(String toiletId, String userId, String lng, String lat, String cleanTime, String photo, String workContent) {
+ Observable observable = RetrofitServiceManager.getCleanToiletResult(toiletId, userId, lng, lat, cleanTime, photo, workContent);
+ return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() {
+ @Override
+ public void onCompleted() {
+
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ if (e.getCause() != null) {
+ listener.onFailure(e);
+ }
+ }
+
+ @Override
+ public void onNext(ActionResultBean resultBean) {
+ if (resultBean != null) {
+ listener.onSuccess(resultBean);
+ }
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICleanToiletModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICleanToiletModel.java
new file mode 100644
index 0000000..88bdd50
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/mvp/model/ICleanToiletModel.java
@@ -0,0 +1,8 @@
+package com.casic.dcms.mvp.model;
+
+import rx.Subscription;
+
+public interface ICleanToiletModel {
+ Subscription sendRetrofitRequest(String toiletId, String userId, String lng, String lat,
+ String cleanTime, String photo, String workContent);
+}
diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CleanToiletPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CleanToiletPresenterImpl.java
new file mode 100644
index 0000000..c59b5ca
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CleanToiletPresenterImpl.java
@@ -0,0 +1,37 @@
+package com.casic.dcms.mvp.presenter;
+
+import com.casic.dcms.bean.ActionResultBean;
+import com.casic.dcms.mvp.BasePresenter;
+import com.casic.dcms.mvp.model.CleanToiletModelImpl;
+import com.casic.dcms.mvp.view.IPublicToiletView;
+
+public class CleanToiletPresenterImpl extends BasePresenter implements ICleanToiletPresenter, CleanToiletModelImpl.OnGetCleanResultListener {
+
+ private IPublicToiletView view;
+ private CleanToiletModelImpl actionModel;
+
+ public CleanToiletPresenterImpl(IPublicToiletView toiletView) {
+ this.view = toiletView;
+ actionModel = new CleanToiletModelImpl(this);
+ }
+
+ @Override
+ public void onSuccess(ActionResultBean resultBean) {
+ view.obtainCleanResult(resultBean);
+ }
+
+ @Override
+ public void onFailure(Throwable throwable) {
+
+ }
+
+ @Override
+ public void onReadyRetrofitRequest(String toiletId, String userId, String lng, String lat, String cleanTime, String photo, String workContent) {
+ addSubscription(actionModel.sendRetrofitRequest(toiletId, userId, lng, lat, cleanTime, photo, workContent));
+ }
+
+ @Override
+ public void disposeRetrofitRequest() {
+ unSubscription();
+ }
+}
diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICleanToiletPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICleanToiletPresenter.java
new file mode 100644
index 0000000..0b38424
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICleanToiletPresenter.java
@@ -0,0 +1,8 @@
+package com.casic.dcms.mvp.presenter;
+
+public interface ICleanToiletPresenter {
+ void onReadyRetrofitRequest(String toiletId, String userId, String lng, String lat,
+ String cleanTime, String photo, String workContent);
+
+ void disposeRetrofitRequest();
+}
diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPublicToiletView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPublicToiletView.java
new file mode 100644
index 0000000..0272202
--- /dev/null
+++ b/app/src/main/java/com/casic/dcms/mvp/view/IPublicToiletView.java
@@ -0,0 +1,7 @@
+package com.casic.dcms.mvp.view;
+
+import com.casic.dcms.bean.ActionResultBean;
+
+public interface IPublicToiletView {
+ void obtainCleanResult(ActionResultBean resultBean);
+}
diff --git a/app/src/main/java/com/casic/dcms/service/UploadLocationService.java b/app/src/main/java/com/casic/dcms/service/UploadLocationService.java
index 52c10a5..a7ff4f7 100644
--- a/app/src/main/java/com/casic/dcms/service/UploadLocationService.java
+++ b/app/src/main/java/com/casic/dcms/service/UploadLocationService.java
@@ -42,7 +42,7 @@
MainActivity.sendMessage(message);
}
}
- });
+ }, false);
}
@Override
diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
index 4f06f45..552cb77 100644
--- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java
@@ -392,7 +392,7 @@
loadingDialog.dismiss();
}
}
- });
+ }, true);
break;
default:
break;
diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java
index f9cd111..0cd126c 100644
--- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java
@@ -149,7 +149,7 @@
loadingDialog.dismiss();
}
}
- });
+ }, true);
break;
default:
break;
diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java
index 1064b85..b421b01 100644
--- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java
+++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java
@@ -7,9 +7,11 @@
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.location.Location;
+import android.text.InputType;
+import android.text.TextUtils;
+import android.util.Log;
import android.view.View;
import android.widget.ImageView;
-import android.widget.TextClock;
import android.widget.TextView;
import androidx.annotation.Nullable;
@@ -20,7 +22,9 @@
import com.casic.dcms.R;
import com.casic.dcms.base.BaseActivity;
import com.casic.dcms.bean.ActionResultBean;
+import com.casic.dcms.mvp.presenter.CleanToiletPresenterImpl;
import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl;
+import com.casic.dcms.mvp.view.IPublicToiletView;
import com.casic.dcms.mvp.view.IUploadFileView;
import com.casic.dcms.utils.ColorHelper;
import com.casic.dcms.utils.Constant;
@@ -28,6 +32,7 @@
import com.casic.dcms.utils.GlideLoadEngine;
import com.casic.dcms.utils.LocationHelper;
import com.casic.dcms.utils.StringHelper;
+import com.casic.dcms.utils.TimeOrDateUtil;
import com.casic.dcms.utils.ToastHelper;
import com.casic.dcms.utils.callback.ILocationListener;
import com.esri.arcgisruntime.geometry.Point;
@@ -40,15 +45,20 @@
import com.esri.arcgisruntime.mapping.view.MapView;
import com.esri.arcgisruntime.symbology.PictureMarkerSymbol;
import com.esri.arcgisruntime.util.ListenableList;
+import com.google.gson.Gson;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.entity.LocalMedia;
import com.qmuiteam.qmui.widget.QMUITopBarLayout;
+import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
+import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
import com.qmuiteam.qmui.widget.dialog.QMUITipDialog;
import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton;
import java.io.File;
+import java.util.ArrayList;
import butterknife.BindView;
import butterknife.OnClick;
@@ -57,8 +67,10 @@
import cn.bertsir.zbar.QrManager;
import cn.bertsir.zbar.view.ScanLineView;
-public class PublicToiletActivity extends BaseActivity implements View.OnClickListener, IUploadFileView {
+public class PublicToiletActivity extends BaseActivity implements View.OnClickListener,
+ IUploadFileView, IPublicToiletView {
+ private static final String TAG = "PublicToiletActivity";
private Context context = this;
@BindView(R.id.topLayout)
QMUITopBarLayout topLayout;
@@ -66,6 +78,8 @@
MapView mapView;
@BindView(R.id.locationStreetView)
TextView locationStreetView;
+ @BindView(R.id.workContentView)
+ TextView workContentView;
@BindView(R.id.toiletIdView)
TextView toiletIdView;
@BindView(R.id.startScanView)
@@ -76,12 +90,12 @@
ImageView takePictureView;
@BindView(R.id.signInButton)
QMUIRoundButton signInButton;
- @BindView(R.id.timeClockView)
- TextClock timeClockView;
private UploadImagePresenterImpl uploadImagePresenter;
private QMUITipDialog submitDialog;
- private String imagePath;//服务器返回的拍照数据集
+ private String imagePath = "";//服务器返回的拍照数据
+ private QMUITipDialog loadingDialog;
+ private CleanToiletPresenterImpl cleanToiletPresenter;
@Override
public int initLayoutView() {
@@ -102,8 +116,8 @@
@Override
public void initData() {
- double lng = getIntent().getDoubleExtra("lng", 0);
- double lat = getIntent().getDoubleExtra("lat", 0);
+ double lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG);
+ double lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT);
LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
@Override
public void onLocationGet(Location location) {
@@ -113,10 +127,10 @@
locationStreetView.setText("定位失败");
}
}
- });
+ }, false);
mapView.setAttributionTextVisible(false);//去掉左下角属性标识
- mapView.setViewpointScaleAsync(12000);
+ mapView.setViewpointScaleAsync(18000);
ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS);
//创建底图、并设置底图图层
@@ -125,16 +139,22 @@
arcGISMap.setBasemap(basemap);
mapView.setMap(arcGISMap);
-// Point point = new Point(lng, lat, mapView.getSpatialReference());
-// mapView.setViewpointCenterAsync(point, 1000);//标注到指定经纬度并放大地图显示
-// //添加图片Marker
-// addPictureMarker(point);
+ Point point = new Point(lng, lat, mapView.getSpatialReference());
+ mapView.setViewpointCenterAsync(point, 1000);//标注到指定经纬度并放大地图显示
+ //添加图片Marker
+ addPictureMarker(point);
uploadImagePresenter = new UploadImagePresenterImpl(this);
+ cleanToiletPresenter = new CleanToiletPresenterImpl(this);
submitDialog = new QMUITipDialog.Builder(this)
.setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING)
.setTipWord("提交中,请稍后")
.create();
+
+ loadingDialog = new QMUITipDialog.Builder(this)
+ .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING)
+ .setTipWord("定位中,请稍后")
+ .create();
}
@Override
@@ -146,8 +166,8 @@
Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line);
BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap);
PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable);
- pictureMarker.setHeight(24);
- pictureMarker.setWidth(24);
+ pictureMarker.setWidth(64);
+ pictureMarker.setHeight(42);
pictureMarker.loadAsync();
Graphic graphic = new Graphic(point, pictureMarker);
@@ -158,52 +178,122 @@
graphicsOverlays.add(mGraphicsOverlay);
}
- @OnClick({R.id.removeToLocalView, R.id.startScanView, R.id.takePictureView})
+ @OnClick({R.id.removeToLocalView, R.id.selectWorkLayout, R.id.startScanView, R.id.takePictureView, R.id.signInButton})
@Override
public void onClick(View v) {
- if (v.getId() == R.id.removeToLocalView) {
- LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
- @Override
- public void onLocationGet(Location location) {
- if (location != null) {
- mapView.setViewpointCenterAsync(new Point(location.getLongitude(), location.getLatitude()));
+ switch (v.getId()) {
+ case R.id.removeToLocalView:
+ loadingDialog.show();
+ LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
+ @Override
+ public void onLocationGet(Location location) {
+ if (location != null) {
+ mapView.setViewpointCenterAsync(new Point(location.getLongitude(), location.getLatitude()));
+ loadingDialog.dismiss();
+ }
}
- }
- });
- } else if (v.getId() == R.id.startScanView) {
- QrConfig qrConfig = new QrConfig.Builder().setTitleText("扫一扫") //设置Title文字
- .setShowLight(true) //显示手电筒按钮
- .setShowTitle(true) //显示Title
- .setScanType(QrConfig.TYPE_ALL)//识别二维码和条形码
- .setShowAlbum(false) //显示从相册选择按钮
- .setCornerColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)) //设置扫描框颜色
- .setLineColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)) //设置扫描线颜色
- .setLineSpeed(QrConfig.LINE_MEDIUM) //设置扫描线速度
- .setDesText(null) //扫描框下文字
- .setShowDes(true) //是否显示扫描框下面文字
- .setPlaySound(true) //是否扫描成功后bi~的声音
- .setIsOnlyCenter(true) //是否只识别框中内容(默认为全屏识别)
- .setTitleBackgroudColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor))
- .setTitleTextColor(Color.WHITE) //设置Title文字颜色
- .setScreenOrientation(QrConfig.SCREEN_PORTRAIT) //设置屏幕方式
- .setScanLineStyle(ScanLineView.style_hybrid) //扫描线样式
- .setShowVibrator(true) //是否震动提醒
- .create();
- QrManager.getInstance().init(qrConfig).startScan(this, new QrManager.OnScanResultCallback() {
- @Override
- public void onScanSuccess(ScanResult result) {
- toiletIdView.setText(result.content);
- }
- });
- } else if (v.getId() == R.id.takePictureView) {
- PictureSelector.create(this)
- .openCamera(PictureMimeType.ofImage())
- .imageEngine(GlideLoadEngine.createGlideEngine())
- .maxSelectNum(1)
- .isCompress(true)
- .compressQuality(80)
- .compressSavePath(FileUtils.getImageCompressPath())
- .forResult(PictureConfig.REQUEST_CAMERA);
+ }, true);
+ break;
+ case R.id.selectWorkLayout:
+ new QMUIBottomSheet.BottomListSheetBuilder(this)
+ .setTitle("请填写您此次工作的内容")
+ .addItem("日常保洁")
+ .addItem("自定义")
+ .setGravityCenter(true)
+ .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() {
+ @Override
+ public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) {
+ dialog.dismiss();
+
+ showEditDialog(tag);
+ }
+ }).build().show();
+ break;
+ case R.id.startScanView:
+ QrConfig qrConfig = new QrConfig.Builder().setTitleText("扫一扫") //设置Title文字
+ .setShowLight(true) //显示手电筒按钮
+ .setShowTitle(true) //显示Title
+ .setScanType(QrConfig.TYPE_ALL)//识别二维码和条形码
+ .setShowAlbum(false) //显示从相册选择按钮
+ .setCornerColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)) //设置扫描框颜色
+ .setLineColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor)) //设置扫描线颜色
+ .setLineSpeed(QrConfig.LINE_MEDIUM) //设置扫描线速度
+ .setDesText(null) //扫描框下文字
+ .setShowDes(true) //是否显示扫描框下面文字
+ .setPlaySound(true) //是否扫描成功后bi~的声音
+ .setIsOnlyCenter(true) //是否只识别框中内容(默认为全屏识别)
+ .setTitleBackgroudColor(ColorHelper.getResourcesColor(this, R.color.mainThemeColor))
+ .setTitleTextColor(Color.WHITE) //设置Title文字颜色
+ .setScreenOrientation(QrConfig.SCREEN_PORTRAIT) //设置屏幕方式
+ .setScanLineStyle(ScanLineView.style_hybrid) //扫描线样式
+ .setShowVibrator(true) //是否震动提醒
+ .create();
+ QrManager.getInstance().init(qrConfig).startScan(this, new QrManager.OnScanResultCallback() {
+ @Override
+ public void onScanSuccess(ScanResult result) {
+ toiletIdView.setText(result.content);
+ }
+ });
+ break;
+ case R.id.takePictureView:
+ PictureSelector.create(this)
+ .openCamera(PictureMimeType.ofImage())
+ .imageEngine(GlideLoadEngine.createGlideEngine())
+ .maxSelectNum(1)
+ .isCompress(true)
+ .compressQuality(80)
+ .compressSavePath(FileUtils.getImageCompressPath())
+ .forResult(PictureConfig.REQUEST_CAMERA);
+ break;
+ case R.id.signInButton:
+ LocationHelper.obtainCurrentLocation(this, new ILocationListener() {
+ @Override
+ public void onLocationGet(Location location) {
+ if (location != null) {
+ String toiletId = toiletIdView.getText().toString();
+ if (TextUtils.isEmpty(toiletId)) {
+ ToastHelper.showToast("公厕标识不能为空", ToastHelper.WARING);
+ return;
+ }
+
+ double longitude = location.getLongitude();
+ double latitude = location.getLatitude();
+
+ String cleanTime = TimeOrDateUtil.timestampToDate(System.currentTimeMillis());
+ cleanToiletPresenter.onReadyRetrofitRequest(toiletId, StringHelper.getUserId(),
+ String.valueOf(longitude), String.valueOf(latitude), cleanTime, imagePath,
+ StringHelper.filterString(workContentView.getText().toString()));
+ } else {
+ ToastHelper.showToast("定位失败,无法签到", ToastHelper.WARING);
+ }
+ }
+ }, true);
+ break;
+ }
+ }
+
+ private void showEditDialog(String tag) {
+ if (tag.equals("自定义")) {
+ QMUIDialog.EditTextDialogBuilder builder = new QMUIDialog.EditTextDialogBuilder(context);
+ builder.setTitle("自定义工作内容")
+ .setPlaceholder("请输入您此次的工作内容")
+ .setInputType(InputType.TYPE_CLASS_TEXT)
+ .addAction("取消", (dialog, index) -> dialog.dismiss())
+ .addAction("确定", new QMUIDialogAction.ActionListener() {
+ @Override
+ public void onClick(QMUIDialog dialog, int index) {
+ String inputStr = builder.getEditText().getText().toString();
+ if (!TextUtils.isEmpty(inputStr)) {
+ workContentView.setText(inputStr);
+ dialog.dismiss();
+ } else {
+ ToastHelper.showToast("自定义工作内容不能为空", ToastHelper.WARING);
+ }
+ }
+ });
+ builder.create().show();
+ } else {
+ workContentView.setText(tag);
}
}
@@ -245,14 +335,18 @@
this.imagePath = url;
String realPath = StringHelper.appendCompleteURL(url);
- Glide.with(context)
- .load(realPath)
- .apply(new RequestOptions().error(R.drawable.ic_load_error))
- .into(pictureView);
+ ArrayList urls = new ArrayList<>();
+ urls.add(realPath);
+
+ Glide.with(context).load(realPath)
+ .apply(new RequestOptions().error(R.drawable.ic_load_error)).into(pictureView);
pictureView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
-
+ Intent intent = new Intent(context, BigImageActivity.class);
+ intent.putExtra("index", 0);
+ intent.putStringArrayListExtra("images", urls);
+ startActivity(intent);
}
});
}
@@ -269,10 +363,18 @@
}
@Override
+ public void obtainCleanResult(ActionResultBean resultBean) {
+ Log.d(TAG, "obtainUploadAudioResult: " + new Gson().toJson(resultBean));
+ }
+
+ @Override
protected void onDestroy() {
super.onDestroy();
if (uploadImagePresenter != null) {
uploadImagePresenter.disposeRetrofitRequest();
}
+ if (cleanToiletPresenter != null) {
+ cleanToiletPresenter.disposeRetrofitRequest();
+ }
}
}
diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java
index 2a855ba..2ae9aa6 100644
--- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java
+++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java
@@ -96,6 +96,7 @@
StringHelper.saveUserPhone(data.getPhone());
StringHelper.saveUserDept(data.getDeptName());
StringHelper.saveUserDeptId(data.getDeptId());
+ StringHelper.saveUserId(data.getId());
}
}
diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java
index 3ee2612..9f864db 100644
--- a/app/src/main/java/com/casic/dcms/utils/Constant.java
+++ b/app/src/main/java/com/casic/dcms/utils/Constant.java
@@ -14,6 +14,8 @@
Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO,
Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.CALL_PHONE, Manifest.permission.READ_PHONE_STATE};
+ public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"};
+ public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"};
public static final List ANALYSIS_ICONS = Arrays.asList(
R.drawable.ic_wtly, R.drawable.ic_ajzt, R.drawable.ic_gfwt,
@@ -30,8 +32,6 @@
Color.rgb(216, 248, 183), Color.rgb(129, 178, 20),
Color.rgb(120, 104, 230)};
- public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"};
- public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"};
public static final String IP_KEY = "BASE_IP";
public static final long FIVE_YEARS = 5L * 365 * 1000 * 60 * 60 * 24L;
diff --git a/app/src/main/java/com/casic/dcms/utils/LocationHelper.java b/app/src/main/java/com/casic/dcms/utils/LocationHelper.java
index 2fe93d1..947535e 100644
--- a/app/src/main/java/com/casic/dcms/utils/LocationHelper.java
+++ b/app/src/main/java/com/casic/dcms/utils/LocationHelper.java
@@ -26,34 +26,39 @@
/**
* 获取当前定位
*/
- public static void obtainCurrentLocation(Context context, ILocationListener listener) {
+ public static void obtainCurrentLocation(Context context, ILocationListener listener, boolean isOnce) {
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
LocationManager mLocationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
- //位置变化时更新位置
- mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 30 * 1000, 10, new LocationListener() {
- @Override
- public void onLocationChanged(@NotNull Location location) {
- listener.onLocationGet(location);
- }
+ if (isOnce) {
+ Location location = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ listener.onLocationGet(location);
+ } else {
+ //位置变化时更新位置
+ mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 30 * 1000, 10, new LocationListener() {
+ @Override
+ public void onLocationChanged(@NotNull Location location) {
+ listener.onLocationGet(location);
+ }
- @Override
- public void onStatusChanged(String provider, int status, Bundle extras) {
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
- }
+ }
- @Override
- public void onProviderEnabled(@NotNull String provider) {
+ @Override
+ public void onProviderEnabled(@NotNull String provider) {
- }
+ }
- @Override
- public void onProviderDisabled(@NotNull String provider) {
+ @Override
+ public void onProviderDisabled(@NotNull String provider) {
- }
- });
+ }
+ });
+ }
}
/**
diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java
index 1194333..254c847 100644
--- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java
+++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java
@@ -21,6 +21,14 @@
return (String) SaveKeyValues.getValue("userAccount", "");
}
+ public static void saveUserId(String userId) {
+ SaveKeyValues.putValue("userId", userId);
+ }
+
+ public static String getUserId() {
+ return (String) SaveKeyValues.getValue("userId", "");
+ }
+
public static void saveUserName(String name) {
SaveKeyValues.putValue("userName", name);
}
diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java
index ad97454..bbf2de9 100644
--- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java
+++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java
@@ -440,4 +440,20 @@
@POST("/userPush/register")
Observable registerPush(@Header("token") String token,
@Field("clientId") String clientId);
+
+ /**
+ * 公厕打扫签到
+ *
+ * http://111.198.10.15:11409/toiletClean/add
+ */
+ @FormUrlEncoded
+ @POST("/toiletClean/add")
+ Observable cleanToilet(@Header("token") String token,
+ @Field("toiletId") String toiletId,
+ @Field("userId") String userId,
+ @Field("lng") String lng,
+ @Field("lat") String lat,
+ @Field("cleanTime") String cleanTime,
+ @Field("photo") String photo,
+ @Field("workContent") String workContent);
}
diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java
index fb128b7..4f187c9 100644
--- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java
+++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java
@@ -501,4 +501,17 @@
RetrofitService service = retrofit.create(RetrofitService.class);
return service.registerPush(AuthenticationHelper.getToken(), clientId);
}
+
+ /**
+ * 公厕打扫签到
+ */
+ public static Observable getCleanToiletResult(String toiletId, String userId,
+ String lng, String lat,
+ String cleanTime, String photo,
+ String workContent) {
+ Retrofit retrofit = createRetrofit();
+ RetrofitService service = retrofit.create(RetrofitService.class);
+ return service.cleanToilet(AuthenticationHelper.getToken(), toiletId, userId, lng, lat, cleanTime,
+ photo, workContent);
+ }
}
diff --git a/app/src/main/res/layout/activity_toilet.xml b/app/src/main/res/layout/activity_toilet.xml
index 7386088..1319356 100644
--- a/app/src/main/res/layout/activity_toilet.xml
+++ b/app/src/main/res/layout/activity_toilet.xml
@@ -57,54 +57,75 @@
android:layout_weight="2"
android:paddingHorizontal="@dimen/padding_10dp">
-
+ android:orientation="vertical">
-
+
-
-
+ android:layout_centerVertical="true"
+ android:layout_gravity="center_vertical"
+ android:layout_marginEnd="@dimen/margin_10dp"
+ android:layout_toStartOf="@id/i"
+ android:layout_toEndOf="@id/t"
+ android:textSize="@dimen/textFontSize" />
-
+
+
+
+
-
+
-
+
+ android:layout_width="120dp"
+ android:layout_height="120dp"
+ android:layout_marginEnd="@dimen/margin_10dp"
+ android:layout_toEndOf="@id/ttt" />
-
-
+
+
+
+ android:layout_below="@id/l">