From b6f46408cb3dc8b01051953e5c68de6c9195db60 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期四, 23 一月 2025 10:15:46 +0800 Subject: [PATCH] 1.修复分水房点击屏幕不变蓝bug。 2.处理工单添加处理时间弹窗。 --- app/src/main/java/com/dayu/pipirrapp/fragment/OrderFragment.java | 369 ++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 286 insertions(+), 83 deletions(-) diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/OrderFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/OrderFragment.java index 9f0d1b5..036ca77 100644 --- a/app/src/main/java/com/dayu/pipirrapp/fragment/OrderFragment.java +++ b/app/src/main/java/com/dayu/pipirrapp/fragment/OrderFragment.java @@ -1,30 +1,56 @@ package com.dayu.pipirrapp.fragment; +import static androidx.core.content.ContextCompat.getSystemService; + +import android.app.Notification; +import android.app.NotificationChannel; +import android.app.NotificationManager; +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.graphics.Typeface; +import android.os.Build; import android.os.Bundle; +import android.os.VibrationEffect; +import android.os.Vibrator; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.app.NotificationCompat; import androidx.lifecycle.Observer; +import androidx.recyclerview.widget.LinearLayoutManager; -import com.dayu.pipirrapp.bean.db.LatLonBean; -import com.dayu.pipirrapp.bean.net.WeatherResponse; -import com.dayu.pipirrapp.databinding.FragmentMainBinding; +import com.dayu.pipirrapp.MyApplication; +import com.dayu.pipirrapp.R; +import com.dayu.pipirrapp.activity.MainActivity; +import com.dayu.pipirrapp.activity.OrderDetailActivity; +import com.dayu.pipirrapp.adapter.OrderAdapter; +import com.dayu.pipirrapp.bean.net.OrderDetailResult; +import com.dayu.pipirrapp.bean.net.OrderListResult; +import com.dayu.pipirrapp.databinding.FragmentOrderBinding; import com.dayu.pipirrapp.net.ApiManager; -import com.dayu.pipirrapp.utils.ImageUtils; -import com.dayu.pipirrapp.utils.MyJsonParser; -import com.dayu.pipirrapp.utils.SharedPreferencesHelper; -import com.dayu.pipirrapp.view.TitleBar; +import com.dayu.pipirrapp.net.BaseResponse; +import com.dayu.pipirrapp.net.Constants; +import com.dayu.pipirrapp.net.subscribers.SubscriberListener; +import com.dayu.pipirrapp.utils.CommonKeyName; +import com.dayu.pipirrapp.utils.MyLog; +import com.dayu.pipirrapp.utils.ToastUtil; import com.jeremyliao.liveeventbus.LiveEventBus; -import com.tencent.bugly.crashreport.CrashReport; +import com.scwang.smart.refresh.footer.ClassicsFooter; +import com.scwang.smart.refresh.header.ClassicsHeader; +import com.scwang.smart.refresh.layout.api.RefreshLayout; -import java.util.Calendar; - -import retrofit2.Call; -import retrofit2.Callback; -import retrofit2.Response; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * author: zuo @@ -33,90 +59,267 @@ * 澶囨敞锛氶椤� */ public class OrderFragment extends BaseFragment { + public static final int RESULT_REFRESH = 1001; - FragmentMainBinding binding; - WeatherResponse weatherResponse; - //鏀跺埌瀹氫綅骞挎挱鍚庤幏鍙栧ぉ姘斾俊鎭� - Observer<LatLonBean> myObserver = new Observer<LatLonBean>() { - @Override - public void onChanged(LatLonBean latLonBean) { + private final int STATE_DONE = 2; + private final int STATE_UNDONE = 1; - String jsonStr = SharedPreferencesHelper.getInstance(OrderFragment.this.getActivity()).get("WeatherResponse", ""); - weatherResponse = MyJsonParser.getBeanFromJson(jsonStr, WeatherResponse.class); - if (weatherResponse == null) { - weatherResponse = new WeatherResponse(); - } - // 鑾峰彇褰撳墠鏃堕棿 - Calendar calendar = Calendar.getInstance(); - // 鑾峰彇褰撳墠骞存湀鏃� - int year = calendar.get(Calendar.YEAR); - int month = calendar.get(Calendar.MONTH) + 1; // 娉ㄦ剰鏈堜唤鏄粠0寮�濮嬭鏁扮殑锛屾墍浠ヨ鍔�1 - int day = calendar.get(Calendar.DAY_OF_MONTH); - String date = year + "骞�" + month + "鏈�" + day + "鏃�"; - if (weatherResponse == null || !date.equals(weatherResponse.getDate())) { - weatherResponse.setDate(date); - ApiManager.getInstance().requestWeather(latLonBean.getLatitude() + ":" + latLonBean.getLongitude(), new Callback<WeatherResponse>() { - @Override - public void onResponse(Call<WeatherResponse> call, Response<WeatherResponse> response) { + FragmentOrderBinding binding; + OrderAdapter mAdapter; + OrderAdapter mDoneAdapter; + int page = 1; + int pageSize = 10; + int state = 1; + List<OrderDetailResult> recordsListDone = new ArrayList<>(); + List<OrderDetailResult> recordsList = new ArrayList<>(); + RefreshLayout myRefreshLayout; + //鏈�鍚庡埛鏂扮殑鏃堕棿 + long lastRefreshDate; + //鏄剧ず绾㈢偣鐨勬椂闂� + long showRedlotDate; - if (response.isSuccessful()) { - weatherResponse.setResults(response.body().getResults()); - SharedPreferencesHelper.getInstance(OrderFragment.this.getActivity()).put("WeatherResponse", weatherResponse); - setWeatherData(weatherResponse); + + private ActivityResultLauncher<Intent> activityResultLauncher = + registerForActivityResult( + new ActivityResultContracts.StartActivityForResult(), + result -> { + if (result.getResultCode() == RESULT_REFRESH) { + myRefreshLayout.autoRefresh(); } - } - - @Override - public void onFailure(Call<WeatherResponse> call, Throwable t) { - - } - }); - } else { - setWeatherData(weatherResponse); - } - LiveEventBus.get("location", LatLonBean.class).removeObserver(myObserver); - } - }; - + }); /** * 璁剧疆澶╂皵鐩稿叧淇℃伅 * - * @param data + * @param */ - private void setWeatherData(WeatherResponse data) { - try { - if (data.getResults() != null) { - binding.cityName.setText(data.getResults()[0].getLocation().getName()); - binding.time.setText(data.getDate()); - int weatherImg = ImageUtils.getWeatherDrawable(data.getResults()[0].getDaily()[0].getCode_day()); - if (weatherImg != 0) { - binding.weatherImg.setImageDrawable(getResources().getDrawable(weatherImg)); - } - binding.weatherName.setText(data.getResults()[0].getDaily()[0].getText_day()); - binding.weatherTemperature.setText(data.getResults()[0].getDaily()[0].getLow() + "掳C 锝� " + data.getResults()[0].getDaily()[0].getHigh() + "掳C"); +// private void setWeatherData(WeatherResponse data) { +// try { +// if (data.getResults() != null) { +// binding.cityName.setText(data.getResults()[0].getLocation().getName()); +// binding.time.setText(data.getDate()); +// int weatherImg = ImageUtils.getWeatherDrawable(data.getResults()[0].getDaily()[0].getCode_day()); +// if (weatherImg != 0) { +// binding.weatherImg.setImageDrawable(getResources().getDrawable(weatherImg)); +// } +// binding.weatherName.setText(data.getResults()[0].getDaily()[0].getText_day()); +// binding.weatherTemperature.setText(data.getResults()[0].getDaily()[0].getLow() + "掳C 锝� " + data.getResults()[0].getDaily()[0].getHigh() + "掳C"); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// CrashReport.postCatchedException(e); +// } +// } + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + binding = FragmentOrderBinding.inflate(inflater, container, false); + initView(); + //mq浼犳潵鐨勬秷鎭� + LiveEventBus.get(CommonKeyName.MQTTData).observeForever(new Observer<Object>() { + @Override + public void onChanged(Object o) { + showRedlotDate = new Date().getTime(); +// binding.redDotImg.setVisibility(View.VISIBLE); + getMarkerData((String) o); } - } catch (Exception e) { - e.printStackTrace(); - CrashReport.postCatchedException(e); + }); + return binding.getRoot(); + } + + + void initView() { + //鏈畬鎴� + binding.manageStateProgressRL.setOnClickListener(v -> { + chooseStateView(true); + state = STATE_UNDONE;//1 鏈紑濮� 2 宸插畬鎴� + + }); + //宸插畬鎴� + binding.manageStateFinish.setOnClickListener(v -> { + chooseStateView(false); + state = STATE_DONE;//1 鏈紑濮� 2 宸插畬鎴� + }); + //鏈畬鎴� + myRefreshLayout = (RefreshLayout) binding.refreshLayout; + myRefreshLayout.setRefreshHeader(new ClassicsHeader(this.getContext())); + myRefreshLayout.setRefreshFooter(new ClassicsFooter(this.getContext())); + + myRefreshLayout.setOnRefreshListener(refreshlayout -> { +// refreshlayout.finishRefresh(2000/*,false*/);//浼犲叆false琛ㄧず鍒锋柊澶辫触 + lastRefreshDate = new Date().getTime(); + if (lastRefreshDate > showRedlotDate) { + //娑堥櫎绾㈢偣 + LiveEventBus.get(CommonKeyName.RedLotRefresh).post(true); +// binding.redDotImg.setVisibility(View.GONE); + } + recordsList.clear(); + page = 0; + getMarkerData(refreshlayout, true, STATE_UNDONE); + }); + myRefreshLayout.setOnLoadMoreListener(refreshlayout -> { + page = page + 1; + getMarkerData(refreshlayout, false, STATE_UNDONE); + }); + + mAdapter = new OrderAdapter(this.getContext(), recordsList, this); + LinearLayoutManager layoutManager = new LinearLayoutManager(this.getContext()); + binding.recyclerView.setLayoutManager(layoutManager); + binding.recyclerView.setAdapter(mAdapter); + getMarkerData(myRefreshLayout, true, STATE_UNDONE); + //宸插畬鎴� + RefreshLayout myRefreshLayoutDone = binding.refreshLayoutDone; + myRefreshLayoutDone.setRefreshHeader(new ClassicsHeader(this.getContext())); + myRefreshLayoutDone.setRefreshFooter(new ClassicsFooter(this.getContext())); + myRefreshLayoutDone.setOnRefreshListener(refreshlayout -> { + recordsListDone.clear(); + page = 0; + getMarkerData(refreshlayout, true, STATE_DONE); + }); + myRefreshLayoutDone.setOnLoadMoreListener(refreshlayout -> { + page = page + 1; + getMarkerData(refreshlayout, false, STATE_DONE); + }); + mDoneAdapter = new OrderAdapter(this.getContext(), recordsListDone, this); + LinearLayoutManager layoutManagerDone = new LinearLayoutManager(this.getContext()); + binding.recyclerViewDone.setLayoutManager(layoutManagerDone); + binding.recyclerViewDone.setAdapter(mDoneAdapter); + getMarkerData(myRefreshLayoutDone, true, 2); + } + + + @Override + public void onResume() { + super.onResume(); + MyLog.d("OrderFragment>>onResume"); +// if (showRedlotDate > lastRefreshDate) { +// binding.redDotImg.setVisibility(View.VISIBLE); +// } else { +// binding.redDotImg.setVisibility(View.GONE); +// } + } + + @Override + public void onPause() { + super.onPause(); + MyLog.d("OrderFragment>>onPause"); + } + + /** + * 鑾峰彇鏈垹闄ゅ伐鍗� + */ + private void getMarkerData(RefreshLayout refreshlayout, boolean isRefresh, int state) { + + Map<String, Object> params = new HashMap<>(); + if (isRefresh) { + page = 1; + if (state == STATE_UNDONE) { + recordsList.clear(); + } else { + recordsListDone.clear(); + } + } + params.put("pageSize", pageSize); + params.put("pageCurr", page); + params.put("state", state); + params.put("inspectorId", MyApplication.myApplication.userId); + + ApiManager.getInstance().requestGetHideLoading(this.getContext(), Constants.BASE_URL + "/app/workOrder/getWorkOrders", OrderListResult.class, params, new SubscriberListener<BaseResponse<OrderListResult>>() { + @Override + public void onNext(BaseResponse<OrderListResult> t) { + if (t.isSuccess()) { + if (t.getContent().getObj() != null && t.getContent().getObj().size() > 0) { + if (state == STATE_UNDONE) { + recordsList.addAll(t.getContent().getObj()); + } else { + recordsListDone.addAll(t.getContent().getObj()); + } + if (t.getContent().getPageTotal() == page) { + refreshlayout.finishLoadMoreWithNoMoreData(); + } + } else { + refreshlayout.finishLoadMoreWithNoMoreData(); + } + } else { + ToastUtil.showToast(OrderFragment.this.getContext(), t.getMsg()); + } + } + + @Override + public void onCloose() { + super.onCloose(); + layoutFinish(refreshlayout, isRefresh); + if (state == STATE_UNDONE) { + mAdapter.notifyDataSetChanged(); + } else { + mDoneAdapter.notifyDataSetChanged(); + } + } + + }); + } + + public void startDetail(String workOrderId, String proResultId) { + Intent intent = new Intent(this.getContext(), OrderDetailActivity.class); + intent.putExtra("workOrderId", workOrderId); + if (!TextUtils.isEmpty(proResultId)) { + intent.putExtra("proResultId", proResultId); + } + activityResultLauncher.launch(intent); + } + + + /** + * 淇敼杩涘害鐘舵�� + * + * @param state true涓烘湭瀹屾垚 false涓哄凡瀹屾垚 + */ + + void chooseStateView(boolean state) { + if (state) { + binding.manageStateProgress.setTextColor(getResources().getColor(R.color.title_color, null)); + binding.manageStateProgress.setBackground(getResources().getDrawable(R.drawable.ic_choose_bg_whit, null)); + binding.manageStateProgressRL.setBackground(getResources().getDrawable(R.drawable.ic_choose_bg_whit, null)); + binding.manageStateProgress.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); + binding.manageStateFinish.setTextColor(getResources().getColor(R.color.black, null)); + binding.manageStateFinish.setBackground(getResources().getDrawable(R.color.title_choose_bg, null)); + binding.manageStateFinish.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL)); + binding.refreshLayout.setVisibility(View.VISIBLE); + binding.refreshLayoutDone.setVisibility(View.GONE); + + } else { + binding.manageStateFinish.setTextColor(getResources().getColor(R.color.title_color, null)); + binding.manageStateFinish.setBackground(getResources().getDrawable(R.drawable.ic_choose_bg_whit, null)); + binding.manageStateFinish.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); + binding.manageStateProgress.setTextColor(getResources().getColor(R.color.black, null)); + binding.manageStateProgress.setBackground(getResources().getDrawable(R.color.title_choose_bg, null)); + binding.manageStateProgressRL.setBackground(getResources().getDrawable(R.color.title_choose_bg, null)); + binding.manageStateProgress.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL)); + binding.refreshLayout.setVisibility(View.GONE); + binding.refreshLayoutDone.setVisibility(View.VISIBLE); } } - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - binding = FragmentMainBinding.inflate(inflater, container, false); - //鑾峰彇鍒扮粡绾害鍚庤幏鍙栧ぉ姘斾俊鎭� - LiveEventBus - .get("location", LatLonBean.class) - .observeForever(myObserver); - - return binding.getRoot(); + /** + * 鑾峰彇宸ュ崟璇︽儏 + */ + private void getMarkerData(String workOrderId) { + Map<String, Object> params = new HashMap<>(); + params.put("workOrderId", workOrderId); + ApiManager.getInstance().requestGetHideLoading(this.getContext(), Constants.BASE_URL + "/app/workOrder/getOneWorkOrder", OrderDetailResult.class, params, new SubscriberListener<BaseResponse<OrderDetailResult>>() { + @Override + public void onNext(BaseResponse<OrderDetailResult> t) { + if (t.isSuccess()) { + if (MainActivity.workerIddata != null) { + if (!MainActivity.workerIddata.containsKey(workOrderId)) { + LiveEventBus.get(CommonKeyName.CreateNotification).post(t.getContent()); + recordsList.add(0, t.getContent()); + mAdapter.notifyItemInserted(0); + } + } + } + } + }); } - @Override - public void onStart() { - super.onStart(); - new TitleBar(OrderFragment.this.getActivity()).setTitleText("宸ュ崟"); - } } -- Gitblit v1.8.0