From 4d4ea99692f385ee01ac1b86c48735c8825e737f Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期一, 18 八月 2025 16:40:05 +0800
Subject: [PATCH] fix(net): 更新基础 URL 地址
---
app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java | 316 ++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 300 insertions(+), 16 deletions(-)
diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java
index fb91e02..3ff4f31 100644
--- a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java
+++ b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java
@@ -1,36 +1,65 @@
package com.dayu.pipirrapp.activity;
-import android.animation.AnimatorSet;
-import android.animation.ObjectAnimator;
+import static com.dayu.pipirrapp.net.Constants.BASE_URL;
+
+import android.content.Context;
+import android.content.Intent;
import android.os.Bundle;
-import android.provider.MediaStore;
+import android.text.TextUtils;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
-import android.view.animation.Animation;
-import android.view.animation.AnimationUtils;
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
+import androidx.lifecycle.Observer;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.SimpleItemAnimator;
+import com.dayu.pipirrapp.MyApplication;
import com.dayu.pipirrapp.adapter.AddPictureAdapter;
+import com.dayu.pipirrapp.bean.db.LatLonBean;
+import com.dayu.pipirrapp.bean.net.AddProcessingRequest;
+import com.dayu.pipirrapp.bean.net.InsectionResult;
+import com.dayu.pipirrapp.bean.net.UplodFileState;
import com.dayu.pipirrapp.databinding.ActivityOrderDealBinding;
+import com.dayu.pipirrapp.fragment.OrderFragment;
+import com.dayu.pipirrapp.net.ApiManager;
+import com.dayu.pipirrapp.net.BaseResponse;
+import com.dayu.pipirrapp.net.subscribers.SubscriberListener;
+import com.dayu.pipirrapp.tool.FileUploadUtils;
import com.dayu.pipirrapp.tool.FullyGridLayoutManager;
import com.dayu.pipirrapp.tool.GlideEngine;
+import com.dayu.pipirrapp.tool.ImageFileCompressEngine;
+import com.dayu.pipirrapp.utils.CommonKeyName;
+import com.dayu.pipirrapp.utils.MyLog;
+import com.dayu.pipirrapp.utils.ServiceUtils;
+import com.dayu.pipirrapp.utils.ToastUtil;
+import com.dayu.pipirrapp.view.TitleBar;
+import com.jeremyliao.liveeventbus.LiveEventBus;
+import com.loper7.date_time_picker.DateTimeConfig;
+import com.loper7.date_time_picker.dialog.CardDatePickerDialog;
import com.luck.picture.lib.basic.PictureSelectionModel;
import com.luck.picture.lib.basic.PictureSelector;
-import com.luck.picture.lib.config.PictureConfig;
+import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.config.SelectMimeType;
-import com.luck.picture.lib.config.SelectModeConfig;
import com.luck.picture.lib.decoration.GridSpacingItemDecoration;
+import com.luck.picture.lib.engine.ImageEngine;
import com.luck.picture.lib.entity.LocalMedia;
-import com.luck.picture.lib.interfaces.OnGridItemSelectAnimListener;
-import com.luck.picture.lib.interfaces.OnQueryFilterListener;
-import com.luck.picture.lib.interfaces.OnSelectAnimListener;
+import com.luck.picture.lib.entity.MediaExtraInfo;
+import com.luck.picture.lib.interfaces.OnExternalPreviewEventListener;
import com.luck.picture.lib.utils.DensityUtil;
+import com.luck.picture.lib.utils.MediaUtils;
+import com.luck.picture.lib.utils.PictureFileUtils;
+import com.tencent.bugly.crashreport.CrashReport;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+
+import retrofit2.Call;
/**
* OrderDealDetailActivity -
@@ -41,24 +70,70 @@
* @since 2024-11-27
*/
public class OrderDealActivity extends BaseActivity {
-
+ private final String TAG = "OrderDealActivity";
ActivityOrderDealBinding binding;
RecyclerView mRecyclerView;
AddPictureAdapter mAdapter;
int maxSelectNum = 10;//鏈�澶х収鐗�
int maxSelectVideoNum = 0;//鏈�澶ц棰�
+ int videoMaxSecond = 60;
private final List<LocalMedia> mData = new ArrayList<>();
+ private ActivityResultLauncher<Intent> launcherResult;
+ private ImageEngine imageEngine;
+ // List<UplodFileState> uplodFileStates = new ArrayList<>();
+ Map<String, UplodFileState> uplodFileStates = new HashMap<>();
+ String workOrderId;
+ LatLonBean latLonBean;
+ String strCompleteTime;
+
+ /**
+ * 瀹氫綅鐩戝惉
+ */
+ private Observer<Object> locationObserver = new Observer<Object>() {
+ @Override
+ public void onChanged(Object o) {
+ MyLog.d("OrderDealActivity>>>locationObserver>>");
+ latLonBean = (LatLonBean) o;
+ }
+ };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityOrderDealBinding.inflate(LayoutInflater.from(this));
setContentView(binding.getRoot());
+ workOrderId = this.getIntent().getStringExtra("workOrderId");
+ launcherResult = createActivityResultLauncher();
initView();
+ startLocation();
}
void initView() {
+ new TitleBar(this).setTitleText("澶勭悊宸ュ崟").setLeftIco().setLeftIcoListening(v -> OrderDealActivity.this.finish());
+ binding.timeLL.setOnClickListener(v -> {
+ long time = System.currentTimeMillis();
+ List<Integer> list = new ArrayList<>();
+ list.add(DateTimeConfig.YEAR);
+ list.add(DateTimeConfig.MONTH);
+ list.add(DateTimeConfig.DAY);
+ list.add(DateTimeConfig.HOUR);
+ list.add(DateTimeConfig.MIN);
+ new CardDatePickerDialog.Builder(this)
+ .setTitle("閫夋嫨澶勭悊鏃堕棿")
+ .setOnChoose("纭畾", aLong -> {
+ //aLong = millisecond
+ strCompleteTime = com.dayu.pipirrapp.utils.DateUtils.formatTimestamp(aLong);
+ binding.timeData.setText(strCompleteTime);
+ return null;
+ })
+ .showBackNow(true)
+ .setDefaultTime(time)
+ .setMaxTime(time)
+ .setMinTime(time - 365L * 24 * 60 * 60 * 1000) // 璁剧疆鏈�灏忔椂闂翠负涓�骞村墠
+ .setDisplayType(list)
+ .build().show();
+ });
mRecyclerView = binding.recycler;
FullyGridLayoutManager manager = new FullyGridLayoutManager(this,
4, GridLayoutManager.VERTICAL, false);
@@ -69,33 +144,242 @@
}
mRecyclerView.addItemDecoration(new GridSpacingItemDecoration(4,
DensityUtil.dip2px(this, 8), false));
- mAdapter = new AddPictureAdapter(this, mData);
+ mAdapter = new AddPictureAdapter(this, mData, uplodFileStates);
mAdapter.setSelectMax(maxSelectNum + maxSelectVideoNum);
mRecyclerView.setAdapter(mAdapter);
+ imageEngine = GlideEngine.createGlideEngine();
mAdapter.setOnItemClickListener(new AddPictureAdapter.OnItemClickListener() {
@Override
public void onItemClick(View v, int position) {
-
+ // 棰勮鍥剧墖銆佽棰戙�侀煶棰�
+ PictureSelector.create(OrderDealActivity.this)
+ .openPreview()
+ .setImageEngine(imageEngine)
+ .setExternalPreviewEventListener(new MyExternalPreviewEventListener())
+ .startActivityPreview(position, true, mAdapter.getData());
}
@Override
public void openPicture() {
+ //娣诲姞鍥剧墖
mOpenPicture();
+ }
+
+ @Override
+ public void onDeleteClick(int position) {
+ deleteItem(position);
+ }
+
+ @Override
+ public void onReUpload(UplodFileState uplodFileState) {
+ FileUploadUtils.uploadFile(OrderDealActivity.this, uplodFileState, uplodFileStates, mAdapter);
+ }
+ });
+ binding.dealButton.setOnClickListener(v -> {
+ boolean isAllPost = true;
+ for (UplodFileState imgData : uplodFileStates.values()) {
+ if (imgData.getState() == 0) {
+ isAllPost = false;
+ }
+ }
+
+ if (!TextUtils.isEmpty(binding.contentET.getText().toString())) {
+ if (isAllPost) {
+ if (uplodFileStates.size() > 0) {
+ postData();
+ } else {
+ ToastUtil.showToast(OrderDealActivity.this, "璇蜂笂浼犲浘鐗�");
+ }
+ } else {
+ ToastUtil.showToast(OrderDealActivity.this, "鍥剧墖姝e湪涓婁紶璇风◢鍚庢彁浜�");
+ }
+ } else {
+ ToastUtil.showToast(OrderDealActivity.this, "璇疯緭鍏ュ弽棣堝唴瀹�");
}
});
}
+ /**
+ * 娣诲姞鍥剧墖
+ */
private void mOpenPicture() {
// 杩涘叆鐩稿唽
PictureSelectionModel selectionModel = PictureSelector.create(this)
- .openGallery(SelectMimeType.ofImage())
+ .openGallery(SelectMimeType.ofAll())
.setMaxSelectNum(maxSelectNum)
.setMaxVideoSelectNum(maxSelectVideoNum)
- .setImageEngine(GlideEngine.createGlideEngine())
+ .setImageEngine(imageEngine)
+ //璁剧疆鍥剧墖鍘嬬缉
+ .setCompressEngine(new ImageFileCompressEngine())
+ //璁剧疆瑙嗛鍥剧墖涓�璧峰湪鐩稿唽閫夋嫨
+ .isWithSelectVideoImage(true)
+ //璁剧疆鏈�澶ц棰戞椂闀�
+ .setRecordVideoMaxSecond(videoMaxSecond)
+ // 杩囨护瑙嗛鏈�澶ф椂闀�
+ .setFilterVideoMaxSecond(videoMaxSecond)
+ // 鎷嶇収鏄惁绾犳鏃嬭浆鍥剧墖
+ .isCameraRotateImage(true)
.setSelectedData(mAdapter.getData());
- selectionModel.forResult(PictureConfig.CHOOSE_REQUEST);
+ selectionModel.forResult(launcherResult);
+ }
+
+ /**
+ * 鍒涘缓涓�涓狝ctivityResultLauncher
+ *
+ * @return
+ */
+ private ActivityResultLauncher<Intent> createActivityResultLauncher() {
+ return registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
+ result -> {
+ int resultCode = result.getResultCode();
+ if (resultCode == RESULT_OK) {
+ ArrayList<LocalMedia> selectList = PictureSelector.obtainSelectorList(result.getData());
+ analyticalSelectResults(selectList);
+ } else if (resultCode == RESULT_CANCELED) {
+ Log.i(TAG, "onActivityResult PictureSelector Cancel");
+ }
+ });
+ }
+
+ /**
+ * 澶栭儴棰勮鐩戝惉浜嬩欢
+ */
+ private class MyExternalPreviewEventListener implements OnExternalPreviewEventListener {
+
+ @Override
+ public void onPreviewDelete(int position) {
+ deleteItem(position);
+ mAdapter.remove(position);
+ mAdapter.notifyItemRemoved(position);
+ }
+
+ @Override
+ public boolean onLongPressDownload(Context context, LocalMedia media) {
+ return false;
+ }
+ }
+
+ /**
+ * 澶勭悊閫夋嫨缁撴灉
+ *
+ * @param result
+ */
+ private void analyticalSelectResults(ArrayList<LocalMedia> result) {
+ for (LocalMedia media : result) {
+ if (media.getWidth() == 0 || media.getHeight() == 0) {
+ if (PictureMimeType.isHasImage(media.getMimeType())) {
+ MediaExtraInfo imageExtraInfo = MediaUtils.getImageSize(this, media.getPath());
+ media.setWidth(imageExtraInfo.getWidth());
+ media.setHeight(imageExtraInfo.getHeight());
+ } else if (PictureMimeType.isHasVideo(media.getMimeType())) {
+ MediaExtraInfo videoExtraInfo = MediaUtils.getVideoSize(this, media.getPath());
+ media.setWidth(videoExtraInfo.getWidth());
+ media.setHeight(videoExtraInfo.getHeight());
+ }
+ }
+ Log.i(TAG, "鏂囦欢鍚�: " + media.getFileName());
+ Log.i(TAG, "鏄惁鍘嬬缉:" + media.isCompressed());
+ Log.i(TAG, "鍘嬬缉:" + media.getCompressPath());
+ Log.i(TAG, "鍒濆璺緞:" + media.getPath());
+ Log.i(TAG, "缁濆璺緞:" + media.getRealPath());
+ Log.i(TAG, "鏄惁瑁佸壀:" + media.isCut());
+ Log.i(TAG, "瑁佸壀璺緞:" + media.getCutPath());
+ Log.i(TAG, "鏄惁寮�鍚師鍥�:" + media.isOriginal());
+ Log.i(TAG, "鍘熷浘璺緞:" + media.getOriginalPath());
+ Log.i(TAG, "娌欑洅璺緞:" + media.getSandboxPath());
+ Log.i(TAG, "姘村嵃璺緞:" + media.getWatermarkPath());
+ Log.i(TAG, "瑙嗛缂╃暐鍥�:" + media.getVideoThumbnailPath());
+ Log.i(TAG, "鍘熷瀹介珮: " + media.getWidth() + "x" + media.getHeight());
+ Log.i(TAG, "瑁佸壀瀹介珮: " + media.getCropImageWidth() + "x" + media.getCropImageHeight());
+ Log.i(TAG, "鏂囦欢澶у皬: " + PictureFileUtils.formatAccurateUnitFileSize(media.getSize()));
+ Log.i(TAG, "鏂囦欢鏃堕暱: " + media.getDuration());
+ Log.i(TAG, "鎵╁睍鍚�: " + media.getMimeType());
+ FileUploadUtils.creatAndUploadFile(this, media, uplodFileStates, mAdapter);
+ }
+ // 鑾峰彇 result 涓病鏈夎�� uplodFileStates 涓湁鐨勫湴鍧�
+ FileUploadUtils.cancelRemovedUploads(result, uplodFileStates);
+ // 鏇存柊UI
+ FileUploadUtils.updateUI(result, mAdapter);
}
+
+ /**
+ * 涓婃姤澶勭悊缁撴灉
+ */
+ private void postData() {
+ AddProcessingRequest result = new AddProcessingRequest();
+ result.setImages(uplodFileStates);
+ result.setContent(binding.contentET.getText().toString());
+ result.setInspectorId(MyApplication.myApplication.userId);
+ result.setWorkOrderId(workOrderId);
+ result.setCompleteTime(strCompleteTime);
+ if (latLonBean != null) {
+ result.setLat(String.valueOf(latLonBean.getLatitude()));
+ result.setLng(String.valueOf(latLonBean.getLongitude()));
+ }
+ ApiManager.getInstance().requestPostHideLoading(this, BASE_URL + "/app/workOrder/addProcessingResult", InsectionResult.class, result.toMap(result), new SubscriberListener<BaseResponse<List<InsectionResult>>>() {
+ @Override
+ public void onNext(BaseResponse<List<InsectionResult>> t) {
+ try {
+ if (t.isSuccess()) {
+ ToastUtil.showToastLong(OrderDealActivity.this, "涓婃姤鎴愬姛");
+ setResult(OrderFragment.RESULT_REFRESH);
+ OrderDealActivity.this.finish();
+ } else {
+
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ CrashReport.postCatchedException(e);
+ }
+
+ }
+ });
+ }
+
+ /**
+ * 寮�濮嬪畾浣嶇浉鍏抽�昏緫
+ */
+ private void startLocation() {
+ ServiceUtils.startLocationService(this, true);
+ //鑾峰彇瀹氫綅鏈嶅姟浼犺繃鏉ョ殑鍧愭爣鐐�
+ LiveEventBus.get(CommonKeyName.locationData).observeForever(locationObserver);
+ }
+
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ LiveEventBus.get(CommonKeyName.locationData).removeObserver(locationObserver);
+ FileUploadUtils.cancelAllCall(uplodFileStates);
+ }
+
+ /**
+ * 棰勮鍜屽浘鐗囧垪琛ㄥ垹闄ゅ浘鐗囨椂澶勭悊鍒犻櫎浜嬩欢
+ */
+ private void deleteItem(int position) {
+ LocalMedia localMedia = mAdapter.getData().get(position);
+ String path;
+ UplodFileState uplodFileState;
+ if (TextUtils.isEmpty(localMedia.getCompressPath())) {
+ uplodFileState = uplodFileStates.get(localMedia.getRealPath());
+ } else {
+ uplodFileState = uplodFileStates.get(localMedia.getCompressPath());
+ }
+ if (uplodFileState != null) {
+ path = uplodFileState.getFilePath();
+ try {
+ Call mCall = uplodFileStates.get(path).getThisCall();
+ if (mCall != null) {
+ mCall.cancel();
+ MyLog.d("progressRequestBody>>>" + "cancel銆嬨�嬨�媝ath:" + path);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ uplodFileStates.remove(path);
+ }
+ }
}
--
Gitblit v1.8.0