package com.dayu.pipirrapp.activity; import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import androidx.annotation.Nullable; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.SimpleItemAnimator; import com.dayu.pipirrapp.R; import com.dayu.pipirrapp.adapter.ImageAdapter; import com.dayu.pipirrapp.bean.net.DealDetailResult; import com.dayu.pipirrapp.bean.net.ImageResult; import com.dayu.pipirrapp.bean.net.OrderDetailResult; import com.dayu.pipirrapp.databinding.ActivityOrderDetailBinding; import com.dayu.pipirrapp.net.ApiManager; import com.dayu.pipirrapp.net.BaseResponse; import com.dayu.pipirrapp.net.Constants; import com.dayu.pipirrapp.net.subscribers.SubscriberListener; import com.dayu.pipirrapp.tool.FullyGridLayoutManager; import com.dayu.pipirrapp.tool.GlideEngine; import com.dayu.pipirrapp.utils.ToastUtil; import com.dayu.pipirrapp.view.TitleBar; import com.luck.picture.lib.basic.PictureSelector; import com.luck.picture.lib.decoration.GridSpacingItemDecoration; import com.luck.picture.lib.engine.ImageEngine; import com.luck.picture.lib.utils.DensityUtil; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import cc.shinichi.library.ImagePreview; import cc.shinichi.library.bean.ImageInfo; /** * OrderDetailActivity - * 工单详情界面 * * @author zuoxiao * @version 1.0 * @since 2024-11-27 */ public class OrderDetailActivity extends BaseActivity { ActivityOrderDetailBinding binding; String workOrderId; String proResultId; ImageAdapter mAdapter; List images = new ArrayList<>(); RecyclerView mRecyclerView; final List imageInfoList = new ArrayList<>(); @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = ActivityOrderDetailBinding.inflate(LayoutInflater.from(this)); setContentView(binding.getRoot()); new TitleBar(this).setTitleText("工单详情").setLeftIco().setLeftIcoListening(v -> OrderDetailActivity.this.finish()); initView(); } void initView() { workOrderId = this.getIntent().getStringExtra("workOrderId"); if (this.getIntent().hasExtra("proResultId")) { proResultId = this.getIntent().getStringExtra("proResultId"); getHandleData(proResultId); } if (!TextUtils.isEmpty(workOrderId)) { getMarkerData(workOrderId); } else { this.finish(); ToastUtil.showToastLong(this, "当前workOrderId为空"); } binding.setItemclidk(OrderDetailActivity.this); mRecyclerView = binding.recyclerView; FullyGridLayoutManager manager = new FullyGridLayoutManager(this, 4, GridLayoutManager.VERTICAL, false); mRecyclerView.setLayoutManager(manager); RecyclerView.ItemAnimator itemAnimator = mRecyclerView.getItemAnimator(); if (itemAnimator != null) { ((SimpleItemAnimator) itemAnimator).setSupportsChangeAnimations(false); } // 添加间距装饰,确保图片有合适的间隔 mRecyclerView.addItemDecoration(new GridSpacingItemDecoration(4, DensityUtil.dip2px(this, 8), false)); mAdapter = new ImageAdapter(this, images, (v, position) -> { ImagePreview.getInstance().setContext(OrderDetailActivity.this).setImageList(imageInfoList).start(); }); mRecyclerView.setAdapter(mAdapter); } /** * 获取工单详情 */ private void getMarkerData(String workOrderId) { Map params = new HashMap<>(); params.put("workOrderId", workOrderId); ApiManager.getInstance().requestGet(this, Constants.BASE_URL + "/app/workOrder/getOneWorkOrder", OrderDetailResult.class, params, new SubscriberListener>() { @Override public void onNext(BaseResponse t) { if (t.isSuccess()) { if (t.isSuccess()) { if (t.getContent() != null) { OrderDetailResult orderDetailResult = t.getContent(); binding.setData(orderDetailResult); if (!TextUtils.isEmpty(t.getContent().getProResultId()) && TextUtils.isEmpty(proResultId)) { getHandleData(orderDetailResult.getProResultId()); } switch (orderDetailResult.getProResultStateId()) { case 0://未上报 binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.black)); binding.stateText.setBackground(OrderDetailActivity.this.getResources().getDrawable(R.drawable.order_state_no_bg)); break; case 1://已上报 binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white)); binding.stateText.setBackground(OrderDetailActivity.this.getResources().getDrawable(R.drawable.order_state_wait_bg)); binding.dealButton.setVisibility(View.GONE); break; case 2://已完成 binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white)); binding.stateText.setBackground(OrderDetailActivity.this.getResources().getDrawable(R.drawable.order_state_finish_bg)); binding.dealButton.setVisibility(View.GONE); break; case 3://被驳回 binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white)); binding.stateText.setBackground(OrderDetailActivity.this.getResources().getDrawable(R.drawable.order_state_reject_bg)); break; } } else { ToastUtil.showToast(OrderDetailActivity.this, t.getMsg()); } } } else { ToastUtil.showToast(OrderDetailActivity.this, t.getMsg()); } } @Override public void onCloose() { super.onCloose(); } }); } /** * 获取处理详情 */ private void getHandleData(String proResultId) { Map params = new HashMap<>(); params.put("proResultId", proResultId); ApiManager.getInstance().requestGet(this, Constants.BASE_URL + "/app/workOrder/getProResult", DealDetailResult.class, params, new SubscriberListener>() { @Override public void onNext(BaseResponse t) { if (t.isSuccess()) { if (t.isSuccess()) { if (t.getContent() != null) { binding.orderDealLL.setVisibility(View.VISIBLE); binding.setDealData(t.getContent()); images.addAll(t.getContent().getImages()); for (ImageResult imageResult : images) { imageInfoList.add(imageResult.getWebPath()); } mAdapter.notifyDataSetChanged(); } else { ToastUtil.showToast(OrderDetailActivity.this, t.getMsg()); } } } else { ToastUtil.showToast(OrderDetailActivity.this, t.getMsg()); } } @Override public void onCloose() { super.onCloose(); } }); } public void startDealActivity() { Intent intent = new Intent(this, OrderDealActivity.class); intent.putExtra("workOrderId", workOrderId); startActivityForResult(intent, 1); } }