From fafdeae594f79bad8133837e5cde239afca4da54 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期五, 06 十二月 2024 16:13:02 +0800 Subject: [PATCH] 1.优化工单列表状态显示 2.接口添加token失效判断,失效后跳转到登录界面。 --- app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java | 147 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 147 insertions(+), 0 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 cebbdd9..58a4ea8 100644 --- a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java +++ b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java @@ -1,24 +1,42 @@ package com.dayu.pipirrapp.activity; +import static com.dayu.pipirrapp.net.Constants.BASE_URL; + import android.content.Context; import android.content.Intent; import android.net.Uri; +import android.os.Build; import android.os.Bundle; +import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; 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.AddProcessingResult; +import com.dayu.pipirrapp.bean.net.InsectionResult; +import com.dayu.pipirrapp.bean.net.UplodFileState; import com.dayu.pipirrapp.databinding.ActivityOrderDealBinding; +import com.dayu.pipirrapp.net.ApiManager; +import com.dayu.pipirrapp.net.BaseResponse; +import com.dayu.pipirrapp.net.subscribers.SubscriberListener; +import com.dayu.pipirrapp.net.upload.UploadFileListener; +import com.dayu.pipirrapp.service.MyLocationService; import com.dayu.pipirrapp.tool.FullyGridLayoutManager; import com.dayu.pipirrapp.tool.GlideEngine; +import com.dayu.pipirrapp.utils.CommonKeyName; +import com.dayu.pipirrapp.utils.ToastUtil; import com.dayu.pipirrapp.view.TitleBar; +import com.jeremyliao.liveeventbus.LiveEventBus; import com.luck.picture.lib.basic.PictureSelectionModel; import com.luck.picture.lib.basic.PictureSelector; import com.luck.picture.lib.config.PictureMimeType; @@ -34,10 +52,13 @@ 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.io.File; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; import top.zibin.luban.CompressionPredicate; import top.zibin.luban.Luban; @@ -62,14 +83,29 @@ private final List<LocalMedia> mData = new ArrayList<>(); private ActivityResultLauncher<Intent> launcherResult; private ImageEngine imageEngine; + List<UplodFileState> uplodFileStates = new ArrayList<>(); + String workOrderId; + LatLonBean latLonBean; + + /** + * 瀹氫綅鐩戝惉 + */ + private Observer<Object> locationObserver = new Observer<Object>() { + @Override + public void onChanged(Object o) { + 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(); } @@ -104,6 +140,28 @@ public void openPicture() { //娣诲姞鍥剧墖 mOpenPicture(); + } + }); + binding.dealButton.setOnClickListener(v -> { + boolean isAllPost = true; + for (UplodFileState imgData : uplodFileStates) { + 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, "璇疯緭鍏ュ弽棣堝唴瀹�"); } }); } @@ -166,6 +224,10 @@ * @param result */ private void analyticalSelectResults(ArrayList<LocalMedia> result) { + Set<String> existingPaths = new HashSet<>(); + for (UplodFileState uplodData : uplodFileStates) { + existingPaths.add(uplodData.getFilePath()); + } for (LocalMedia media : result) { if (media.getWidth() == 0 || media.getHeight() == 0) { if (PictureMimeType.isHasImage(media.getMimeType())) { @@ -194,6 +256,17 @@ Log.i(TAG, "瑁佸壀瀹介珮: " + media.getCropImageWidth() + "x" + media.getCropImageHeight()); Log.i(TAG, "鏂囦欢澶у皬: " + PictureFileUtils.formatAccurateUnitFileSize(media.getSize())); Log.i(TAG, "鏂囦欢鏃堕暱: " + media.getDuration()); + String compressPath = media.getCompressPath(); + //鍒ゆ柇鏄惁鏈夎繖涓矾寰勶紝娌℃湁鐨勮瘽涓婁紶璇ュ浘鐗� + if (!existingPaths.contains(compressPath)) { + UplodFileState uplodFileState = new UplodFileState(); + uplodFileState.setFilePath(media.getRealPath()); + uplodFileStates.add(uplodFileState); + // 鎵ц涓婁紶鍥剧墖鐨勬搷浣� + uplodeImg(uplodFileState); + } + + } runOnUiThread(new Runnable() { @Override @@ -205,6 +278,7 @@ mAdapter.getData().addAll(result); mAdapter.notifyItemRangeInserted(0, result.size()); + } }); } @@ -256,4 +330,77 @@ } + //涓婁紶鍥剧墖 + private void uplodeImg(UplodFileState uplodFileState) { + ApiManager.getInstance().uploadFile(this, uplodFileState, new UploadFileListener() { + @Override + public void onBack(UplodFileState state) { + for (UplodFileState uplodFile : uplodFileStates) { + if (uplodFile.getFilePath().equals(state.getFilePath())) { + int index = uplodFileStates.indexOf(uplodFile); + if (index != -1) { + uplodFileStates.set(index, uplodFile); // 鏇存柊瀵瑰簲鐨勯」 + } + } + + } + } + }); + } + + /** + * 涓婃姤澶勭悊缁撴灉 + */ + private void postData() { + AddProcessingResult result = new AddProcessingResult(); + result.setImages(uplodFileStates); + result.setContent(binding.contentET.getText().toString()); + result.setInspectorId(MyApplication.myApplication.userId); + result.setWorkOrderId(workOrderId); + result.setCompleteTime(com.dayu.pipirrapp.utils.DateUtils.getNowDateToMMStr()); + 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, "涓婃姤鎴愬姛"); + OrderDealActivity.this.finish(); + } else { + + } + } catch (Exception e) { + e.printStackTrace(); + CrashReport.postCatchedException(e); + } + + } + }); + } + + /** + * 寮�濮嬪畾浣嶇浉鍏抽�昏緫 + */ + private void startLocation() { + Intent location = new Intent(this, MyLocationService.class); + location.putExtra("isSingle", true); + //寮�鍚畾浣� + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + startForegroundService(location); + } else { + startService(location); + } + //鑾峰彇瀹氫綅鏈嶅姟浼犺繃鏉ョ殑鍧愭爣鐐� + LiveEventBus.get(CommonKeyName.locationData).observeForever(locationObserver); + } + + + @Override + protected void onDestroy() { + super.onDestroy(); + LiveEventBus.get(CommonKeyName.locationData).removeObserver(locationObserver); + } } -- Gitblit v1.8.0