diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java index d146412..42652aa 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -2,7 +2,6 @@ import android.annotation.SuppressLint; import android.content.Context; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -10,13 +9,19 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; import org.json.JSONException; import org.json.JSONObject; @@ -26,15 +31,21 @@ import okhttp3.ResponseBody; +@SuppressLint("SetTextI18n") public class PackageHandledAdapter extends RecyclerView.Adapter { private static final String TAG = "PackageHandledAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageHandledAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -62,54 +73,48 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") void bindView(PackageHandledBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); //获取商铺图标 - HttpRequestHelper.doRequest("/shop/merchant/detail", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { String string = resultBean.string(); - /** - * { - * "code":200, - * "data":[], - * "message":"请求成功", - * "success":true - * } - * - * { - * "code":500, - * "data":"", - * "exceptionClazz":"", - * "message":"服务器异常", - * "success":false - * } - * */ JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明请求失败了,用默认图 - leftImageView.setBackgroundResource(R.drawable.ic_package_holder); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); } else { - Log.d(TAG, "detail: " + data); + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } } } catch (IOException | JSONException e) { e.printStackTrace(); @@ -123,20 +128,36 @@ }); //获取商铺处罚记录 - HttpRequestHelper.doRequest("/shop/punish/listByMerchant", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { - String string = resultBean.string(); - JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明没有处罚过 + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); - } else { - Log.d(TAG, "listByMerchant: " + data); + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } - } catch (IOException | JSONException e) { + } catch (IOException e) { e.printStackTrace(); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java index d146412..42652aa 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -2,7 +2,6 @@ import android.annotation.SuppressLint; import android.content.Context; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -10,13 +9,19 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; import org.json.JSONException; import org.json.JSONObject; @@ -26,15 +31,21 @@ import okhttp3.ResponseBody; +@SuppressLint("SetTextI18n") public class PackageHandledAdapter extends RecyclerView.Adapter { private static final String TAG = "PackageHandledAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageHandledAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -62,54 +73,48 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") void bindView(PackageHandledBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); //获取商铺图标 - HttpRequestHelper.doRequest("/shop/merchant/detail", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { String string = resultBean.string(); - /** - * { - * "code":200, - * "data":[], - * "message":"请求成功", - * "success":true - * } - * - * { - * "code":500, - * "data":"", - * "exceptionClazz":"", - * "message":"服务器异常", - * "success":false - * } - * */ JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明请求失败了,用默认图 - leftImageView.setBackgroundResource(R.drawable.ic_package_holder); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); } else { - Log.d(TAG, "detail: " + data); + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } } } catch (IOException | JSONException e) { e.printStackTrace(); @@ -123,20 +128,36 @@ }); //获取商铺处罚记录 - HttpRequestHelper.doRequest("/shop/punish/listByMerchant", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { - String string = resultBean.string(); - JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明没有处罚过 + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); - } else { - Log.d(TAG, "listByMerchant: " + data); + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } - } catch (IOException | JSONException e) { + } catch (IOException e) { e.printStackTrace(); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java index 4671a7a..2f9aa17 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java @@ -9,22 +9,43 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; import java.util.List; +import okhttp3.ResponseBody; + +@SuppressLint("SetTextI18n") public class PackageTodoAdapter extends RecyclerView.Adapter { + private static final String TAG = "PackageTodoAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageTodoAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -52,25 +73,98 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + String string = resultBean.string(); + JSONObject jsonObject = new JSONObject(string); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } + } + } catch (JSONException | IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); + + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java index d146412..42652aa 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -2,7 +2,6 @@ import android.annotation.SuppressLint; import android.content.Context; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -10,13 +9,19 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; import org.json.JSONException; import org.json.JSONObject; @@ -26,15 +31,21 @@ import okhttp3.ResponseBody; +@SuppressLint("SetTextI18n") public class PackageHandledAdapter extends RecyclerView.Adapter { private static final String TAG = "PackageHandledAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageHandledAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -62,54 +73,48 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") void bindView(PackageHandledBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); //获取商铺图标 - HttpRequestHelper.doRequest("/shop/merchant/detail", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { String string = resultBean.string(); - /** - * { - * "code":200, - * "data":[], - * "message":"请求成功", - * "success":true - * } - * - * { - * "code":500, - * "data":"", - * "exceptionClazz":"", - * "message":"服务器异常", - * "success":false - * } - * */ JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明请求失败了,用默认图 - leftImageView.setBackgroundResource(R.drawable.ic_package_holder); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); } else { - Log.d(TAG, "detail: " + data); + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } } } catch (IOException | JSONException e) { e.printStackTrace(); @@ -123,20 +128,36 @@ }); //获取商铺处罚记录 - HttpRequestHelper.doRequest("/shop/punish/listByMerchant", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { - String string = resultBean.string(); - JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明没有处罚过 + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); - } else { - Log.d(TAG, "listByMerchant: " + data); + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } - } catch (IOException | JSONException e) { + } catch (IOException e) { e.printStackTrace(); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java index 4671a7a..2f9aa17 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java @@ -9,22 +9,43 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; import java.util.List; +import okhttp3.ResponseBody; + +@SuppressLint("SetTextI18n") public class PackageTodoAdapter extends RecyclerView.Adapter { + private static final String TAG = "PackageTodoAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageTodoAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -52,25 +73,98 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + String string = resultBean.string(); + JSONObject jsonObject = new JSONObject(string); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } + } + } catch (JSONException | IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); + + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java new file mode 100644 index 0000000..086ed9a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java @@ -0,0 +1,86 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; + +import java.util.List; + +@SuppressLint("SetTextI18n") +public class PunishTypeAdapter extends RecyclerView.Adapter { + + private Context context; + private List dataRows; + private PunishTimesBean.DataBean dataBean; + private LayoutInflater layoutInflater; + + PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) { + this.context = context; + this.dataRows = dataRows; + this.dataBean = dataBean; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false); + return new ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) { + String typeName = dataRows.get(position).getPunishTypeName(); + int color, times; + switch (typeName) { + case "劝导": + times = dataBean.getPersuade(); + color = ContextCompat.getColor(context, R.color.persuadeColor); + break; + case "警告": + times = dataBean.getWarn(); + color = ContextCompat.getColor(context, R.color.warnColor); + break; + case "处罚": + times = dataBean.getPunish(); + color = ContextCompat.getColor(context, R.color.punishColor); + break; + default: + times = 0; + color = ContextCompat.getColor(context, R.color.mainThemeColor); + break; + } + if (times == 0) { + holder.punishTypeView.setVisibility(View.GONE); + } else { + holder.punishTypeView.setText(typeName + " x " + times); + holder.punishTypeView.setBackgroundColor(color); + } + } + + @Override + public int getItemCount() { + return dataRows.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private TextView punishTypeView; + + ItemViewHolder(@NonNull View itemView) { + super(itemView); + punishTypeView = itemView.findViewById(R.id.punishTypeView); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java index d146412..42652aa 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -2,7 +2,6 @@ import android.annotation.SuppressLint; import android.content.Context; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -10,13 +9,19 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; import org.json.JSONException; import org.json.JSONObject; @@ -26,15 +31,21 @@ import okhttp3.ResponseBody; +@SuppressLint("SetTextI18n") public class PackageHandledAdapter extends RecyclerView.Adapter { private static final String TAG = "PackageHandledAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageHandledAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -62,54 +73,48 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") void bindView(PackageHandledBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); //获取商铺图标 - HttpRequestHelper.doRequest("/shop/merchant/detail", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { String string = resultBean.string(); - /** - * { - * "code":200, - * "data":[], - * "message":"请求成功", - * "success":true - * } - * - * { - * "code":500, - * "data":"", - * "exceptionClazz":"", - * "message":"服务器异常", - * "success":false - * } - * */ JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明请求失败了,用默认图 - leftImageView.setBackgroundResource(R.drawable.ic_package_holder); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); } else { - Log.d(TAG, "detail: " + data); + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } } } catch (IOException | JSONException e) { e.printStackTrace(); @@ -123,20 +128,36 @@ }); //获取商铺处罚记录 - HttpRequestHelper.doRequest("/shop/punish/listByMerchant", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { - String string = resultBean.string(); - JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明没有处罚过 + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); - } else { - Log.d(TAG, "listByMerchant: " + data); + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } - } catch (IOException | JSONException e) { + } catch (IOException e) { e.printStackTrace(); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java index 4671a7a..2f9aa17 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java @@ -9,22 +9,43 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; import java.util.List; +import okhttp3.ResponseBody; + +@SuppressLint("SetTextI18n") public class PackageTodoAdapter extends RecyclerView.Adapter { + private static final String TAG = "PackageTodoAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageTodoAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -52,25 +73,98 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + String string = resultBean.string(); + JSONObject jsonObject = new JSONObject(string); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } + } + } catch (JSONException | IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); + + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java new file mode 100644 index 0000000..086ed9a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java @@ -0,0 +1,86 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; + +import java.util.List; + +@SuppressLint("SetTextI18n") +public class PunishTypeAdapter extends RecyclerView.Adapter { + + private Context context; + private List dataRows; + private PunishTimesBean.DataBean dataBean; + private LayoutInflater layoutInflater; + + PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) { + this.context = context; + this.dataRows = dataRows; + this.dataBean = dataBean; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false); + return new ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) { + String typeName = dataRows.get(position).getPunishTypeName(); + int color, times; + switch (typeName) { + case "劝导": + times = dataBean.getPersuade(); + color = ContextCompat.getColor(context, R.color.persuadeColor); + break; + case "警告": + times = dataBean.getWarn(); + color = ContextCompat.getColor(context, R.color.warnColor); + break; + case "处罚": + times = dataBean.getPunish(); + color = ContextCompat.getColor(context, R.color.punishColor); + break; + default: + times = 0; + color = ContextCompat.getColor(context, R.color.mainThemeColor); + break; + } + if (times == 0) { + holder.punishTypeView.setVisibility(View.GONE); + } else { + holder.punishTypeView.setText(typeName + " x " + times); + holder.punishTypeView.setBackgroundColor(color); + } + } + + @Override + public int getItemCount() { + return dataRows.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private TextView punishTypeView; + + ItemViewHolder(@NonNull View itemView) { + super(itemView); + punishTypeView = itemView.findViewById(R.id.punishTypeView); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java new file mode 100644 index 0000000..df2e5f3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java @@ -0,0 +1,76 @@ +package com.casic.dcms.bean; + +public class PunishTimesBean { + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + /** + * warn : 0 + * punish : 0 + * persuade : 0 + */ + + private int warn; + private int punish; + private int persuade; + + public int getWarn() { + return warn; + } + + public void setWarn(int warn) { + this.warn = warn; + } + + public int getPunish() { + return punish; + } + + public void setPunish(int punish) { + this.punish = punish; + } + + public int getPersuade() { + return persuade; + } + + public void setPersuade(int persuade) { + this.persuade = persuade; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java index d146412..42652aa 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -2,7 +2,6 @@ import android.annotation.SuppressLint; import android.content.Context; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -10,13 +9,19 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; import org.json.JSONException; import org.json.JSONObject; @@ -26,15 +31,21 @@ import okhttp3.ResponseBody; +@SuppressLint("SetTextI18n") public class PackageHandledAdapter extends RecyclerView.Adapter { private static final String TAG = "PackageHandledAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageHandledAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -62,54 +73,48 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") void bindView(PackageHandledBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); //获取商铺图标 - HttpRequestHelper.doRequest("/shop/merchant/detail", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { String string = resultBean.string(); - /** - * { - * "code":200, - * "data":[], - * "message":"请求成功", - * "success":true - * } - * - * { - * "code":500, - * "data":"", - * "exceptionClazz":"", - * "message":"服务器异常", - * "success":false - * } - * */ JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明请求失败了,用默认图 - leftImageView.setBackgroundResource(R.drawable.ic_package_holder); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); } else { - Log.d(TAG, "detail: " + data); + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } } } catch (IOException | JSONException e) { e.printStackTrace(); @@ -123,20 +128,36 @@ }); //获取商铺处罚记录 - HttpRequestHelper.doRequest("/shop/punish/listByMerchant", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { - String string = resultBean.string(); - JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明没有处罚过 + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); - } else { - Log.d(TAG, "listByMerchant: " + data); + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } - } catch (IOException | JSONException e) { + } catch (IOException e) { e.printStackTrace(); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java index 4671a7a..2f9aa17 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java @@ -9,22 +9,43 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; import java.util.List; +import okhttp3.ResponseBody; + +@SuppressLint("SetTextI18n") public class PackageTodoAdapter extends RecyclerView.Adapter { + private static final String TAG = "PackageTodoAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageTodoAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -52,25 +73,98 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + String string = resultBean.string(); + JSONObject jsonObject = new JSONObject(string); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } + } + } catch (JSONException | IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); + + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java new file mode 100644 index 0000000..086ed9a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java @@ -0,0 +1,86 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; + +import java.util.List; + +@SuppressLint("SetTextI18n") +public class PunishTypeAdapter extends RecyclerView.Adapter { + + private Context context; + private List dataRows; + private PunishTimesBean.DataBean dataBean; + private LayoutInflater layoutInflater; + + PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) { + this.context = context; + this.dataRows = dataRows; + this.dataBean = dataBean; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false); + return new ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) { + String typeName = dataRows.get(position).getPunishTypeName(); + int color, times; + switch (typeName) { + case "劝导": + times = dataBean.getPersuade(); + color = ContextCompat.getColor(context, R.color.persuadeColor); + break; + case "警告": + times = dataBean.getWarn(); + color = ContextCompat.getColor(context, R.color.warnColor); + break; + case "处罚": + times = dataBean.getPunish(); + color = ContextCompat.getColor(context, R.color.punishColor); + break; + default: + times = 0; + color = ContextCompat.getColor(context, R.color.mainThemeColor); + break; + } + if (times == 0) { + holder.punishTypeView.setVisibility(View.GONE); + } else { + holder.punishTypeView.setText(typeName + " x " + times); + holder.punishTypeView.setBackgroundColor(color); + } + } + + @Override + public int getItemCount() { + return dataRows.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private TextView punishTypeView; + + ItemViewHolder(@NonNull View itemView) { + super(itemView); + punishTypeView = itemView.findViewById(R.id.punishTypeView); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java new file mode 100644 index 0000000..df2e5f3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java @@ -0,0 +1,76 @@ +package com.casic.dcms.bean; + +public class PunishTimesBean { + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + /** + * warn : 0 + * punish : 0 + * persuade : 0 + */ + + private int warn; + private int punish; + private int persuade; + + public int getWarn() { + return warn; + } + + public void setWarn(int warn) { + this.warn = warn; + } + + public int getPunish() { + return punish; + } + + public void setPunish(int punish) { + this.punish = punish; + } + + public int getPersuade() { + return persuade; + } + + public void setPersuade(int persuade) { + this.persuade = persuade; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java new file mode 100644 index 0000000..49bcc99 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java @@ -0,0 +1,98 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PunishTypeBean { + private int code; + private String message; + private boolean success; + private List data; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * punishTime : 2021-01-12 09:08:59 + * punishTypeName : 处罚 + * punishImage : images + * punishType : 1 + * punishRemarks : 处罚 + */ + + private String punishTime; + private String punishTypeName; + private String punishImage; + private String punishType; + private String punishRemarks; + + public String getPunishTime() { + return punishTime; + } + + public void setPunishTime(String punishTime) { + this.punishTime = punishTime; + } + + public String getPunishTypeName() { + return punishTypeName; + } + + public void setPunishTypeName(String punishTypeName) { + this.punishTypeName = punishTypeName; + } + + public String getPunishImage() { + return punishImage; + } + + public void setPunishImage(String punishImage) { + this.punishImage = punishImage; + } + + public String getPunishType() { + return punishType; + } + + public void setPunishType(String punishType) { + this.punishType = punishType; + } + + public String getPunishRemarks() { + return punishRemarks; + } + + public void setPunishRemarks(String punishRemarks) { + this.punishRemarks = punishRemarks; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java index d146412..42652aa 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -2,7 +2,6 @@ import android.annotation.SuppressLint; import android.content.Context; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -10,13 +9,19 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; import org.json.JSONException; import org.json.JSONObject; @@ -26,15 +31,21 @@ import okhttp3.ResponseBody; +@SuppressLint("SetTextI18n") public class PackageHandledAdapter extends RecyclerView.Adapter { private static final String TAG = "PackageHandledAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageHandledAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -62,54 +73,48 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") void bindView(PackageHandledBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); //获取商铺图标 - HttpRequestHelper.doRequest("/shop/merchant/detail", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { String string = resultBean.string(); - /** - * { - * "code":200, - * "data":[], - * "message":"请求成功", - * "success":true - * } - * - * { - * "code":500, - * "data":"", - * "exceptionClazz":"", - * "message":"服务器异常", - * "success":false - * } - * */ JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明请求失败了,用默认图 - leftImageView.setBackgroundResource(R.drawable.ic_package_holder); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); } else { - Log.d(TAG, "detail: " + data); + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } } } catch (IOException | JSONException e) { e.printStackTrace(); @@ -123,20 +128,36 @@ }); //获取商铺处罚记录 - HttpRequestHelper.doRequest("/shop/punish/listByMerchant", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { - String string = resultBean.string(); - JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明没有处罚过 + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); - } else { - Log.d(TAG, "listByMerchant: " + data); + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } - } catch (IOException | JSONException e) { + } catch (IOException e) { e.printStackTrace(); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java index 4671a7a..2f9aa17 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java @@ -9,22 +9,43 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; import java.util.List; +import okhttp3.ResponseBody; + +@SuppressLint("SetTextI18n") public class PackageTodoAdapter extends RecyclerView.Adapter { + private static final String TAG = "PackageTodoAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageTodoAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -52,25 +73,98 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + String string = resultBean.string(); + JSONObject jsonObject = new JSONObject(string); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } + } + } catch (JSONException | IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); + + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java new file mode 100644 index 0000000..086ed9a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java @@ -0,0 +1,86 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; + +import java.util.List; + +@SuppressLint("SetTextI18n") +public class PunishTypeAdapter extends RecyclerView.Adapter { + + private Context context; + private List dataRows; + private PunishTimesBean.DataBean dataBean; + private LayoutInflater layoutInflater; + + PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) { + this.context = context; + this.dataRows = dataRows; + this.dataBean = dataBean; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false); + return new ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) { + String typeName = dataRows.get(position).getPunishTypeName(); + int color, times; + switch (typeName) { + case "劝导": + times = dataBean.getPersuade(); + color = ContextCompat.getColor(context, R.color.persuadeColor); + break; + case "警告": + times = dataBean.getWarn(); + color = ContextCompat.getColor(context, R.color.warnColor); + break; + case "处罚": + times = dataBean.getPunish(); + color = ContextCompat.getColor(context, R.color.punishColor); + break; + default: + times = 0; + color = ContextCompat.getColor(context, R.color.mainThemeColor); + break; + } + if (times == 0) { + holder.punishTypeView.setVisibility(View.GONE); + } else { + holder.punishTypeView.setText(typeName + " x " + times); + holder.punishTypeView.setBackgroundColor(color); + } + } + + @Override + public int getItemCount() { + return dataRows.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private TextView punishTypeView; + + ItemViewHolder(@NonNull View itemView) { + super(itemView); + punishTypeView = itemView.findViewById(R.id.punishTypeView); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java new file mode 100644 index 0000000..df2e5f3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java @@ -0,0 +1,76 @@ +package com.casic.dcms.bean; + +public class PunishTimesBean { + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + /** + * warn : 0 + * punish : 0 + * persuade : 0 + */ + + private int warn; + private int punish; + private int persuade; + + public int getWarn() { + return warn; + } + + public void setWarn(int warn) { + this.warn = warn; + } + + public int getPunish() { + return punish; + } + + public void setPunish(int punish) { + this.punish = punish; + } + + public int getPersuade() { + return persuade; + } + + public void setPersuade(int persuade) { + this.persuade = persuade; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java new file mode 100644 index 0000000..49bcc99 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java @@ -0,0 +1,98 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PunishTypeBean { + private int code; + private String message; + private boolean success; + private List data; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * punishTime : 2021-01-12 09:08:59 + * punishTypeName : 处罚 + * punishImage : images + * punishType : 1 + * punishRemarks : 处罚 + */ + + private String punishTime; + private String punishTypeName; + private String punishImage; + private String punishType; + private String punishRemarks; + + public String getPunishTime() { + return punishTime; + } + + public void setPunishTime(String punishTime) { + this.punishTime = punishTime; + } + + public String getPunishTypeName() { + return punishTypeName; + } + + public void setPunishTypeName(String punishTypeName) { + this.punishTypeName = punishTypeName; + } + + public String getPunishImage() { + return punishImage; + } + + public void setPunishImage(String punishImage) { + this.punishImage = punishImage; + } + + public String getPunishType() { + return punishType; + } + + public void setPunishType(String punishType) { + this.punishType = punishType; + } + + public String getPunishRemarks() { + return punishRemarks; + } + + public void setPunishRemarks(String punishRemarks) { + this.punishRemarks = punishRemarks; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java new file mode 100644 index 0000000..3b57d7b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java @@ -0,0 +1,192 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; + +import java.util.ArrayList; + +import butterknife.BindView; +import butterknife.OnClick; + +public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView { + private static final String TAG = "PackageHandledDetail"; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseHandleStatusView) + TextView caseHandleStatusView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.punishTypeView) + TextView punishTypeView; + @BindView(R.id.punishOpinionView) + TextView punishOpinionView; + @BindView(R.id.punishRecyclerView) + RecyclerView punishRecyclerView; + @BindView(R.id.punishDateView) + TextView punishDateView; + + private Context context = this; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseDetailPresenterImpl caseDetailPresenter; + + @Override + public int initLayoutView() { + return R.layout.activity_package_handled; + } + + @Override + protected String setTitleName() { + return "已办案卷"; + } + + @Override + public void initData() { + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseHandleStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + //最初始的案卷图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //案卷处理时候上传的图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.handleLayout}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.handleLayout: + OtherUtils.showCaseProcess(this, data.getProcessId()); + break; + default: + break; + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java index d146412..42652aa 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -2,7 +2,6 @@ import android.annotation.SuppressLint; import android.content.Context; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -10,13 +9,19 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; import org.json.JSONException; import org.json.JSONObject; @@ -26,15 +31,21 @@ import okhttp3.ResponseBody; +@SuppressLint("SetTextI18n") public class PackageHandledAdapter extends RecyclerView.Adapter { private static final String TAG = "PackageHandledAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageHandledAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -62,54 +73,48 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") void bindView(PackageHandledBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); //获取商铺图标 - HttpRequestHelper.doRequest("/shop/merchant/detail", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { String string = resultBean.string(); - /** - * { - * "code":200, - * "data":[], - * "message":"请求成功", - * "success":true - * } - * - * { - * "code":500, - * "data":"", - * "exceptionClazz":"", - * "message":"服务器异常", - * "success":false - * } - * */ JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明请求失败了,用默认图 - leftImageView.setBackgroundResource(R.drawable.ic_package_holder); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); } else { - Log.d(TAG, "detail: " + data); + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } } } catch (IOException | JSONException e) { e.printStackTrace(); @@ -123,20 +128,36 @@ }); //获取商铺处罚记录 - HttpRequestHelper.doRequest("/shop/punish/listByMerchant", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { - String string = resultBean.string(); - JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明没有处罚过 + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); - } else { - Log.d(TAG, "listByMerchant: " + data); + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } - } catch (IOException | JSONException e) { + } catch (IOException e) { e.printStackTrace(); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java index 4671a7a..2f9aa17 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java @@ -9,22 +9,43 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; import java.util.List; +import okhttp3.ResponseBody; + +@SuppressLint("SetTextI18n") public class PackageTodoAdapter extends RecyclerView.Adapter { + private static final String TAG = "PackageTodoAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageTodoAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -52,25 +73,98 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + String string = resultBean.string(); + JSONObject jsonObject = new JSONObject(string); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } + } + } catch (JSONException | IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); + + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java new file mode 100644 index 0000000..086ed9a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java @@ -0,0 +1,86 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; + +import java.util.List; + +@SuppressLint("SetTextI18n") +public class PunishTypeAdapter extends RecyclerView.Adapter { + + private Context context; + private List dataRows; + private PunishTimesBean.DataBean dataBean; + private LayoutInflater layoutInflater; + + PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) { + this.context = context; + this.dataRows = dataRows; + this.dataBean = dataBean; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false); + return new ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) { + String typeName = dataRows.get(position).getPunishTypeName(); + int color, times; + switch (typeName) { + case "劝导": + times = dataBean.getPersuade(); + color = ContextCompat.getColor(context, R.color.persuadeColor); + break; + case "警告": + times = dataBean.getWarn(); + color = ContextCompat.getColor(context, R.color.warnColor); + break; + case "处罚": + times = dataBean.getPunish(); + color = ContextCompat.getColor(context, R.color.punishColor); + break; + default: + times = 0; + color = ContextCompat.getColor(context, R.color.mainThemeColor); + break; + } + if (times == 0) { + holder.punishTypeView.setVisibility(View.GONE); + } else { + holder.punishTypeView.setText(typeName + " x " + times); + holder.punishTypeView.setBackgroundColor(color); + } + } + + @Override + public int getItemCount() { + return dataRows.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private TextView punishTypeView; + + ItemViewHolder(@NonNull View itemView) { + super(itemView); + punishTypeView = itemView.findViewById(R.id.punishTypeView); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java new file mode 100644 index 0000000..df2e5f3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java @@ -0,0 +1,76 @@ +package com.casic.dcms.bean; + +public class PunishTimesBean { + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + /** + * warn : 0 + * punish : 0 + * persuade : 0 + */ + + private int warn; + private int punish; + private int persuade; + + public int getWarn() { + return warn; + } + + public void setWarn(int warn) { + this.warn = warn; + } + + public int getPunish() { + return punish; + } + + public void setPunish(int punish) { + this.punish = punish; + } + + public int getPersuade() { + return persuade; + } + + public void setPersuade(int persuade) { + this.persuade = persuade; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java new file mode 100644 index 0000000..49bcc99 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java @@ -0,0 +1,98 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PunishTypeBean { + private int code; + private String message; + private boolean success; + private List data; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * punishTime : 2021-01-12 09:08:59 + * punishTypeName : 处罚 + * punishImage : images + * punishType : 1 + * punishRemarks : 处罚 + */ + + private String punishTime; + private String punishTypeName; + private String punishImage; + private String punishType; + private String punishRemarks; + + public String getPunishTime() { + return punishTime; + } + + public void setPunishTime(String punishTime) { + this.punishTime = punishTime; + } + + public String getPunishTypeName() { + return punishTypeName; + } + + public void setPunishTypeName(String punishTypeName) { + this.punishTypeName = punishTypeName; + } + + public String getPunishImage() { + return punishImage; + } + + public void setPunishImage(String punishImage) { + this.punishImage = punishImage; + } + + public String getPunishType() { + return punishType; + } + + public void setPunishType(String punishType) { + this.punishType = punishType; + } + + public String getPunishRemarks() { + return punishRemarks; + } + + public void setPunishRemarks(String punishRemarks) { + this.punishRemarks = punishRemarks; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java new file mode 100644 index 0000000..3b57d7b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java @@ -0,0 +1,192 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; + +import java.util.ArrayList; + +import butterknife.BindView; +import butterknife.OnClick; + +public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView { + private static final String TAG = "PackageHandledDetail"; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseHandleStatusView) + TextView caseHandleStatusView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.punishTypeView) + TextView punishTypeView; + @BindView(R.id.punishOpinionView) + TextView punishOpinionView; + @BindView(R.id.punishRecyclerView) + RecyclerView punishRecyclerView; + @BindView(R.id.punishDateView) + TextView punishDateView; + + private Context context = this; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseDetailPresenterImpl caseDetailPresenter; + + @Override + public int initLayoutView() { + return R.layout.activity_package_handled; + } + + @Override + protected String setTitleName() { + return "已办案卷"; + } + + @Override + public void initData() { + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseHandleStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + //最初始的案卷图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //案卷处理时候上传的图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.handleLayout}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.handleLayout: + OtherUtils.showCaseProcess(this, data.getProcessId()); + break; + default: + break; + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java new file mode 100644 index 0000000..9977519 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java @@ -0,0 +1,418 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.FileUtils; +import com.casic.dcms.utils.GlideLoadEngine; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.TimeOrDateUtil; +import com.casic.dcms.utils.ToastHelper; +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.luck.picture.lib.tools.PictureFileUtils; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Timer; +import java.util.TimerTask; + +import butterknife.BindView; +import butterknife.OnClick; + +public class PackageTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, IUploadFileView { + private static final String TAG = "PackageTodoDetail"; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseHandleStatusView) + TextView caseHandleStatusView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.punishTypeView) + TextView punishTypeView; + @BindView(R.id.punishOpinionView) + EditText punishOpinionView; + @BindView(R.id.punishRecyclerView) + RecyclerView punishRecyclerView; + @BindView(R.id.addImageView) + ImageView addImageView; + @BindView(R.id.punishDateView) + TextView punishDateView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private Context context = this; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseDetailPresenterImpl caseDetailPresenter; + private QMUITipDialog submitDialog; + private UploadImagePresenterImpl uploadImagePresenter; + private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private List imageList = new ArrayList<>();//上传到服务器的数据集 + private ImageRecycleViewAdapter imageAdapter; + + @Override + public int initLayoutView() { + return R.layout.activity_package_todo; + } + + @Override + protected String setTitleName() { + return "已办案卷"; + } + + @Override + public void initData() { + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + submitDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create(); + uploadImagePresenter = new UploadImagePresenterImpl(this); + imageAdapter = new ImageRecycleViewAdapter(this); + punishRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + punishRecyclerView.addItemDecoration(new ItemDecorationSpace()); + punishRecyclerView.setAdapter(imageAdapter); + } + + @Override + public void initEvent() { + new Timer().schedule(new TimerTask() { + @Override + public void run() { + String systemTime = TimeOrDateUtil.timestampToCompleteDate(System.currentTimeMillis()); + punishDateView.post(() -> punishDateView.setText(systemTime)); + } + }, 0, 1000); + submitButton.setChangeAlphaWhenPress(true); + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseHandleStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + //最初始的案卷图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //案卷处理时候上传的图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.punishHandleLayout, R.id.addImageView, R.id.handleLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.punishHandleLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("处罚类型") + .addItem("劝导") + .addItem("警告") + .addItem("处罚") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + punishTypeView.setText(tag); + punishTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.addImageView: + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .create().show(); + break; + case R.id.handleLayout: + OtherUtils.showCaseProcess(this, data.getProcessId()); + break; + case R.id.submitButton: + submitCase();//案卷提交 + break; + default: + break; + } + } + + private void selectPicture() { + PictureSelector.create(this) + .openGallery(PictureMimeType.ofImage()) + .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(2) + .forResult(PictureConfig.CHOOSE_REQUEST); + } + + private void takePicture() { + PictureSelector.create(this) + .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(1) + .forResult(PictureConfig.REQUEST_CAMERA); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + switch (requestCode) { + case PictureConfig.CHOOSE_REQUEST: + List selectList = PictureSelector.obtainMultipleResult(data); + for (LocalMedia media : selectList) { + File file = new File(media.getCompressPath()); + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); + continue; + } + uploadImagePresenter.onReadyRetrofitRequest(file); + } + break; + case PictureConfig.REQUEST_CAMERA: + LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); + break; + default: + break; + } + } + } + + @Override + public void showProgress() { + submitDialog.show(); + } + + @Override + public void hideProgress() { + submitDialog.dismiss(); + } + + @Override + public void obtainUploadAudioResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainUploadImageResult(ActionResultBean resultBean) { +// Log.d(TAG, "obtainUploadResult: " + gson.toJson(resultBean)); + if (resultBean.isSuccess()) { + PictureFileUtils.deleteAllCacheDirFile(this); + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + String url = resultBean.getData(); + int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + if (realPaths.size() == 2) { + addImageView.setVisibility(View.GONE); + } + imageAdapter.setMediaList(realPaths); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, realPaths); + } + }); + //删除按钮点击事件 + imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + imageList.remove(position); + realPaths.remove(position); + imageAdapter.setMediaList(realPaths); + if (realPaths.size() != 2) { + addImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } + } + } + + @Override + public void obtainUploadVideoResult(ActionResultBean resultBean) { + + } + + /** + * 案卷提交 + */ + private void submitCase() { + String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); + return; + } + String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); + return; + } + if (imageAdapter.getItemCount() != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); + return; + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java index d146412..42652aa 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -2,7 +2,6 @@ import android.annotation.SuppressLint; import android.content.Context; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -10,13 +9,19 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; import org.json.JSONException; import org.json.JSONObject; @@ -26,15 +31,21 @@ import okhttp3.ResponseBody; +@SuppressLint("SetTextI18n") public class PackageHandledAdapter extends RecyclerView.Adapter { private static final String TAG = "PackageHandledAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageHandledAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -62,54 +73,48 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") void bindView(PackageHandledBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); //获取商铺图标 - HttpRequestHelper.doRequest("/shop/merchant/detail", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { String string = resultBean.string(); - /** - * { - * "code":200, - * "data":[], - * "message":"请求成功", - * "success":true - * } - * - * { - * "code":500, - * "data":"", - * "exceptionClazz":"", - * "message":"服务器异常", - * "success":false - * } - * */ JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明请求失败了,用默认图 - leftImageView.setBackgroundResource(R.drawable.ic_package_holder); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); } else { - Log.d(TAG, "detail: " + data); + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } } } catch (IOException | JSONException e) { e.printStackTrace(); @@ -123,20 +128,36 @@ }); //获取商铺处罚记录 - HttpRequestHelper.doRequest("/shop/punish/listByMerchant", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { - String string = resultBean.string(); - JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明没有处罚过 + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); - } else { - Log.d(TAG, "listByMerchant: " + data); + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } - } catch (IOException | JSONException e) { + } catch (IOException e) { e.printStackTrace(); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java index 4671a7a..2f9aa17 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java @@ -9,22 +9,43 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; import java.util.List; +import okhttp3.ResponseBody; + +@SuppressLint("SetTextI18n") public class PackageTodoAdapter extends RecyclerView.Adapter { + private static final String TAG = "PackageTodoAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageTodoAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -52,25 +73,98 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + String string = resultBean.string(); + JSONObject jsonObject = new JSONObject(string); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } + } + } catch (JSONException | IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); + + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java new file mode 100644 index 0000000..086ed9a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java @@ -0,0 +1,86 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; + +import java.util.List; + +@SuppressLint("SetTextI18n") +public class PunishTypeAdapter extends RecyclerView.Adapter { + + private Context context; + private List dataRows; + private PunishTimesBean.DataBean dataBean; + private LayoutInflater layoutInflater; + + PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) { + this.context = context; + this.dataRows = dataRows; + this.dataBean = dataBean; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false); + return new ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) { + String typeName = dataRows.get(position).getPunishTypeName(); + int color, times; + switch (typeName) { + case "劝导": + times = dataBean.getPersuade(); + color = ContextCompat.getColor(context, R.color.persuadeColor); + break; + case "警告": + times = dataBean.getWarn(); + color = ContextCompat.getColor(context, R.color.warnColor); + break; + case "处罚": + times = dataBean.getPunish(); + color = ContextCompat.getColor(context, R.color.punishColor); + break; + default: + times = 0; + color = ContextCompat.getColor(context, R.color.mainThemeColor); + break; + } + if (times == 0) { + holder.punishTypeView.setVisibility(View.GONE); + } else { + holder.punishTypeView.setText(typeName + " x " + times); + holder.punishTypeView.setBackgroundColor(color); + } + } + + @Override + public int getItemCount() { + return dataRows.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private TextView punishTypeView; + + ItemViewHolder(@NonNull View itemView) { + super(itemView); + punishTypeView = itemView.findViewById(R.id.punishTypeView); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java new file mode 100644 index 0000000..df2e5f3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java @@ -0,0 +1,76 @@ +package com.casic.dcms.bean; + +public class PunishTimesBean { + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + /** + * warn : 0 + * punish : 0 + * persuade : 0 + */ + + private int warn; + private int punish; + private int persuade; + + public int getWarn() { + return warn; + } + + public void setWarn(int warn) { + this.warn = warn; + } + + public int getPunish() { + return punish; + } + + public void setPunish(int punish) { + this.punish = punish; + } + + public int getPersuade() { + return persuade; + } + + public void setPersuade(int persuade) { + this.persuade = persuade; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java new file mode 100644 index 0000000..49bcc99 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java @@ -0,0 +1,98 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PunishTypeBean { + private int code; + private String message; + private boolean success; + private List data; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * punishTime : 2021-01-12 09:08:59 + * punishTypeName : 处罚 + * punishImage : images + * punishType : 1 + * punishRemarks : 处罚 + */ + + private String punishTime; + private String punishTypeName; + private String punishImage; + private String punishType; + private String punishRemarks; + + public String getPunishTime() { + return punishTime; + } + + public void setPunishTime(String punishTime) { + this.punishTime = punishTime; + } + + public String getPunishTypeName() { + return punishTypeName; + } + + public void setPunishTypeName(String punishTypeName) { + this.punishTypeName = punishTypeName; + } + + public String getPunishImage() { + return punishImage; + } + + public void setPunishImage(String punishImage) { + this.punishImage = punishImage; + } + + public String getPunishType() { + return punishType; + } + + public void setPunishType(String punishType) { + this.punishType = punishType; + } + + public String getPunishRemarks() { + return punishRemarks; + } + + public void setPunishRemarks(String punishRemarks) { + this.punishRemarks = punishRemarks; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java new file mode 100644 index 0000000..3b57d7b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java @@ -0,0 +1,192 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; + +import java.util.ArrayList; + +import butterknife.BindView; +import butterknife.OnClick; + +public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView { + private static final String TAG = "PackageHandledDetail"; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseHandleStatusView) + TextView caseHandleStatusView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.punishTypeView) + TextView punishTypeView; + @BindView(R.id.punishOpinionView) + TextView punishOpinionView; + @BindView(R.id.punishRecyclerView) + RecyclerView punishRecyclerView; + @BindView(R.id.punishDateView) + TextView punishDateView; + + private Context context = this; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseDetailPresenterImpl caseDetailPresenter; + + @Override + public int initLayoutView() { + return R.layout.activity_package_handled; + } + + @Override + protected String setTitleName() { + return "已办案卷"; + } + + @Override + public void initData() { + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseHandleStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + //最初始的案卷图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //案卷处理时候上传的图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.handleLayout}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.handleLayout: + OtherUtils.showCaseProcess(this, data.getProcessId()); + break; + default: + break; + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java new file mode 100644 index 0000000..9977519 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java @@ -0,0 +1,418 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.FileUtils; +import com.casic.dcms.utils.GlideLoadEngine; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.TimeOrDateUtil; +import com.casic.dcms.utils.ToastHelper; +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.luck.picture.lib.tools.PictureFileUtils; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Timer; +import java.util.TimerTask; + +import butterknife.BindView; +import butterknife.OnClick; + +public class PackageTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, IUploadFileView { + private static final String TAG = "PackageTodoDetail"; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseHandleStatusView) + TextView caseHandleStatusView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.punishTypeView) + TextView punishTypeView; + @BindView(R.id.punishOpinionView) + EditText punishOpinionView; + @BindView(R.id.punishRecyclerView) + RecyclerView punishRecyclerView; + @BindView(R.id.addImageView) + ImageView addImageView; + @BindView(R.id.punishDateView) + TextView punishDateView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private Context context = this; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseDetailPresenterImpl caseDetailPresenter; + private QMUITipDialog submitDialog; + private UploadImagePresenterImpl uploadImagePresenter; + private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private List imageList = new ArrayList<>();//上传到服务器的数据集 + private ImageRecycleViewAdapter imageAdapter; + + @Override + public int initLayoutView() { + return R.layout.activity_package_todo; + } + + @Override + protected String setTitleName() { + return "已办案卷"; + } + + @Override + public void initData() { + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + submitDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create(); + uploadImagePresenter = new UploadImagePresenterImpl(this); + imageAdapter = new ImageRecycleViewAdapter(this); + punishRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + punishRecyclerView.addItemDecoration(new ItemDecorationSpace()); + punishRecyclerView.setAdapter(imageAdapter); + } + + @Override + public void initEvent() { + new Timer().schedule(new TimerTask() { + @Override + public void run() { + String systemTime = TimeOrDateUtil.timestampToCompleteDate(System.currentTimeMillis()); + punishDateView.post(() -> punishDateView.setText(systemTime)); + } + }, 0, 1000); + submitButton.setChangeAlphaWhenPress(true); + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseHandleStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + //最初始的案卷图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //案卷处理时候上传的图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.punishHandleLayout, R.id.addImageView, R.id.handleLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.punishHandleLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("处罚类型") + .addItem("劝导") + .addItem("警告") + .addItem("处罚") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + punishTypeView.setText(tag); + punishTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.addImageView: + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .create().show(); + break; + case R.id.handleLayout: + OtherUtils.showCaseProcess(this, data.getProcessId()); + break; + case R.id.submitButton: + submitCase();//案卷提交 + break; + default: + break; + } + } + + private void selectPicture() { + PictureSelector.create(this) + .openGallery(PictureMimeType.ofImage()) + .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(2) + .forResult(PictureConfig.CHOOSE_REQUEST); + } + + private void takePicture() { + PictureSelector.create(this) + .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(1) + .forResult(PictureConfig.REQUEST_CAMERA); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + switch (requestCode) { + case PictureConfig.CHOOSE_REQUEST: + List selectList = PictureSelector.obtainMultipleResult(data); + for (LocalMedia media : selectList) { + File file = new File(media.getCompressPath()); + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); + continue; + } + uploadImagePresenter.onReadyRetrofitRequest(file); + } + break; + case PictureConfig.REQUEST_CAMERA: + LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); + break; + default: + break; + } + } + } + + @Override + public void showProgress() { + submitDialog.show(); + } + + @Override + public void hideProgress() { + submitDialog.dismiss(); + } + + @Override + public void obtainUploadAudioResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainUploadImageResult(ActionResultBean resultBean) { +// Log.d(TAG, "obtainUploadResult: " + gson.toJson(resultBean)); + if (resultBean.isSuccess()) { + PictureFileUtils.deleteAllCacheDirFile(this); + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + String url = resultBean.getData(); + int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + if (realPaths.size() == 2) { + addImageView.setVisibility(View.GONE); + } + imageAdapter.setMediaList(realPaths); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, realPaths); + } + }); + //删除按钮点击事件 + imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + imageList.remove(position); + realPaths.remove(position); + imageAdapter.setMediaList(realPaths); + if (realPaths.size() != 2) { + addImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } + } + } + + @Override + public void obtainUploadVideoResult(ActionResultBean resultBean) { + + } + + /** + * 案卷提交 + */ + private void submitCase() { + String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); + return; + } + String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); + return; + } + if (imageAdapter.getItemCount() != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); + return; + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java index 8a1ce31..a16229b 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.threepkg; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.PackageHandledBean; import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.ui.PackageHandledDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -31,7 +33,7 @@ /** * TODO 仅搭建界面,数据还未完全绑定 - * */ + */ public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { private Context context; @@ -129,9 +131,9 @@ handledFragment.adapter.setOnItemClickListener(new PackageHandledAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(handledFragment.context, CaseCheckDetailActivity.class); -// intent.putExtra("id", handledFragment.dataBeans.get(position).getId()); -// handledFragment.startActivity(intent); + Intent intent = new Intent(handledFragment.context, PackageHandledDetailActivity.class); + intent.putExtra("id", handledFragment.dataBeans.get(position).getId()); + handledFragment.startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java index d146412..42652aa 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -2,7 +2,6 @@ import android.annotation.SuppressLint; import android.content.Context; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -10,13 +9,19 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; import org.json.JSONException; import org.json.JSONObject; @@ -26,15 +31,21 @@ import okhttp3.ResponseBody; +@SuppressLint("SetTextI18n") public class PackageHandledAdapter extends RecyclerView.Adapter { private static final String TAG = "PackageHandledAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageHandledAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -62,54 +73,48 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") void bindView(PackageHandledBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); //获取商铺图标 - HttpRequestHelper.doRequest("/shop/merchant/detail", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { String string = resultBean.string(); - /** - * { - * "code":200, - * "data":[], - * "message":"请求成功", - * "success":true - * } - * - * { - * "code":500, - * "data":"", - * "exceptionClazz":"", - * "message":"服务器异常", - * "success":false - * } - * */ JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明请求失败了,用默认图 - leftImageView.setBackgroundResource(R.drawable.ic_package_holder); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); } else { - Log.d(TAG, "detail: " + data); + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } } } catch (IOException | JSONException e) { e.printStackTrace(); @@ -123,20 +128,36 @@ }); //获取商铺处罚记录 - HttpRequestHelper.doRequest("/shop/punish/listByMerchant", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { - String string = resultBean.string(); - JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明没有处罚过 + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); - } else { - Log.d(TAG, "listByMerchant: " + data); + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } - } catch (IOException | JSONException e) { + } catch (IOException e) { e.printStackTrace(); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java index 4671a7a..2f9aa17 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java @@ -9,22 +9,43 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; import java.util.List; +import okhttp3.ResponseBody; + +@SuppressLint("SetTextI18n") public class PackageTodoAdapter extends RecyclerView.Adapter { + private static final String TAG = "PackageTodoAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageTodoAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -52,25 +73,98 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + String string = resultBean.string(); + JSONObject jsonObject = new JSONObject(string); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } + } + } catch (JSONException | IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); + + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java new file mode 100644 index 0000000..086ed9a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java @@ -0,0 +1,86 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; + +import java.util.List; + +@SuppressLint("SetTextI18n") +public class PunishTypeAdapter extends RecyclerView.Adapter { + + private Context context; + private List dataRows; + private PunishTimesBean.DataBean dataBean; + private LayoutInflater layoutInflater; + + PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) { + this.context = context; + this.dataRows = dataRows; + this.dataBean = dataBean; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false); + return new ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) { + String typeName = dataRows.get(position).getPunishTypeName(); + int color, times; + switch (typeName) { + case "劝导": + times = dataBean.getPersuade(); + color = ContextCompat.getColor(context, R.color.persuadeColor); + break; + case "警告": + times = dataBean.getWarn(); + color = ContextCompat.getColor(context, R.color.warnColor); + break; + case "处罚": + times = dataBean.getPunish(); + color = ContextCompat.getColor(context, R.color.punishColor); + break; + default: + times = 0; + color = ContextCompat.getColor(context, R.color.mainThemeColor); + break; + } + if (times == 0) { + holder.punishTypeView.setVisibility(View.GONE); + } else { + holder.punishTypeView.setText(typeName + " x " + times); + holder.punishTypeView.setBackgroundColor(color); + } + } + + @Override + public int getItemCount() { + return dataRows.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private TextView punishTypeView; + + ItemViewHolder(@NonNull View itemView) { + super(itemView); + punishTypeView = itemView.findViewById(R.id.punishTypeView); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java new file mode 100644 index 0000000..df2e5f3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java @@ -0,0 +1,76 @@ +package com.casic.dcms.bean; + +public class PunishTimesBean { + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + /** + * warn : 0 + * punish : 0 + * persuade : 0 + */ + + private int warn; + private int punish; + private int persuade; + + public int getWarn() { + return warn; + } + + public void setWarn(int warn) { + this.warn = warn; + } + + public int getPunish() { + return punish; + } + + public void setPunish(int punish) { + this.punish = punish; + } + + public int getPersuade() { + return persuade; + } + + public void setPersuade(int persuade) { + this.persuade = persuade; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java new file mode 100644 index 0000000..49bcc99 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java @@ -0,0 +1,98 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PunishTypeBean { + private int code; + private String message; + private boolean success; + private List data; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * punishTime : 2021-01-12 09:08:59 + * punishTypeName : 处罚 + * punishImage : images + * punishType : 1 + * punishRemarks : 处罚 + */ + + private String punishTime; + private String punishTypeName; + private String punishImage; + private String punishType; + private String punishRemarks; + + public String getPunishTime() { + return punishTime; + } + + public void setPunishTime(String punishTime) { + this.punishTime = punishTime; + } + + public String getPunishTypeName() { + return punishTypeName; + } + + public void setPunishTypeName(String punishTypeName) { + this.punishTypeName = punishTypeName; + } + + public String getPunishImage() { + return punishImage; + } + + public void setPunishImage(String punishImage) { + this.punishImage = punishImage; + } + + public String getPunishType() { + return punishType; + } + + public void setPunishType(String punishType) { + this.punishType = punishType; + } + + public String getPunishRemarks() { + return punishRemarks; + } + + public void setPunishRemarks(String punishRemarks) { + this.punishRemarks = punishRemarks; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java new file mode 100644 index 0000000..3b57d7b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java @@ -0,0 +1,192 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; + +import java.util.ArrayList; + +import butterknife.BindView; +import butterknife.OnClick; + +public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView { + private static final String TAG = "PackageHandledDetail"; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseHandleStatusView) + TextView caseHandleStatusView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.punishTypeView) + TextView punishTypeView; + @BindView(R.id.punishOpinionView) + TextView punishOpinionView; + @BindView(R.id.punishRecyclerView) + RecyclerView punishRecyclerView; + @BindView(R.id.punishDateView) + TextView punishDateView; + + private Context context = this; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseDetailPresenterImpl caseDetailPresenter; + + @Override + public int initLayoutView() { + return R.layout.activity_package_handled; + } + + @Override + protected String setTitleName() { + return "已办案卷"; + } + + @Override + public void initData() { + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseHandleStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + //最初始的案卷图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //案卷处理时候上传的图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.handleLayout}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.handleLayout: + OtherUtils.showCaseProcess(this, data.getProcessId()); + break; + default: + break; + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java new file mode 100644 index 0000000..9977519 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java @@ -0,0 +1,418 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.FileUtils; +import com.casic.dcms.utils.GlideLoadEngine; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.TimeOrDateUtil; +import com.casic.dcms.utils.ToastHelper; +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.luck.picture.lib.tools.PictureFileUtils; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Timer; +import java.util.TimerTask; + +import butterknife.BindView; +import butterknife.OnClick; + +public class PackageTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, IUploadFileView { + private static final String TAG = "PackageTodoDetail"; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseHandleStatusView) + TextView caseHandleStatusView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.punishTypeView) + TextView punishTypeView; + @BindView(R.id.punishOpinionView) + EditText punishOpinionView; + @BindView(R.id.punishRecyclerView) + RecyclerView punishRecyclerView; + @BindView(R.id.addImageView) + ImageView addImageView; + @BindView(R.id.punishDateView) + TextView punishDateView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private Context context = this; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseDetailPresenterImpl caseDetailPresenter; + private QMUITipDialog submitDialog; + private UploadImagePresenterImpl uploadImagePresenter; + private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private List imageList = new ArrayList<>();//上传到服务器的数据集 + private ImageRecycleViewAdapter imageAdapter; + + @Override + public int initLayoutView() { + return R.layout.activity_package_todo; + } + + @Override + protected String setTitleName() { + return "已办案卷"; + } + + @Override + public void initData() { + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + submitDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create(); + uploadImagePresenter = new UploadImagePresenterImpl(this); + imageAdapter = new ImageRecycleViewAdapter(this); + punishRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + punishRecyclerView.addItemDecoration(new ItemDecorationSpace()); + punishRecyclerView.setAdapter(imageAdapter); + } + + @Override + public void initEvent() { + new Timer().schedule(new TimerTask() { + @Override + public void run() { + String systemTime = TimeOrDateUtil.timestampToCompleteDate(System.currentTimeMillis()); + punishDateView.post(() -> punishDateView.setText(systemTime)); + } + }, 0, 1000); + submitButton.setChangeAlphaWhenPress(true); + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseHandleStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + //最初始的案卷图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //案卷处理时候上传的图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.punishHandleLayout, R.id.addImageView, R.id.handleLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.punishHandleLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("处罚类型") + .addItem("劝导") + .addItem("警告") + .addItem("处罚") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + punishTypeView.setText(tag); + punishTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.addImageView: + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .create().show(); + break; + case R.id.handleLayout: + OtherUtils.showCaseProcess(this, data.getProcessId()); + break; + case R.id.submitButton: + submitCase();//案卷提交 + break; + default: + break; + } + } + + private void selectPicture() { + PictureSelector.create(this) + .openGallery(PictureMimeType.ofImage()) + .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(2) + .forResult(PictureConfig.CHOOSE_REQUEST); + } + + private void takePicture() { + PictureSelector.create(this) + .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(1) + .forResult(PictureConfig.REQUEST_CAMERA); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + switch (requestCode) { + case PictureConfig.CHOOSE_REQUEST: + List selectList = PictureSelector.obtainMultipleResult(data); + for (LocalMedia media : selectList) { + File file = new File(media.getCompressPath()); + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); + continue; + } + uploadImagePresenter.onReadyRetrofitRequest(file); + } + break; + case PictureConfig.REQUEST_CAMERA: + LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); + break; + default: + break; + } + } + } + + @Override + public void showProgress() { + submitDialog.show(); + } + + @Override + public void hideProgress() { + submitDialog.dismiss(); + } + + @Override + public void obtainUploadAudioResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainUploadImageResult(ActionResultBean resultBean) { +// Log.d(TAG, "obtainUploadResult: " + gson.toJson(resultBean)); + if (resultBean.isSuccess()) { + PictureFileUtils.deleteAllCacheDirFile(this); + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + String url = resultBean.getData(); + int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + if (realPaths.size() == 2) { + addImageView.setVisibility(View.GONE); + } + imageAdapter.setMediaList(realPaths); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, realPaths); + } + }); + //删除按钮点击事件 + imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + imageList.remove(position); + realPaths.remove(position); + imageAdapter.setMediaList(realPaths); + if (realPaths.size() != 2) { + addImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } + } + } + + @Override + public void obtainUploadVideoResult(ActionResultBean resultBean) { + + } + + /** + * 案卷提交 + */ + private void submitCase() { + String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); + return; + } + String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); + return; + } + if (imageAdapter.getItemCount() != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); + return; + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java index 8a1ce31..a16229b 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.threepkg; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.PackageHandledBean; import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.ui.PackageHandledDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -31,7 +33,7 @@ /** * TODO 仅搭建界面,数据还未完全绑定 - * */ + */ public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { private Context context; @@ -129,9 +131,9 @@ handledFragment.adapter.setOnItemClickListener(new PackageHandledAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(handledFragment.context, CaseCheckDetailActivity.class); -// intent.putExtra("id", handledFragment.dataBeans.get(position).getId()); -// handledFragment.startActivity(intent); + Intent intent = new Intent(handledFragment.context, PackageHandledDetailActivity.class); + intent.putExtra("id", handledFragment.dataBeans.get(position).getId()); + handledFragment.startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java index f14ee3a..a4c2584 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.threepkg; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.ui.PackageTodoDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -130,9 +132,9 @@ todoFragment.adapter.setOnItemClickListener(new PackageTodoAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(todoFragment.context, CaseCheckDetailActivity.class); -// intent.putExtra("id", todoFragment.dataBeans.get(position).getId()); -// todoFragment.startActivity(intent); + Intent intent = new Intent(todoFragment.context, PackageTodoDetailActivity.class); + intent.putExtra("id", todoFragment.dataBeans.get(position).getId()); + todoFragment.startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java index d146412..42652aa 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -2,7 +2,6 @@ import android.annotation.SuppressLint; import android.content.Context; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -10,13 +9,19 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; import org.json.JSONException; import org.json.JSONObject; @@ -26,15 +31,21 @@ import okhttp3.ResponseBody; +@SuppressLint("SetTextI18n") public class PackageHandledAdapter extends RecyclerView.Adapter { private static final String TAG = "PackageHandledAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageHandledAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -62,54 +73,48 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") void bindView(PackageHandledBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); //获取商铺图标 - HttpRequestHelper.doRequest("/shop/merchant/detail", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { String string = resultBean.string(); - /** - * { - * "code":200, - * "data":[], - * "message":"请求成功", - * "success":true - * } - * - * { - * "code":500, - * "data":"", - * "exceptionClazz":"", - * "message":"服务器异常", - * "success":false - * } - * */ JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明请求失败了,用默认图 - leftImageView.setBackgroundResource(R.drawable.ic_package_holder); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); } else { - Log.d(TAG, "detail: " + data); + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } } } catch (IOException | JSONException e) { e.printStackTrace(); @@ -123,20 +128,36 @@ }); //获取商铺处罚记录 - HttpRequestHelper.doRequest("/shop/punish/listByMerchant", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { - String string = resultBean.string(); - JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明没有处罚过 + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); - } else { - Log.d(TAG, "listByMerchant: " + data); + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } - } catch (IOException | JSONException e) { + } catch (IOException e) { e.printStackTrace(); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java index 4671a7a..2f9aa17 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java @@ -9,22 +9,43 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; import java.util.List; +import okhttp3.ResponseBody; + +@SuppressLint("SetTextI18n") public class PackageTodoAdapter extends RecyclerView.Adapter { + private static final String TAG = "PackageTodoAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageTodoAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -52,25 +73,98 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + String string = resultBean.string(); + JSONObject jsonObject = new JSONObject(string); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } + } + } catch (JSONException | IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); + + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java new file mode 100644 index 0000000..086ed9a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java @@ -0,0 +1,86 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; + +import java.util.List; + +@SuppressLint("SetTextI18n") +public class PunishTypeAdapter extends RecyclerView.Adapter { + + private Context context; + private List dataRows; + private PunishTimesBean.DataBean dataBean; + private LayoutInflater layoutInflater; + + PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) { + this.context = context; + this.dataRows = dataRows; + this.dataBean = dataBean; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false); + return new ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) { + String typeName = dataRows.get(position).getPunishTypeName(); + int color, times; + switch (typeName) { + case "劝导": + times = dataBean.getPersuade(); + color = ContextCompat.getColor(context, R.color.persuadeColor); + break; + case "警告": + times = dataBean.getWarn(); + color = ContextCompat.getColor(context, R.color.warnColor); + break; + case "处罚": + times = dataBean.getPunish(); + color = ContextCompat.getColor(context, R.color.punishColor); + break; + default: + times = 0; + color = ContextCompat.getColor(context, R.color.mainThemeColor); + break; + } + if (times == 0) { + holder.punishTypeView.setVisibility(View.GONE); + } else { + holder.punishTypeView.setText(typeName + " x " + times); + holder.punishTypeView.setBackgroundColor(color); + } + } + + @Override + public int getItemCount() { + return dataRows.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private TextView punishTypeView; + + ItemViewHolder(@NonNull View itemView) { + super(itemView); + punishTypeView = itemView.findViewById(R.id.punishTypeView); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java new file mode 100644 index 0000000..df2e5f3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java @@ -0,0 +1,76 @@ +package com.casic.dcms.bean; + +public class PunishTimesBean { + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + /** + * warn : 0 + * punish : 0 + * persuade : 0 + */ + + private int warn; + private int punish; + private int persuade; + + public int getWarn() { + return warn; + } + + public void setWarn(int warn) { + this.warn = warn; + } + + public int getPunish() { + return punish; + } + + public void setPunish(int punish) { + this.punish = punish; + } + + public int getPersuade() { + return persuade; + } + + public void setPersuade(int persuade) { + this.persuade = persuade; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java new file mode 100644 index 0000000..49bcc99 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java @@ -0,0 +1,98 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PunishTypeBean { + private int code; + private String message; + private boolean success; + private List data; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * punishTime : 2021-01-12 09:08:59 + * punishTypeName : 处罚 + * punishImage : images + * punishType : 1 + * punishRemarks : 处罚 + */ + + private String punishTime; + private String punishTypeName; + private String punishImage; + private String punishType; + private String punishRemarks; + + public String getPunishTime() { + return punishTime; + } + + public void setPunishTime(String punishTime) { + this.punishTime = punishTime; + } + + public String getPunishTypeName() { + return punishTypeName; + } + + public void setPunishTypeName(String punishTypeName) { + this.punishTypeName = punishTypeName; + } + + public String getPunishImage() { + return punishImage; + } + + public void setPunishImage(String punishImage) { + this.punishImage = punishImage; + } + + public String getPunishType() { + return punishType; + } + + public void setPunishType(String punishType) { + this.punishType = punishType; + } + + public String getPunishRemarks() { + return punishRemarks; + } + + public void setPunishRemarks(String punishRemarks) { + this.punishRemarks = punishRemarks; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java new file mode 100644 index 0000000..3b57d7b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java @@ -0,0 +1,192 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; + +import java.util.ArrayList; + +import butterknife.BindView; +import butterknife.OnClick; + +public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView { + private static final String TAG = "PackageHandledDetail"; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseHandleStatusView) + TextView caseHandleStatusView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.punishTypeView) + TextView punishTypeView; + @BindView(R.id.punishOpinionView) + TextView punishOpinionView; + @BindView(R.id.punishRecyclerView) + RecyclerView punishRecyclerView; + @BindView(R.id.punishDateView) + TextView punishDateView; + + private Context context = this; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseDetailPresenterImpl caseDetailPresenter; + + @Override + public int initLayoutView() { + return R.layout.activity_package_handled; + } + + @Override + protected String setTitleName() { + return "已办案卷"; + } + + @Override + public void initData() { + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseHandleStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + //最初始的案卷图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //案卷处理时候上传的图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.handleLayout}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.handleLayout: + OtherUtils.showCaseProcess(this, data.getProcessId()); + break; + default: + break; + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java new file mode 100644 index 0000000..9977519 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java @@ -0,0 +1,418 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.FileUtils; +import com.casic.dcms.utils.GlideLoadEngine; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.TimeOrDateUtil; +import com.casic.dcms.utils.ToastHelper; +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.luck.picture.lib.tools.PictureFileUtils; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Timer; +import java.util.TimerTask; + +import butterknife.BindView; +import butterknife.OnClick; + +public class PackageTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, IUploadFileView { + private static final String TAG = "PackageTodoDetail"; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseHandleStatusView) + TextView caseHandleStatusView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.punishTypeView) + TextView punishTypeView; + @BindView(R.id.punishOpinionView) + EditText punishOpinionView; + @BindView(R.id.punishRecyclerView) + RecyclerView punishRecyclerView; + @BindView(R.id.addImageView) + ImageView addImageView; + @BindView(R.id.punishDateView) + TextView punishDateView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private Context context = this; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseDetailPresenterImpl caseDetailPresenter; + private QMUITipDialog submitDialog; + private UploadImagePresenterImpl uploadImagePresenter; + private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private List imageList = new ArrayList<>();//上传到服务器的数据集 + private ImageRecycleViewAdapter imageAdapter; + + @Override + public int initLayoutView() { + return R.layout.activity_package_todo; + } + + @Override + protected String setTitleName() { + return "已办案卷"; + } + + @Override + public void initData() { + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + submitDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create(); + uploadImagePresenter = new UploadImagePresenterImpl(this); + imageAdapter = new ImageRecycleViewAdapter(this); + punishRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + punishRecyclerView.addItemDecoration(new ItemDecorationSpace()); + punishRecyclerView.setAdapter(imageAdapter); + } + + @Override + public void initEvent() { + new Timer().schedule(new TimerTask() { + @Override + public void run() { + String systemTime = TimeOrDateUtil.timestampToCompleteDate(System.currentTimeMillis()); + punishDateView.post(() -> punishDateView.setText(systemTime)); + } + }, 0, 1000); + submitButton.setChangeAlphaWhenPress(true); + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseHandleStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + //最初始的案卷图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //案卷处理时候上传的图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.punishHandleLayout, R.id.addImageView, R.id.handleLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.punishHandleLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("处罚类型") + .addItem("劝导") + .addItem("警告") + .addItem("处罚") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + punishTypeView.setText(tag); + punishTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.addImageView: + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .create().show(); + break; + case R.id.handleLayout: + OtherUtils.showCaseProcess(this, data.getProcessId()); + break; + case R.id.submitButton: + submitCase();//案卷提交 + break; + default: + break; + } + } + + private void selectPicture() { + PictureSelector.create(this) + .openGallery(PictureMimeType.ofImage()) + .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(2) + .forResult(PictureConfig.CHOOSE_REQUEST); + } + + private void takePicture() { + PictureSelector.create(this) + .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(1) + .forResult(PictureConfig.REQUEST_CAMERA); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + switch (requestCode) { + case PictureConfig.CHOOSE_REQUEST: + List selectList = PictureSelector.obtainMultipleResult(data); + for (LocalMedia media : selectList) { + File file = new File(media.getCompressPath()); + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); + continue; + } + uploadImagePresenter.onReadyRetrofitRequest(file); + } + break; + case PictureConfig.REQUEST_CAMERA: + LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); + break; + default: + break; + } + } + } + + @Override + public void showProgress() { + submitDialog.show(); + } + + @Override + public void hideProgress() { + submitDialog.dismiss(); + } + + @Override + public void obtainUploadAudioResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainUploadImageResult(ActionResultBean resultBean) { +// Log.d(TAG, "obtainUploadResult: " + gson.toJson(resultBean)); + if (resultBean.isSuccess()) { + PictureFileUtils.deleteAllCacheDirFile(this); + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + String url = resultBean.getData(); + int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + if (realPaths.size() == 2) { + addImageView.setVisibility(View.GONE); + } + imageAdapter.setMediaList(realPaths); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, realPaths); + } + }); + //删除按钮点击事件 + imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + imageList.remove(position); + realPaths.remove(position); + imageAdapter.setMediaList(realPaths); + if (realPaths.size() != 2) { + addImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } + } + } + + @Override + public void obtainUploadVideoResult(ActionResultBean resultBean) { + + } + + /** + * 案卷提交 + */ + private void submitCase() { + String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); + return; + } + String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); + return; + } + if (imageAdapter.getItemCount() != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); + return; + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java index 8a1ce31..a16229b 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.threepkg; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.PackageHandledBean; import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.ui.PackageHandledDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -31,7 +33,7 @@ /** * TODO 仅搭建界面,数据还未完全绑定 - * */ + */ public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { private Context context; @@ -129,9 +131,9 @@ handledFragment.adapter.setOnItemClickListener(new PackageHandledAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(handledFragment.context, CaseCheckDetailActivity.class); -// intent.putExtra("id", handledFragment.dataBeans.get(position).getId()); -// handledFragment.startActivity(intent); + Intent intent = new Intent(handledFragment.context, PackageHandledDetailActivity.class); + intent.putExtra("id", handledFragment.dataBeans.get(position).getId()); + handledFragment.startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java index f14ee3a..a4c2584 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.threepkg; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.ui.PackageTodoDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -130,9 +132,9 @@ todoFragment.adapter.setOnItemClickListener(new PackageTodoAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(todoFragment.context, CaseCheckDetailActivity.class); -// intent.putExtra("id", todoFragment.dataBeans.get(position).getId()); -// todoFragment.startActivity(intent); + Intent intent = new Intent(todoFragment.context, PackageTodoDetailActivity.class); + intent.putExtra("id", todoFragment.dataBeans.get(position).getId()); + todoFragment.startActivity(intent); } }); } diff --git a/app/src/main/res/layout/activity_case_handle_detail.xml b/app/src/main/res/layout/activity_case_handle_detail.xml index d1550a1..4cc674c 100644 --- a/app/src/main/res/layout/activity_case_handle_detail.xml +++ b/app/src/main/res/layout/activity_case_handle_detail.xml @@ -164,7 +164,6 @@ android:layout_centerVertical="true" android:layout_marginStart="100dp" android:background="@null" - android:gravity="top" android:hint="请输入申请理由" android:padding="3dp" /> diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java index d146412..42652aa 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -2,7 +2,6 @@ import android.annotation.SuppressLint; import android.content.Context; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -10,13 +9,19 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; import org.json.JSONException; import org.json.JSONObject; @@ -26,15 +31,21 @@ import okhttp3.ResponseBody; +@SuppressLint("SetTextI18n") public class PackageHandledAdapter extends RecyclerView.Adapter { private static final String TAG = "PackageHandledAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageHandledAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -62,54 +73,48 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") void bindView(PackageHandledBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); //获取商铺图标 - HttpRequestHelper.doRequest("/shop/merchant/detail", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { String string = resultBean.string(); - /** - * { - * "code":200, - * "data":[], - * "message":"请求成功", - * "success":true - * } - * - * { - * "code":500, - * "data":"", - * "exceptionClazz":"", - * "message":"服务器异常", - * "success":false - * } - * */ JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明请求失败了,用默认图 - leftImageView.setBackgroundResource(R.drawable.ic_package_holder); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); } else { - Log.d(TAG, "detail: " + data); + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } } } catch (IOException | JSONException e) { e.printStackTrace(); @@ -123,20 +128,36 @@ }); //获取商铺处罚记录 - HttpRequestHelper.doRequest("/shop/punish/listByMerchant", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { - String string = resultBean.string(); - JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明没有处罚过 + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); - } else { - Log.d(TAG, "listByMerchant: " + data); + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } - } catch (IOException | JSONException e) { + } catch (IOException e) { e.printStackTrace(); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java index 4671a7a..2f9aa17 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java @@ -9,22 +9,43 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; import java.util.List; +import okhttp3.ResponseBody; + +@SuppressLint("SetTextI18n") public class PackageTodoAdapter extends RecyclerView.Adapter { + private static final String TAG = "PackageTodoAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageTodoAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -52,25 +73,98 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + String string = resultBean.string(); + JSONObject jsonObject = new JSONObject(string); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } + } + } catch (JSONException | IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); + + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java new file mode 100644 index 0000000..086ed9a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java @@ -0,0 +1,86 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; + +import java.util.List; + +@SuppressLint("SetTextI18n") +public class PunishTypeAdapter extends RecyclerView.Adapter { + + private Context context; + private List dataRows; + private PunishTimesBean.DataBean dataBean; + private LayoutInflater layoutInflater; + + PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) { + this.context = context; + this.dataRows = dataRows; + this.dataBean = dataBean; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false); + return new ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) { + String typeName = dataRows.get(position).getPunishTypeName(); + int color, times; + switch (typeName) { + case "劝导": + times = dataBean.getPersuade(); + color = ContextCompat.getColor(context, R.color.persuadeColor); + break; + case "警告": + times = dataBean.getWarn(); + color = ContextCompat.getColor(context, R.color.warnColor); + break; + case "处罚": + times = dataBean.getPunish(); + color = ContextCompat.getColor(context, R.color.punishColor); + break; + default: + times = 0; + color = ContextCompat.getColor(context, R.color.mainThemeColor); + break; + } + if (times == 0) { + holder.punishTypeView.setVisibility(View.GONE); + } else { + holder.punishTypeView.setText(typeName + " x " + times); + holder.punishTypeView.setBackgroundColor(color); + } + } + + @Override + public int getItemCount() { + return dataRows.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private TextView punishTypeView; + + ItemViewHolder(@NonNull View itemView) { + super(itemView); + punishTypeView = itemView.findViewById(R.id.punishTypeView); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java new file mode 100644 index 0000000..df2e5f3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java @@ -0,0 +1,76 @@ +package com.casic.dcms.bean; + +public class PunishTimesBean { + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + /** + * warn : 0 + * punish : 0 + * persuade : 0 + */ + + private int warn; + private int punish; + private int persuade; + + public int getWarn() { + return warn; + } + + public void setWarn(int warn) { + this.warn = warn; + } + + public int getPunish() { + return punish; + } + + public void setPunish(int punish) { + this.punish = punish; + } + + public int getPersuade() { + return persuade; + } + + public void setPersuade(int persuade) { + this.persuade = persuade; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java new file mode 100644 index 0000000..49bcc99 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java @@ -0,0 +1,98 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PunishTypeBean { + private int code; + private String message; + private boolean success; + private List data; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * punishTime : 2021-01-12 09:08:59 + * punishTypeName : 处罚 + * punishImage : images + * punishType : 1 + * punishRemarks : 处罚 + */ + + private String punishTime; + private String punishTypeName; + private String punishImage; + private String punishType; + private String punishRemarks; + + public String getPunishTime() { + return punishTime; + } + + public void setPunishTime(String punishTime) { + this.punishTime = punishTime; + } + + public String getPunishTypeName() { + return punishTypeName; + } + + public void setPunishTypeName(String punishTypeName) { + this.punishTypeName = punishTypeName; + } + + public String getPunishImage() { + return punishImage; + } + + public void setPunishImage(String punishImage) { + this.punishImage = punishImage; + } + + public String getPunishType() { + return punishType; + } + + public void setPunishType(String punishType) { + this.punishType = punishType; + } + + public String getPunishRemarks() { + return punishRemarks; + } + + public void setPunishRemarks(String punishRemarks) { + this.punishRemarks = punishRemarks; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java new file mode 100644 index 0000000..3b57d7b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java @@ -0,0 +1,192 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; + +import java.util.ArrayList; + +import butterknife.BindView; +import butterknife.OnClick; + +public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView { + private static final String TAG = "PackageHandledDetail"; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseHandleStatusView) + TextView caseHandleStatusView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.punishTypeView) + TextView punishTypeView; + @BindView(R.id.punishOpinionView) + TextView punishOpinionView; + @BindView(R.id.punishRecyclerView) + RecyclerView punishRecyclerView; + @BindView(R.id.punishDateView) + TextView punishDateView; + + private Context context = this; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseDetailPresenterImpl caseDetailPresenter; + + @Override + public int initLayoutView() { + return R.layout.activity_package_handled; + } + + @Override + protected String setTitleName() { + return "已办案卷"; + } + + @Override + public void initData() { + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseHandleStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + //最初始的案卷图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //案卷处理时候上传的图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.handleLayout}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.handleLayout: + OtherUtils.showCaseProcess(this, data.getProcessId()); + break; + default: + break; + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java new file mode 100644 index 0000000..9977519 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java @@ -0,0 +1,418 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.FileUtils; +import com.casic.dcms.utils.GlideLoadEngine; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.TimeOrDateUtil; +import com.casic.dcms.utils.ToastHelper; +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.luck.picture.lib.tools.PictureFileUtils; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Timer; +import java.util.TimerTask; + +import butterknife.BindView; +import butterknife.OnClick; + +public class PackageTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, IUploadFileView { + private static final String TAG = "PackageTodoDetail"; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseHandleStatusView) + TextView caseHandleStatusView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.punishTypeView) + TextView punishTypeView; + @BindView(R.id.punishOpinionView) + EditText punishOpinionView; + @BindView(R.id.punishRecyclerView) + RecyclerView punishRecyclerView; + @BindView(R.id.addImageView) + ImageView addImageView; + @BindView(R.id.punishDateView) + TextView punishDateView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private Context context = this; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseDetailPresenterImpl caseDetailPresenter; + private QMUITipDialog submitDialog; + private UploadImagePresenterImpl uploadImagePresenter; + private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private List imageList = new ArrayList<>();//上传到服务器的数据集 + private ImageRecycleViewAdapter imageAdapter; + + @Override + public int initLayoutView() { + return R.layout.activity_package_todo; + } + + @Override + protected String setTitleName() { + return "已办案卷"; + } + + @Override + public void initData() { + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + submitDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create(); + uploadImagePresenter = new UploadImagePresenterImpl(this); + imageAdapter = new ImageRecycleViewAdapter(this); + punishRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + punishRecyclerView.addItemDecoration(new ItemDecorationSpace()); + punishRecyclerView.setAdapter(imageAdapter); + } + + @Override + public void initEvent() { + new Timer().schedule(new TimerTask() { + @Override + public void run() { + String systemTime = TimeOrDateUtil.timestampToCompleteDate(System.currentTimeMillis()); + punishDateView.post(() -> punishDateView.setText(systemTime)); + } + }, 0, 1000); + submitButton.setChangeAlphaWhenPress(true); + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseHandleStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + //最初始的案卷图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //案卷处理时候上传的图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.punishHandleLayout, R.id.addImageView, R.id.handleLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.punishHandleLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("处罚类型") + .addItem("劝导") + .addItem("警告") + .addItem("处罚") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + punishTypeView.setText(tag); + punishTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.addImageView: + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .create().show(); + break; + case R.id.handleLayout: + OtherUtils.showCaseProcess(this, data.getProcessId()); + break; + case R.id.submitButton: + submitCase();//案卷提交 + break; + default: + break; + } + } + + private void selectPicture() { + PictureSelector.create(this) + .openGallery(PictureMimeType.ofImage()) + .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(2) + .forResult(PictureConfig.CHOOSE_REQUEST); + } + + private void takePicture() { + PictureSelector.create(this) + .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(1) + .forResult(PictureConfig.REQUEST_CAMERA); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + switch (requestCode) { + case PictureConfig.CHOOSE_REQUEST: + List selectList = PictureSelector.obtainMultipleResult(data); + for (LocalMedia media : selectList) { + File file = new File(media.getCompressPath()); + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); + continue; + } + uploadImagePresenter.onReadyRetrofitRequest(file); + } + break; + case PictureConfig.REQUEST_CAMERA: + LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); + break; + default: + break; + } + } + } + + @Override + public void showProgress() { + submitDialog.show(); + } + + @Override + public void hideProgress() { + submitDialog.dismiss(); + } + + @Override + public void obtainUploadAudioResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainUploadImageResult(ActionResultBean resultBean) { +// Log.d(TAG, "obtainUploadResult: " + gson.toJson(resultBean)); + if (resultBean.isSuccess()) { + PictureFileUtils.deleteAllCacheDirFile(this); + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + String url = resultBean.getData(); + int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + if (realPaths.size() == 2) { + addImageView.setVisibility(View.GONE); + } + imageAdapter.setMediaList(realPaths); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, realPaths); + } + }); + //删除按钮点击事件 + imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + imageList.remove(position); + realPaths.remove(position); + imageAdapter.setMediaList(realPaths); + if (realPaths.size() != 2) { + addImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } + } + } + + @Override + public void obtainUploadVideoResult(ActionResultBean resultBean) { + + } + + /** + * 案卷提交 + */ + private void submitCase() { + String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); + return; + } + String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); + return; + } + if (imageAdapter.getItemCount() != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); + return; + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java index 8a1ce31..a16229b 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.threepkg; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.PackageHandledBean; import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.ui.PackageHandledDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -31,7 +33,7 @@ /** * TODO 仅搭建界面,数据还未完全绑定 - * */ + */ public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { private Context context; @@ -129,9 +131,9 @@ handledFragment.adapter.setOnItemClickListener(new PackageHandledAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(handledFragment.context, CaseCheckDetailActivity.class); -// intent.putExtra("id", handledFragment.dataBeans.get(position).getId()); -// handledFragment.startActivity(intent); + Intent intent = new Intent(handledFragment.context, PackageHandledDetailActivity.class); + intent.putExtra("id", handledFragment.dataBeans.get(position).getId()); + handledFragment.startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java index f14ee3a..a4c2584 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.threepkg; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.ui.PackageTodoDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -130,9 +132,9 @@ todoFragment.adapter.setOnItemClickListener(new PackageTodoAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(todoFragment.context, CaseCheckDetailActivity.class); -// intent.putExtra("id", todoFragment.dataBeans.get(position).getId()); -// todoFragment.startActivity(intent); + Intent intent = new Intent(todoFragment.context, PackageTodoDetailActivity.class); + intent.putExtra("id", todoFragment.dataBeans.get(position).getId()); + todoFragment.startActivity(intent); } }); } diff --git a/app/src/main/res/layout/activity_case_handle_detail.xml b/app/src/main/res/layout/activity_case_handle_detail.xml index d1550a1..4cc674c 100644 --- a/app/src/main/res/layout/activity_case_handle_detail.xml +++ b/app/src/main/res/layout/activity_case_handle_detail.xml @@ -164,7 +164,6 @@ android:layout_centerVertical="true" android:layout_marginStart="100dp" android:background="@null" - android:gravity="top" android:hint="请输入申请理由" android:padding="3dp" /> diff --git a/app/src/main/res/layout/activity_case_upload.xml b/app/src/main/res/layout/activity_case_upload.xml index a4240be..fc1a5af 100644 --- a/app/src/main/res/layout/activity_case_upload.xml +++ b/app/src/main/res/layout/activity_case_upload.xml @@ -42,7 +42,6 @@ android:layout_marginStart="100dp" android:layout_marginEnd="10dp" android:background="@null" - android:gravity="top" android:hint="请输入少于50个字的案卷情况描述" android:maxLength="50" android:padding="3dp" /> diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java index d146412..42652aa 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -2,7 +2,6 @@ import android.annotation.SuppressLint; import android.content.Context; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -10,13 +9,19 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; import org.json.JSONException; import org.json.JSONObject; @@ -26,15 +31,21 @@ import okhttp3.ResponseBody; +@SuppressLint("SetTextI18n") public class PackageHandledAdapter extends RecyclerView.Adapter { private static final String TAG = "PackageHandledAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageHandledAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -62,54 +73,48 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") void bindView(PackageHandledBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); //获取商铺图标 - HttpRequestHelper.doRequest("/shop/merchant/detail", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { String string = resultBean.string(); - /** - * { - * "code":200, - * "data":[], - * "message":"请求成功", - * "success":true - * } - * - * { - * "code":500, - * "data":"", - * "exceptionClazz":"", - * "message":"服务器异常", - * "success":false - * } - * */ JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明请求失败了,用默认图 - leftImageView.setBackgroundResource(R.drawable.ic_package_holder); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); } else { - Log.d(TAG, "detail: " + data); + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } } } catch (IOException | JSONException e) { e.printStackTrace(); @@ -123,20 +128,36 @@ }); //获取商铺处罚记录 - HttpRequestHelper.doRequest("/shop/punish/listByMerchant", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { - String string = resultBean.string(); - JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明没有处罚过 + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); - } else { - Log.d(TAG, "listByMerchant: " + data); + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } - } catch (IOException | JSONException e) { + } catch (IOException e) { e.printStackTrace(); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java index 4671a7a..2f9aa17 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java @@ -9,22 +9,43 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; import java.util.List; +import okhttp3.ResponseBody; + +@SuppressLint("SetTextI18n") public class PackageTodoAdapter extends RecyclerView.Adapter { + private static final String TAG = "PackageTodoAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageTodoAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -52,25 +73,98 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + String string = resultBean.string(); + JSONObject jsonObject = new JSONObject(string); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } + } + } catch (JSONException | IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); + + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java new file mode 100644 index 0000000..086ed9a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java @@ -0,0 +1,86 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; + +import java.util.List; + +@SuppressLint("SetTextI18n") +public class PunishTypeAdapter extends RecyclerView.Adapter { + + private Context context; + private List dataRows; + private PunishTimesBean.DataBean dataBean; + private LayoutInflater layoutInflater; + + PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) { + this.context = context; + this.dataRows = dataRows; + this.dataBean = dataBean; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false); + return new ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) { + String typeName = dataRows.get(position).getPunishTypeName(); + int color, times; + switch (typeName) { + case "劝导": + times = dataBean.getPersuade(); + color = ContextCompat.getColor(context, R.color.persuadeColor); + break; + case "警告": + times = dataBean.getWarn(); + color = ContextCompat.getColor(context, R.color.warnColor); + break; + case "处罚": + times = dataBean.getPunish(); + color = ContextCompat.getColor(context, R.color.punishColor); + break; + default: + times = 0; + color = ContextCompat.getColor(context, R.color.mainThemeColor); + break; + } + if (times == 0) { + holder.punishTypeView.setVisibility(View.GONE); + } else { + holder.punishTypeView.setText(typeName + " x " + times); + holder.punishTypeView.setBackgroundColor(color); + } + } + + @Override + public int getItemCount() { + return dataRows.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private TextView punishTypeView; + + ItemViewHolder(@NonNull View itemView) { + super(itemView); + punishTypeView = itemView.findViewById(R.id.punishTypeView); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java new file mode 100644 index 0000000..df2e5f3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java @@ -0,0 +1,76 @@ +package com.casic.dcms.bean; + +public class PunishTimesBean { + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + /** + * warn : 0 + * punish : 0 + * persuade : 0 + */ + + private int warn; + private int punish; + private int persuade; + + public int getWarn() { + return warn; + } + + public void setWarn(int warn) { + this.warn = warn; + } + + public int getPunish() { + return punish; + } + + public void setPunish(int punish) { + this.punish = punish; + } + + public int getPersuade() { + return persuade; + } + + public void setPersuade(int persuade) { + this.persuade = persuade; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java new file mode 100644 index 0000000..49bcc99 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java @@ -0,0 +1,98 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PunishTypeBean { + private int code; + private String message; + private boolean success; + private List data; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * punishTime : 2021-01-12 09:08:59 + * punishTypeName : 处罚 + * punishImage : images + * punishType : 1 + * punishRemarks : 处罚 + */ + + private String punishTime; + private String punishTypeName; + private String punishImage; + private String punishType; + private String punishRemarks; + + public String getPunishTime() { + return punishTime; + } + + public void setPunishTime(String punishTime) { + this.punishTime = punishTime; + } + + public String getPunishTypeName() { + return punishTypeName; + } + + public void setPunishTypeName(String punishTypeName) { + this.punishTypeName = punishTypeName; + } + + public String getPunishImage() { + return punishImage; + } + + public void setPunishImage(String punishImage) { + this.punishImage = punishImage; + } + + public String getPunishType() { + return punishType; + } + + public void setPunishType(String punishType) { + this.punishType = punishType; + } + + public String getPunishRemarks() { + return punishRemarks; + } + + public void setPunishRemarks(String punishRemarks) { + this.punishRemarks = punishRemarks; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java new file mode 100644 index 0000000..3b57d7b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java @@ -0,0 +1,192 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; + +import java.util.ArrayList; + +import butterknife.BindView; +import butterknife.OnClick; + +public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView { + private static final String TAG = "PackageHandledDetail"; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseHandleStatusView) + TextView caseHandleStatusView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.punishTypeView) + TextView punishTypeView; + @BindView(R.id.punishOpinionView) + TextView punishOpinionView; + @BindView(R.id.punishRecyclerView) + RecyclerView punishRecyclerView; + @BindView(R.id.punishDateView) + TextView punishDateView; + + private Context context = this; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseDetailPresenterImpl caseDetailPresenter; + + @Override + public int initLayoutView() { + return R.layout.activity_package_handled; + } + + @Override + protected String setTitleName() { + return "已办案卷"; + } + + @Override + public void initData() { + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseHandleStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + //最初始的案卷图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //案卷处理时候上传的图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.handleLayout}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.handleLayout: + OtherUtils.showCaseProcess(this, data.getProcessId()); + break; + default: + break; + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java new file mode 100644 index 0000000..9977519 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java @@ -0,0 +1,418 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.FileUtils; +import com.casic.dcms.utils.GlideLoadEngine; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.TimeOrDateUtil; +import com.casic.dcms.utils.ToastHelper; +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.luck.picture.lib.tools.PictureFileUtils; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Timer; +import java.util.TimerTask; + +import butterknife.BindView; +import butterknife.OnClick; + +public class PackageTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, IUploadFileView { + private static final String TAG = "PackageTodoDetail"; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseHandleStatusView) + TextView caseHandleStatusView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.punishTypeView) + TextView punishTypeView; + @BindView(R.id.punishOpinionView) + EditText punishOpinionView; + @BindView(R.id.punishRecyclerView) + RecyclerView punishRecyclerView; + @BindView(R.id.addImageView) + ImageView addImageView; + @BindView(R.id.punishDateView) + TextView punishDateView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private Context context = this; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseDetailPresenterImpl caseDetailPresenter; + private QMUITipDialog submitDialog; + private UploadImagePresenterImpl uploadImagePresenter; + private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private List imageList = new ArrayList<>();//上传到服务器的数据集 + private ImageRecycleViewAdapter imageAdapter; + + @Override + public int initLayoutView() { + return R.layout.activity_package_todo; + } + + @Override + protected String setTitleName() { + return "已办案卷"; + } + + @Override + public void initData() { + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + submitDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create(); + uploadImagePresenter = new UploadImagePresenterImpl(this); + imageAdapter = new ImageRecycleViewAdapter(this); + punishRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + punishRecyclerView.addItemDecoration(new ItemDecorationSpace()); + punishRecyclerView.setAdapter(imageAdapter); + } + + @Override + public void initEvent() { + new Timer().schedule(new TimerTask() { + @Override + public void run() { + String systemTime = TimeOrDateUtil.timestampToCompleteDate(System.currentTimeMillis()); + punishDateView.post(() -> punishDateView.setText(systemTime)); + } + }, 0, 1000); + submitButton.setChangeAlphaWhenPress(true); + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseHandleStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + //最初始的案卷图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //案卷处理时候上传的图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.punishHandleLayout, R.id.addImageView, R.id.handleLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.punishHandleLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("处罚类型") + .addItem("劝导") + .addItem("警告") + .addItem("处罚") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + punishTypeView.setText(tag); + punishTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.addImageView: + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .create().show(); + break; + case R.id.handleLayout: + OtherUtils.showCaseProcess(this, data.getProcessId()); + break; + case R.id.submitButton: + submitCase();//案卷提交 + break; + default: + break; + } + } + + private void selectPicture() { + PictureSelector.create(this) + .openGallery(PictureMimeType.ofImage()) + .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(2) + .forResult(PictureConfig.CHOOSE_REQUEST); + } + + private void takePicture() { + PictureSelector.create(this) + .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(1) + .forResult(PictureConfig.REQUEST_CAMERA); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + switch (requestCode) { + case PictureConfig.CHOOSE_REQUEST: + List selectList = PictureSelector.obtainMultipleResult(data); + for (LocalMedia media : selectList) { + File file = new File(media.getCompressPath()); + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); + continue; + } + uploadImagePresenter.onReadyRetrofitRequest(file); + } + break; + case PictureConfig.REQUEST_CAMERA: + LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); + break; + default: + break; + } + } + } + + @Override + public void showProgress() { + submitDialog.show(); + } + + @Override + public void hideProgress() { + submitDialog.dismiss(); + } + + @Override + public void obtainUploadAudioResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainUploadImageResult(ActionResultBean resultBean) { +// Log.d(TAG, "obtainUploadResult: " + gson.toJson(resultBean)); + if (resultBean.isSuccess()) { + PictureFileUtils.deleteAllCacheDirFile(this); + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + String url = resultBean.getData(); + int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + if (realPaths.size() == 2) { + addImageView.setVisibility(View.GONE); + } + imageAdapter.setMediaList(realPaths); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, realPaths); + } + }); + //删除按钮点击事件 + imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + imageList.remove(position); + realPaths.remove(position); + imageAdapter.setMediaList(realPaths); + if (realPaths.size() != 2) { + addImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } + } + } + + @Override + public void obtainUploadVideoResult(ActionResultBean resultBean) { + + } + + /** + * 案卷提交 + */ + private void submitCase() { + String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); + return; + } + String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); + return; + } + if (imageAdapter.getItemCount() != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); + return; + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java index 8a1ce31..a16229b 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.threepkg; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.PackageHandledBean; import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.ui.PackageHandledDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -31,7 +33,7 @@ /** * TODO 仅搭建界面,数据还未完全绑定 - * */ + */ public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { private Context context; @@ -129,9 +131,9 @@ handledFragment.adapter.setOnItemClickListener(new PackageHandledAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(handledFragment.context, CaseCheckDetailActivity.class); -// intent.putExtra("id", handledFragment.dataBeans.get(position).getId()); -// handledFragment.startActivity(intent); + Intent intent = new Intent(handledFragment.context, PackageHandledDetailActivity.class); + intent.putExtra("id", handledFragment.dataBeans.get(position).getId()); + handledFragment.startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java index f14ee3a..a4c2584 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.threepkg; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.ui.PackageTodoDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -130,9 +132,9 @@ todoFragment.adapter.setOnItemClickListener(new PackageTodoAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(todoFragment.context, CaseCheckDetailActivity.class); -// intent.putExtra("id", todoFragment.dataBeans.get(position).getId()); -// todoFragment.startActivity(intent); + Intent intent = new Intent(todoFragment.context, PackageTodoDetailActivity.class); + intent.putExtra("id", todoFragment.dataBeans.get(position).getId()); + todoFragment.startActivity(intent); } }); } diff --git a/app/src/main/res/layout/activity_case_handle_detail.xml b/app/src/main/res/layout/activity_case_handle_detail.xml index d1550a1..4cc674c 100644 --- a/app/src/main/res/layout/activity_case_handle_detail.xml +++ b/app/src/main/res/layout/activity_case_handle_detail.xml @@ -164,7 +164,6 @@ android:layout_centerVertical="true" android:layout_marginStart="100dp" android:background="@null" - android:gravity="top" android:hint="请输入申请理由" android:padding="3dp" /> diff --git a/app/src/main/res/layout/activity_case_upload.xml b/app/src/main/res/layout/activity_case_upload.xml index a4240be..fc1a5af 100644 --- a/app/src/main/res/layout/activity_case_upload.xml +++ b/app/src/main/res/layout/activity_case_upload.xml @@ -42,7 +42,6 @@ android:layout_marginStart="100dp" android:layout_marginEnd="10dp" android:background="@null" - android:gravity="top" android:hint="请输入少于50个字的案卷情况描述" android:maxLength="50" android:padding="3dp" /> diff --git a/app/src/main/res/layout/activity_case_upload_quickly.xml b/app/src/main/res/layout/activity_case_upload_quickly.xml index 5237605..7ea1589 100644 --- a/app/src/main/res/layout/activity_case_upload_quickly.xml +++ b/app/src/main/res/layout/activity_case_upload_quickly.xml @@ -41,7 +41,6 @@ android:layout_marginStart="100dp" android:layout_marginEnd="10dp" android:background="@null" - android:gravity="top" android:hint="请输入少于50个字的案卷情况描述" android:maxLength="50" android:padding="3dp" /> diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java index d146412..42652aa 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -2,7 +2,6 @@ import android.annotation.SuppressLint; import android.content.Context; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -10,13 +9,19 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; import org.json.JSONException; import org.json.JSONObject; @@ -26,15 +31,21 @@ import okhttp3.ResponseBody; +@SuppressLint("SetTextI18n") public class PackageHandledAdapter extends RecyclerView.Adapter { private static final String TAG = "PackageHandledAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageHandledAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -62,54 +73,48 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") void bindView(PackageHandledBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); //获取商铺图标 - HttpRequestHelper.doRequest("/shop/merchant/detail", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { String string = resultBean.string(); - /** - * { - * "code":200, - * "data":[], - * "message":"请求成功", - * "success":true - * } - * - * { - * "code":500, - * "data":"", - * "exceptionClazz":"", - * "message":"服务器异常", - * "success":false - * } - * */ JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明请求失败了,用默认图 - leftImageView.setBackgroundResource(R.drawable.ic_package_holder); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); } else { - Log.d(TAG, "detail: " + data); + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } } } catch (IOException | JSONException e) { e.printStackTrace(); @@ -123,20 +128,36 @@ }); //获取商铺处罚记录 - HttpRequestHelper.doRequest("/shop/punish/listByMerchant", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { - String string = resultBean.string(); - JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明没有处罚过 + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); - } else { - Log.d(TAG, "listByMerchant: " + data); + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } - } catch (IOException | JSONException e) { + } catch (IOException e) { e.printStackTrace(); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java index 4671a7a..2f9aa17 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java @@ -9,22 +9,43 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; import java.util.List; +import okhttp3.ResponseBody; + +@SuppressLint("SetTextI18n") public class PackageTodoAdapter extends RecyclerView.Adapter { + private static final String TAG = "PackageTodoAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageTodoAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -52,25 +73,98 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + String string = resultBean.string(); + JSONObject jsonObject = new JSONObject(string); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } + } + } catch (JSONException | IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); + + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java new file mode 100644 index 0000000..086ed9a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java @@ -0,0 +1,86 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; + +import java.util.List; + +@SuppressLint("SetTextI18n") +public class PunishTypeAdapter extends RecyclerView.Adapter { + + private Context context; + private List dataRows; + private PunishTimesBean.DataBean dataBean; + private LayoutInflater layoutInflater; + + PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) { + this.context = context; + this.dataRows = dataRows; + this.dataBean = dataBean; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false); + return new ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) { + String typeName = dataRows.get(position).getPunishTypeName(); + int color, times; + switch (typeName) { + case "劝导": + times = dataBean.getPersuade(); + color = ContextCompat.getColor(context, R.color.persuadeColor); + break; + case "警告": + times = dataBean.getWarn(); + color = ContextCompat.getColor(context, R.color.warnColor); + break; + case "处罚": + times = dataBean.getPunish(); + color = ContextCompat.getColor(context, R.color.punishColor); + break; + default: + times = 0; + color = ContextCompat.getColor(context, R.color.mainThemeColor); + break; + } + if (times == 0) { + holder.punishTypeView.setVisibility(View.GONE); + } else { + holder.punishTypeView.setText(typeName + " x " + times); + holder.punishTypeView.setBackgroundColor(color); + } + } + + @Override + public int getItemCount() { + return dataRows.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private TextView punishTypeView; + + ItemViewHolder(@NonNull View itemView) { + super(itemView); + punishTypeView = itemView.findViewById(R.id.punishTypeView); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java new file mode 100644 index 0000000..df2e5f3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java @@ -0,0 +1,76 @@ +package com.casic.dcms.bean; + +public class PunishTimesBean { + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + /** + * warn : 0 + * punish : 0 + * persuade : 0 + */ + + private int warn; + private int punish; + private int persuade; + + public int getWarn() { + return warn; + } + + public void setWarn(int warn) { + this.warn = warn; + } + + public int getPunish() { + return punish; + } + + public void setPunish(int punish) { + this.punish = punish; + } + + public int getPersuade() { + return persuade; + } + + public void setPersuade(int persuade) { + this.persuade = persuade; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java new file mode 100644 index 0000000..49bcc99 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java @@ -0,0 +1,98 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PunishTypeBean { + private int code; + private String message; + private boolean success; + private List data; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * punishTime : 2021-01-12 09:08:59 + * punishTypeName : 处罚 + * punishImage : images + * punishType : 1 + * punishRemarks : 处罚 + */ + + private String punishTime; + private String punishTypeName; + private String punishImage; + private String punishType; + private String punishRemarks; + + public String getPunishTime() { + return punishTime; + } + + public void setPunishTime(String punishTime) { + this.punishTime = punishTime; + } + + public String getPunishTypeName() { + return punishTypeName; + } + + public void setPunishTypeName(String punishTypeName) { + this.punishTypeName = punishTypeName; + } + + public String getPunishImage() { + return punishImage; + } + + public void setPunishImage(String punishImage) { + this.punishImage = punishImage; + } + + public String getPunishType() { + return punishType; + } + + public void setPunishType(String punishType) { + this.punishType = punishType; + } + + public String getPunishRemarks() { + return punishRemarks; + } + + public void setPunishRemarks(String punishRemarks) { + this.punishRemarks = punishRemarks; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java new file mode 100644 index 0000000..3b57d7b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java @@ -0,0 +1,192 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; + +import java.util.ArrayList; + +import butterknife.BindView; +import butterknife.OnClick; + +public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView { + private static final String TAG = "PackageHandledDetail"; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseHandleStatusView) + TextView caseHandleStatusView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.punishTypeView) + TextView punishTypeView; + @BindView(R.id.punishOpinionView) + TextView punishOpinionView; + @BindView(R.id.punishRecyclerView) + RecyclerView punishRecyclerView; + @BindView(R.id.punishDateView) + TextView punishDateView; + + private Context context = this; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseDetailPresenterImpl caseDetailPresenter; + + @Override + public int initLayoutView() { + return R.layout.activity_package_handled; + } + + @Override + protected String setTitleName() { + return "已办案卷"; + } + + @Override + public void initData() { + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseHandleStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + //最初始的案卷图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //案卷处理时候上传的图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.handleLayout}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.handleLayout: + OtherUtils.showCaseProcess(this, data.getProcessId()); + break; + default: + break; + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java new file mode 100644 index 0000000..9977519 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java @@ -0,0 +1,418 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.FileUtils; +import com.casic.dcms.utils.GlideLoadEngine; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.TimeOrDateUtil; +import com.casic.dcms.utils.ToastHelper; +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.luck.picture.lib.tools.PictureFileUtils; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Timer; +import java.util.TimerTask; + +import butterknife.BindView; +import butterknife.OnClick; + +public class PackageTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, IUploadFileView { + private static final String TAG = "PackageTodoDetail"; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseHandleStatusView) + TextView caseHandleStatusView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.punishTypeView) + TextView punishTypeView; + @BindView(R.id.punishOpinionView) + EditText punishOpinionView; + @BindView(R.id.punishRecyclerView) + RecyclerView punishRecyclerView; + @BindView(R.id.addImageView) + ImageView addImageView; + @BindView(R.id.punishDateView) + TextView punishDateView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private Context context = this; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseDetailPresenterImpl caseDetailPresenter; + private QMUITipDialog submitDialog; + private UploadImagePresenterImpl uploadImagePresenter; + private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private List imageList = new ArrayList<>();//上传到服务器的数据集 + private ImageRecycleViewAdapter imageAdapter; + + @Override + public int initLayoutView() { + return R.layout.activity_package_todo; + } + + @Override + protected String setTitleName() { + return "已办案卷"; + } + + @Override + public void initData() { + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + submitDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create(); + uploadImagePresenter = new UploadImagePresenterImpl(this); + imageAdapter = new ImageRecycleViewAdapter(this); + punishRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + punishRecyclerView.addItemDecoration(new ItemDecorationSpace()); + punishRecyclerView.setAdapter(imageAdapter); + } + + @Override + public void initEvent() { + new Timer().schedule(new TimerTask() { + @Override + public void run() { + String systemTime = TimeOrDateUtil.timestampToCompleteDate(System.currentTimeMillis()); + punishDateView.post(() -> punishDateView.setText(systemTime)); + } + }, 0, 1000); + submitButton.setChangeAlphaWhenPress(true); + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseHandleStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + //最初始的案卷图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //案卷处理时候上传的图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.punishHandleLayout, R.id.addImageView, R.id.handleLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.punishHandleLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("处罚类型") + .addItem("劝导") + .addItem("警告") + .addItem("处罚") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + punishTypeView.setText(tag); + punishTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.addImageView: + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .create().show(); + break; + case R.id.handleLayout: + OtherUtils.showCaseProcess(this, data.getProcessId()); + break; + case R.id.submitButton: + submitCase();//案卷提交 + break; + default: + break; + } + } + + private void selectPicture() { + PictureSelector.create(this) + .openGallery(PictureMimeType.ofImage()) + .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(2) + .forResult(PictureConfig.CHOOSE_REQUEST); + } + + private void takePicture() { + PictureSelector.create(this) + .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(1) + .forResult(PictureConfig.REQUEST_CAMERA); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + switch (requestCode) { + case PictureConfig.CHOOSE_REQUEST: + List selectList = PictureSelector.obtainMultipleResult(data); + for (LocalMedia media : selectList) { + File file = new File(media.getCompressPath()); + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); + continue; + } + uploadImagePresenter.onReadyRetrofitRequest(file); + } + break; + case PictureConfig.REQUEST_CAMERA: + LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); + break; + default: + break; + } + } + } + + @Override + public void showProgress() { + submitDialog.show(); + } + + @Override + public void hideProgress() { + submitDialog.dismiss(); + } + + @Override + public void obtainUploadAudioResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainUploadImageResult(ActionResultBean resultBean) { +// Log.d(TAG, "obtainUploadResult: " + gson.toJson(resultBean)); + if (resultBean.isSuccess()) { + PictureFileUtils.deleteAllCacheDirFile(this); + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + String url = resultBean.getData(); + int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + if (realPaths.size() == 2) { + addImageView.setVisibility(View.GONE); + } + imageAdapter.setMediaList(realPaths); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, realPaths); + } + }); + //删除按钮点击事件 + imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + imageList.remove(position); + realPaths.remove(position); + imageAdapter.setMediaList(realPaths); + if (realPaths.size() != 2) { + addImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } + } + } + + @Override + public void obtainUploadVideoResult(ActionResultBean resultBean) { + + } + + /** + * 案卷提交 + */ + private void submitCase() { + String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); + return; + } + String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); + return; + } + if (imageAdapter.getItemCount() != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); + return; + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java index 8a1ce31..a16229b 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.threepkg; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.PackageHandledBean; import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.ui.PackageHandledDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -31,7 +33,7 @@ /** * TODO 仅搭建界面,数据还未完全绑定 - * */ + */ public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { private Context context; @@ -129,9 +131,9 @@ handledFragment.adapter.setOnItemClickListener(new PackageHandledAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(handledFragment.context, CaseCheckDetailActivity.class); -// intent.putExtra("id", handledFragment.dataBeans.get(position).getId()); -// handledFragment.startActivity(intent); + Intent intent = new Intent(handledFragment.context, PackageHandledDetailActivity.class); + intent.putExtra("id", handledFragment.dataBeans.get(position).getId()); + handledFragment.startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java index f14ee3a..a4c2584 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.threepkg; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.ui.PackageTodoDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -130,9 +132,9 @@ todoFragment.adapter.setOnItemClickListener(new PackageTodoAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(todoFragment.context, CaseCheckDetailActivity.class); -// intent.putExtra("id", todoFragment.dataBeans.get(position).getId()); -// todoFragment.startActivity(intent); + Intent intent = new Intent(todoFragment.context, PackageTodoDetailActivity.class); + intent.putExtra("id", todoFragment.dataBeans.get(position).getId()); + todoFragment.startActivity(intent); } }); } diff --git a/app/src/main/res/layout/activity_case_handle_detail.xml b/app/src/main/res/layout/activity_case_handle_detail.xml index d1550a1..4cc674c 100644 --- a/app/src/main/res/layout/activity_case_handle_detail.xml +++ b/app/src/main/res/layout/activity_case_handle_detail.xml @@ -164,7 +164,6 @@ android:layout_centerVertical="true" android:layout_marginStart="100dp" android:background="@null" - android:gravity="top" android:hint="请输入申请理由" android:padding="3dp" /> diff --git a/app/src/main/res/layout/activity_case_upload.xml b/app/src/main/res/layout/activity_case_upload.xml index a4240be..fc1a5af 100644 --- a/app/src/main/res/layout/activity_case_upload.xml +++ b/app/src/main/res/layout/activity_case_upload.xml @@ -42,7 +42,6 @@ android:layout_marginStart="100dp" android:layout_marginEnd="10dp" android:background="@null" - android:gravity="top" android:hint="请输入少于50个字的案卷情况描述" android:maxLength="50" android:padding="3dp" /> diff --git a/app/src/main/res/layout/activity_case_upload_quickly.xml b/app/src/main/res/layout/activity_case_upload_quickly.xml index 5237605..7ea1589 100644 --- a/app/src/main/res/layout/activity_case_upload_quickly.xml +++ b/app/src/main/res/layout/activity_case_upload_quickly.xml @@ -41,7 +41,6 @@ android:layout_marginStart="100dp" android:layout_marginEnd="10dp" android:background="@null" - android:gravity="top" android:hint="请输入少于50个字的案卷情况描述" android:maxLength="50" android:padding="3dp" /> diff --git a/app/src/main/res/layout/activity_package.xml b/app/src/main/res/layout/activity_package.xml index c9e2b9a..48d3cfe 100644 --- a/app/src/main/res/layout/activity_package.xml +++ b/app/src/main/res/layout/activity_package.xml @@ -107,7 +107,6 @@ android:layout_marginStart="100dp" android:layout_marginEnd="10dp" android:background="@null" - android:gravity="top" android:hint="请输入少于50个字的案卷情况描述" android:maxLength="50" android:padding="3dp" /> diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java index d146412..42652aa 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -2,7 +2,6 @@ import android.annotation.SuppressLint; import android.content.Context; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -10,13 +9,19 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; import org.json.JSONException; import org.json.JSONObject; @@ -26,15 +31,21 @@ import okhttp3.ResponseBody; +@SuppressLint("SetTextI18n") public class PackageHandledAdapter extends RecyclerView.Adapter { private static final String TAG = "PackageHandledAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageHandledAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -62,54 +73,48 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") void bindView(PackageHandledBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); //获取商铺图标 - HttpRequestHelper.doRequest("/shop/merchant/detail", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { String string = resultBean.string(); - /** - * { - * "code":200, - * "data":[], - * "message":"请求成功", - * "success":true - * } - * - * { - * "code":500, - * "data":"", - * "exceptionClazz":"", - * "message":"服务器异常", - * "success":false - * } - * */ JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明请求失败了,用默认图 - leftImageView.setBackgroundResource(R.drawable.ic_package_holder); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); } else { - Log.d(TAG, "detail: " + data); + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } } } catch (IOException | JSONException e) { e.printStackTrace(); @@ -123,20 +128,36 @@ }); //获取商铺处罚记录 - HttpRequestHelper.doRequest("/shop/punish/listByMerchant", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { - String string = resultBean.string(); - JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明没有处罚过 + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); - } else { - Log.d(TAG, "listByMerchant: " + data); + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } - } catch (IOException | JSONException e) { + } catch (IOException e) { e.printStackTrace(); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java index 4671a7a..2f9aa17 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java @@ -9,22 +9,43 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; import java.util.List; +import okhttp3.ResponseBody; + +@SuppressLint("SetTextI18n") public class PackageTodoAdapter extends RecyclerView.Adapter { + private static final String TAG = "PackageTodoAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageTodoAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -52,25 +73,98 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + String string = resultBean.string(); + JSONObject jsonObject = new JSONObject(string); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } + } + } catch (JSONException | IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); + + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java new file mode 100644 index 0000000..086ed9a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java @@ -0,0 +1,86 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; + +import java.util.List; + +@SuppressLint("SetTextI18n") +public class PunishTypeAdapter extends RecyclerView.Adapter { + + private Context context; + private List dataRows; + private PunishTimesBean.DataBean dataBean; + private LayoutInflater layoutInflater; + + PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) { + this.context = context; + this.dataRows = dataRows; + this.dataBean = dataBean; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false); + return new ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) { + String typeName = dataRows.get(position).getPunishTypeName(); + int color, times; + switch (typeName) { + case "劝导": + times = dataBean.getPersuade(); + color = ContextCompat.getColor(context, R.color.persuadeColor); + break; + case "警告": + times = dataBean.getWarn(); + color = ContextCompat.getColor(context, R.color.warnColor); + break; + case "处罚": + times = dataBean.getPunish(); + color = ContextCompat.getColor(context, R.color.punishColor); + break; + default: + times = 0; + color = ContextCompat.getColor(context, R.color.mainThemeColor); + break; + } + if (times == 0) { + holder.punishTypeView.setVisibility(View.GONE); + } else { + holder.punishTypeView.setText(typeName + " x " + times); + holder.punishTypeView.setBackgroundColor(color); + } + } + + @Override + public int getItemCount() { + return dataRows.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private TextView punishTypeView; + + ItemViewHolder(@NonNull View itemView) { + super(itemView); + punishTypeView = itemView.findViewById(R.id.punishTypeView); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java new file mode 100644 index 0000000..df2e5f3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java @@ -0,0 +1,76 @@ +package com.casic.dcms.bean; + +public class PunishTimesBean { + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + /** + * warn : 0 + * punish : 0 + * persuade : 0 + */ + + private int warn; + private int punish; + private int persuade; + + public int getWarn() { + return warn; + } + + public void setWarn(int warn) { + this.warn = warn; + } + + public int getPunish() { + return punish; + } + + public void setPunish(int punish) { + this.punish = punish; + } + + public int getPersuade() { + return persuade; + } + + public void setPersuade(int persuade) { + this.persuade = persuade; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java new file mode 100644 index 0000000..49bcc99 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java @@ -0,0 +1,98 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PunishTypeBean { + private int code; + private String message; + private boolean success; + private List data; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * punishTime : 2021-01-12 09:08:59 + * punishTypeName : 处罚 + * punishImage : images + * punishType : 1 + * punishRemarks : 处罚 + */ + + private String punishTime; + private String punishTypeName; + private String punishImage; + private String punishType; + private String punishRemarks; + + public String getPunishTime() { + return punishTime; + } + + public void setPunishTime(String punishTime) { + this.punishTime = punishTime; + } + + public String getPunishTypeName() { + return punishTypeName; + } + + public void setPunishTypeName(String punishTypeName) { + this.punishTypeName = punishTypeName; + } + + public String getPunishImage() { + return punishImage; + } + + public void setPunishImage(String punishImage) { + this.punishImage = punishImage; + } + + public String getPunishType() { + return punishType; + } + + public void setPunishType(String punishType) { + this.punishType = punishType; + } + + public String getPunishRemarks() { + return punishRemarks; + } + + public void setPunishRemarks(String punishRemarks) { + this.punishRemarks = punishRemarks; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java new file mode 100644 index 0000000..3b57d7b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java @@ -0,0 +1,192 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; + +import java.util.ArrayList; + +import butterknife.BindView; +import butterknife.OnClick; + +public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView { + private static final String TAG = "PackageHandledDetail"; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseHandleStatusView) + TextView caseHandleStatusView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.punishTypeView) + TextView punishTypeView; + @BindView(R.id.punishOpinionView) + TextView punishOpinionView; + @BindView(R.id.punishRecyclerView) + RecyclerView punishRecyclerView; + @BindView(R.id.punishDateView) + TextView punishDateView; + + private Context context = this; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseDetailPresenterImpl caseDetailPresenter; + + @Override + public int initLayoutView() { + return R.layout.activity_package_handled; + } + + @Override + protected String setTitleName() { + return "已办案卷"; + } + + @Override + public void initData() { + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseHandleStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + //最初始的案卷图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //案卷处理时候上传的图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.handleLayout}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.handleLayout: + OtherUtils.showCaseProcess(this, data.getProcessId()); + break; + default: + break; + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java new file mode 100644 index 0000000..9977519 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java @@ -0,0 +1,418 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.FileUtils; +import com.casic.dcms.utils.GlideLoadEngine; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.TimeOrDateUtil; +import com.casic.dcms.utils.ToastHelper; +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.luck.picture.lib.tools.PictureFileUtils; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Timer; +import java.util.TimerTask; + +import butterknife.BindView; +import butterknife.OnClick; + +public class PackageTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, IUploadFileView { + private static final String TAG = "PackageTodoDetail"; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseHandleStatusView) + TextView caseHandleStatusView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.punishTypeView) + TextView punishTypeView; + @BindView(R.id.punishOpinionView) + EditText punishOpinionView; + @BindView(R.id.punishRecyclerView) + RecyclerView punishRecyclerView; + @BindView(R.id.addImageView) + ImageView addImageView; + @BindView(R.id.punishDateView) + TextView punishDateView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private Context context = this; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseDetailPresenterImpl caseDetailPresenter; + private QMUITipDialog submitDialog; + private UploadImagePresenterImpl uploadImagePresenter; + private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private List imageList = new ArrayList<>();//上传到服务器的数据集 + private ImageRecycleViewAdapter imageAdapter; + + @Override + public int initLayoutView() { + return R.layout.activity_package_todo; + } + + @Override + protected String setTitleName() { + return "已办案卷"; + } + + @Override + public void initData() { + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + submitDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create(); + uploadImagePresenter = new UploadImagePresenterImpl(this); + imageAdapter = new ImageRecycleViewAdapter(this); + punishRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + punishRecyclerView.addItemDecoration(new ItemDecorationSpace()); + punishRecyclerView.setAdapter(imageAdapter); + } + + @Override + public void initEvent() { + new Timer().schedule(new TimerTask() { + @Override + public void run() { + String systemTime = TimeOrDateUtil.timestampToCompleteDate(System.currentTimeMillis()); + punishDateView.post(() -> punishDateView.setText(systemTime)); + } + }, 0, 1000); + submitButton.setChangeAlphaWhenPress(true); + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseHandleStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + //最初始的案卷图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //案卷处理时候上传的图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.punishHandleLayout, R.id.addImageView, R.id.handleLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.punishHandleLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("处罚类型") + .addItem("劝导") + .addItem("警告") + .addItem("处罚") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + punishTypeView.setText(tag); + punishTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.addImageView: + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .create().show(); + break; + case R.id.handleLayout: + OtherUtils.showCaseProcess(this, data.getProcessId()); + break; + case R.id.submitButton: + submitCase();//案卷提交 + break; + default: + break; + } + } + + private void selectPicture() { + PictureSelector.create(this) + .openGallery(PictureMimeType.ofImage()) + .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(2) + .forResult(PictureConfig.CHOOSE_REQUEST); + } + + private void takePicture() { + PictureSelector.create(this) + .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(1) + .forResult(PictureConfig.REQUEST_CAMERA); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + switch (requestCode) { + case PictureConfig.CHOOSE_REQUEST: + List selectList = PictureSelector.obtainMultipleResult(data); + for (LocalMedia media : selectList) { + File file = new File(media.getCompressPath()); + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); + continue; + } + uploadImagePresenter.onReadyRetrofitRequest(file); + } + break; + case PictureConfig.REQUEST_CAMERA: + LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); + break; + default: + break; + } + } + } + + @Override + public void showProgress() { + submitDialog.show(); + } + + @Override + public void hideProgress() { + submitDialog.dismiss(); + } + + @Override + public void obtainUploadAudioResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainUploadImageResult(ActionResultBean resultBean) { +// Log.d(TAG, "obtainUploadResult: " + gson.toJson(resultBean)); + if (resultBean.isSuccess()) { + PictureFileUtils.deleteAllCacheDirFile(this); + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + String url = resultBean.getData(); + int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + if (realPaths.size() == 2) { + addImageView.setVisibility(View.GONE); + } + imageAdapter.setMediaList(realPaths); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, realPaths); + } + }); + //删除按钮点击事件 + imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + imageList.remove(position); + realPaths.remove(position); + imageAdapter.setMediaList(realPaths); + if (realPaths.size() != 2) { + addImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } + } + } + + @Override + public void obtainUploadVideoResult(ActionResultBean resultBean) { + + } + + /** + * 案卷提交 + */ + private void submitCase() { + String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); + return; + } + String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); + return; + } + if (imageAdapter.getItemCount() != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); + return; + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java index 8a1ce31..a16229b 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.threepkg; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.PackageHandledBean; import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.ui.PackageHandledDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -31,7 +33,7 @@ /** * TODO 仅搭建界面,数据还未完全绑定 - * */ + */ public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { private Context context; @@ -129,9 +131,9 @@ handledFragment.adapter.setOnItemClickListener(new PackageHandledAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(handledFragment.context, CaseCheckDetailActivity.class); -// intent.putExtra("id", handledFragment.dataBeans.get(position).getId()); -// handledFragment.startActivity(intent); + Intent intent = new Intent(handledFragment.context, PackageHandledDetailActivity.class); + intent.putExtra("id", handledFragment.dataBeans.get(position).getId()); + handledFragment.startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java index f14ee3a..a4c2584 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.threepkg; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.ui.PackageTodoDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -130,9 +132,9 @@ todoFragment.adapter.setOnItemClickListener(new PackageTodoAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(todoFragment.context, CaseCheckDetailActivity.class); -// intent.putExtra("id", todoFragment.dataBeans.get(position).getId()); -// todoFragment.startActivity(intent); + Intent intent = new Intent(todoFragment.context, PackageTodoDetailActivity.class); + intent.putExtra("id", todoFragment.dataBeans.get(position).getId()); + todoFragment.startActivity(intent); } }); } diff --git a/app/src/main/res/layout/activity_case_handle_detail.xml b/app/src/main/res/layout/activity_case_handle_detail.xml index d1550a1..4cc674c 100644 --- a/app/src/main/res/layout/activity_case_handle_detail.xml +++ b/app/src/main/res/layout/activity_case_handle_detail.xml @@ -164,7 +164,6 @@ android:layout_centerVertical="true" android:layout_marginStart="100dp" android:background="@null" - android:gravity="top" android:hint="请输入申请理由" android:padding="3dp" /> diff --git a/app/src/main/res/layout/activity_case_upload.xml b/app/src/main/res/layout/activity_case_upload.xml index a4240be..fc1a5af 100644 --- a/app/src/main/res/layout/activity_case_upload.xml +++ b/app/src/main/res/layout/activity_case_upload.xml @@ -42,7 +42,6 @@ android:layout_marginStart="100dp" android:layout_marginEnd="10dp" android:background="@null" - android:gravity="top" android:hint="请输入少于50个字的案卷情况描述" android:maxLength="50" android:padding="3dp" /> diff --git a/app/src/main/res/layout/activity_case_upload_quickly.xml b/app/src/main/res/layout/activity_case_upload_quickly.xml index 5237605..7ea1589 100644 --- a/app/src/main/res/layout/activity_case_upload_quickly.xml +++ b/app/src/main/res/layout/activity_case_upload_quickly.xml @@ -41,7 +41,6 @@ android:layout_marginStart="100dp" android:layout_marginEnd="10dp" android:background="@null" - android:gravity="top" android:hint="请输入少于50个字的案卷情况描述" android:maxLength="50" android:padding="3dp" /> diff --git a/app/src/main/res/layout/activity_package.xml b/app/src/main/res/layout/activity_package.xml index c9e2b9a..48d3cfe 100644 --- a/app/src/main/res/layout/activity_package.xml +++ b/app/src/main/res/layout/activity_package.xml @@ -107,7 +107,6 @@ android:layout_marginStart="100dp" android:layout_marginEnd="10dp" android:background="@null" - android:gravity="top" android:hint="请输入少于50个字的案卷情况描述" android:maxLength="50" android:padding="3dp" /> diff --git a/app/src/main/res/layout/activity_package_todo.xml b/app/src/main/res/layout/activity_package_todo.xml index 8ac9e85..daccb58 100644 --- a/app/src/main/res/layout/activity_package_todo.xml +++ b/app/src/main/res/layout/activity_package_todo.xml @@ -1,5 +1,6 @@ @@ -18,9 +19,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + style="@style/itemLayoutStyle"> + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java index d146412..42652aa 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -2,7 +2,6 @@ import android.annotation.SuppressLint; import android.content.Context; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -10,13 +9,19 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; import org.json.JSONException; import org.json.JSONObject; @@ -26,15 +31,21 @@ import okhttp3.ResponseBody; +@SuppressLint("SetTextI18n") public class PackageHandledAdapter extends RecyclerView.Adapter { private static final String TAG = "PackageHandledAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageHandledAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -62,54 +73,48 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") void bindView(PackageHandledBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); //获取商铺图标 - HttpRequestHelper.doRequest("/shop/merchant/detail", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { String string = resultBean.string(); - /** - * { - * "code":200, - * "data":[], - * "message":"请求成功", - * "success":true - * } - * - * { - * "code":500, - * "data":"", - * "exceptionClazz":"", - * "message":"服务器异常", - * "success":false - * } - * */ JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明请求失败了,用默认图 - leftImageView.setBackgroundResource(R.drawable.ic_package_holder); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); } else { - Log.d(TAG, "detail: " + data); + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } } } catch (IOException | JSONException e) { e.printStackTrace(); @@ -123,20 +128,36 @@ }); //获取商铺处罚记录 - HttpRequestHelper.doRequest("/shop/punish/listByMerchant", rowsBean.getShopId(), new IHttpRequestListener() { + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { @Override public void onSuccess(ResponseBody resultBean) { try { - String string = resultBean.string(); - JSONObject jsonObject = new JSONObject(string); - Object data = jsonObject.get("data"); - if (data instanceof String) { - //如果data是字符串,说明没有处罚过 + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); - } else { - Log.d(TAG, "listByMerchant: " + data); + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } - } catch (IOException | JSONException e) { + } catch (IOException e) { e.printStackTrace(); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java index 4671a7a..2f9aa17 100644 --- a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java @@ -9,22 +9,43 @@ import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.bumptech.glide.Glide; import com.casic.dcms.R; import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.HttpRequestHelper; import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; +import com.google.gson.Gson; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; import java.util.List; +import okhttp3.ResponseBody; + +@SuppressLint("SetTextI18n") public class PackageTodoAdapter extends RecyclerView.Adapter { + private static final String TAG = "PackageTodoAdapter"; + private Context context; private List dataBeans; private LayoutInflater layoutInflater; + private PunishTypeAdapter adapter; + private Gson gson; public PackageTodoAdapter(Context context, List dataRows) { + this.context = context; this.dataBeans = dataRows; layoutInflater = LayoutInflater.from(context); + gson = new Gson(); } @NonNull @@ -52,25 +73,98 @@ return dataBeans.size(); } - static class ItemViewHolder extends RecyclerView.ViewHolder { + class ItemViewHolder extends RecyclerView.ViewHolder { private ImageView leftImageView; private TextView caseTitleView; private TextView caseDateView; -// private TextView caseTimeView; + private RecyclerView punishRecyclerView; ItemViewHolder(@NonNull View itemView) { super(itemView); leftImageView = itemView.findViewById(R.id.leftImageView); caseTitleView = itemView.findViewById(R.id.caseTitleView); caseDateView = itemView.findViewById(R.id.caseDateView); -// caseTimeView = itemView.findViewById(R.id.caseTimeView); + punishRecyclerView = itemView.findViewById(R.id.punishRecyclerView); } - @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + HttpRequestHelper.doRequest(Constant.SHOP_DETAIL, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + String string = resultBean.string(); + JSONObject jsonObject = new JSONObject(string); + int code = jsonObject.getInt("code"); + if (code == 500) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject data = jsonObject.getJSONObject("data"); + if (data.length() == 0) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + JSONObject merchantInfo = data.getJSONObject("merchantInfo"); + String images = merchantInfo.getString("images"); + if (images.equals("")) { + leftImageView.setBackgroundResource(R.drawable.ic_load_error); + } else { + String img = images.split(",")[0]; + Glide.with(context).load(StringHelper.appendCompleteURL(img)).into(leftImageView); + } + } + } + } catch (JSONException | IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_LIST, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTypeBean punishTypeBean = gson.fromJson(resultBean.string(), PunishTypeBean.class); + if (punishTypeBean.getData().size() != 0) { + //获取商铺处罚次数 + HttpRequestHelper.doRequest(Constant.SHOP_PUNISH_TYPE, rowsBean.getShopId(), new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + try { + PunishTimesBean punishTimesBean = gson.fromJson(resultBean.string(), PunishTimesBean.class); + + adapter = new PunishTypeAdapter(context, punishTypeBean.getData(), punishTimesBean.getData()); + LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + punishRecyclerView.setLayoutManager(layoutManager); + punishRecyclerView.setAdapter(adapter); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); } } diff --git a/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java new file mode 100644 index 0000000..086ed9a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PunishTypeAdapter.java @@ -0,0 +1,86 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PunishTimesBean; +import com.casic.dcms.bean.PunishTypeBean; + +import java.util.List; + +@SuppressLint("SetTextI18n") +public class PunishTypeAdapter extends RecyclerView.Adapter { + + private Context context; + private List dataRows; + private PunishTimesBean.DataBean dataBean; + private LayoutInflater layoutInflater; + + PunishTypeAdapter(Context context, List dataRows, PunishTimesBean.DataBean dataBean) { + this.context = context; + this.dataRows = dataRows; + this.dataBean = dataBean; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_punish_recycleview, parent, false); + return new ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) { + String typeName = dataRows.get(position).getPunishTypeName(); + int color, times; + switch (typeName) { + case "劝导": + times = dataBean.getPersuade(); + color = ContextCompat.getColor(context, R.color.persuadeColor); + break; + case "警告": + times = dataBean.getWarn(); + color = ContextCompat.getColor(context, R.color.warnColor); + break; + case "处罚": + times = dataBean.getPunish(); + color = ContextCompat.getColor(context, R.color.punishColor); + break; + default: + times = 0; + color = ContextCompat.getColor(context, R.color.mainThemeColor); + break; + } + if (times == 0) { + holder.punishTypeView.setVisibility(View.GONE); + } else { + holder.punishTypeView.setText(typeName + " x " + times); + holder.punishTypeView.setBackgroundColor(color); + } + } + + @Override + public int getItemCount() { + return dataRows.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private TextView punishTypeView; + + ItemViewHolder(@NonNull View itemView) { + super(itemView); + punishTypeView = itemView.findViewById(R.id.punishTypeView); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java new file mode 100644 index 0000000..df2e5f3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTimesBean.java @@ -0,0 +1,76 @@ +package com.casic.dcms.bean; + +public class PunishTimesBean { + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + /** + * warn : 0 + * punish : 0 + * persuade : 0 + */ + + private int warn; + private int punish; + private int persuade; + + public int getWarn() { + return warn; + } + + public void setWarn(int warn) { + this.warn = warn; + } + + public int getPunish() { + return punish; + } + + public void setPunish(int punish) { + this.punish = punish; + } + + public int getPersuade() { + return persuade; + } + + public void setPersuade(int persuade) { + this.persuade = persuade; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java b/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java new file mode 100644 index 0000000..49bcc99 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PunishTypeBean.java @@ -0,0 +1,98 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PunishTypeBean { + private int code; + private String message; + private boolean success; + private List data; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * punishTime : 2021-01-12 09:08:59 + * punishTypeName : 处罚 + * punishImage : images + * punishType : 1 + * punishRemarks : 处罚 + */ + + private String punishTime; + private String punishTypeName; + private String punishImage; + private String punishType; + private String punishRemarks; + + public String getPunishTime() { + return punishTime; + } + + public void setPunishTime(String punishTime) { + this.punishTime = punishTime; + } + + public String getPunishTypeName() { + return punishTypeName; + } + + public void setPunishTypeName(String punishTypeName) { + this.punishTypeName = punishTypeName; + } + + public String getPunishImage() { + return punishImage; + } + + public void setPunishImage(String punishImage) { + this.punishImage = punishImage; + } + + public String getPunishType() { + return punishType; + } + + public void setPunishType(String punishType) { + this.punishType = punishType; + } + + public String getPunishRemarks() { + return punishRemarks; + } + + public void setPunishRemarks(String punishRemarks) { + this.punishRemarks = punishRemarks; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java new file mode 100644 index 0000000..3b57d7b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java @@ -0,0 +1,192 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; + +import java.util.ArrayList; + +import butterknife.BindView; +import butterknife.OnClick; + +public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView { + private static final String TAG = "PackageHandledDetail"; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseHandleStatusView) + TextView caseHandleStatusView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.punishTypeView) + TextView punishTypeView; + @BindView(R.id.punishOpinionView) + TextView punishOpinionView; + @BindView(R.id.punishRecyclerView) + RecyclerView punishRecyclerView; + @BindView(R.id.punishDateView) + TextView punishDateView; + + private Context context = this; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseDetailPresenterImpl caseDetailPresenter; + + @Override + public int initLayoutView() { + return R.layout.activity_package_handled; + } + + @Override + protected String setTitleName() { + return "已办案卷"; + } + + @Override + public void initData() { + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseHandleStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + //最初始的案卷图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //案卷处理时候上传的图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.handleLayout}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.handleLayout: + OtherUtils.showCaseProcess(this, data.getProcessId()); + break; + default: + break; + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java new file mode 100644 index 0000000..9977519 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java @@ -0,0 +1,418 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseCaseActivity; +import com.casic.dcms.bean.ActionResultBean; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.FileUtils; +import com.casic.dcms.utils.GlideLoadEngine; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.TimeOrDateUtil; +import com.casic.dcms.utils.ToastHelper; +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.luck.picture.lib.tools.PictureFileUtils; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Timer; +import java.util.TimerTask; + +import butterknife.BindView; +import butterknife.OnClick; + +public class PackageTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, IUploadFileView { + private static final String TAG = "PackageTodoDetail"; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseHandleStatusView) + TextView caseHandleStatusView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.punishTypeView) + TextView punishTypeView; + @BindView(R.id.punishOpinionView) + EditText punishOpinionView; + @BindView(R.id.punishRecyclerView) + RecyclerView punishRecyclerView; + @BindView(R.id.addImageView) + ImageView addImageView; + @BindView(R.id.punishDateView) + TextView punishDateView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private Context context = this; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private CaseDetailPresenterImpl caseDetailPresenter; + private QMUITipDialog submitDialog; + private UploadImagePresenterImpl uploadImagePresenter; + private ArrayList realPaths = new ArrayList<>();//真是图片路径 + private List imageList = new ArrayList<>();//上传到服务器的数据集 + private ImageRecycleViewAdapter imageAdapter; + + @Override + public int initLayoutView() { + return R.layout.activity_package_todo; + } + + @Override + protected String setTitleName() { + return "已办案卷"; + } + + @Override + public void initData() { + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + submitDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("处理中,请稍后") + .create(); + uploadImagePresenter = new UploadImagePresenterImpl(this); + imageAdapter = new ImageRecycleViewAdapter(this); + punishRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + punishRecyclerView.addItemDecoration(new ItemDecorationSpace()); + punishRecyclerView.setAdapter(imageAdapter); + } + + @Override + public void initEvent() { + new Timer().schedule(new TimerTask() { + @Override + public void run() { + String systemTime = TimeOrDateUtil.timestampToCompleteDate(System.currentTimeMillis()); + punishDateView.post(() -> punishDateView.setText(systemTime)); + } + }, 0, 1000); + submitButton.setChangeAlphaWhenPress(true); + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseHandleStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + //最初始的案卷图片 + String verifyImages = data.getFileIdVerify(); + if (!TextUtils.isEmpty(verifyImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = verifyImages.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //案卷处理时候上传的图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.punishHandleLayout, R.id.addImageView, R.id.handleLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.punishHandleLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("处罚类型") + .addItem("劝导") + .addItem("警告") + .addItem("处罚") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + punishTypeView.setText(tag); + punishTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.addImageView: + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .create().show(); + break; + case R.id.handleLayout: + OtherUtils.showCaseProcess(this, data.getProcessId()); + break; + case R.id.submitButton: + submitCase();//案卷提交 + break; + default: + break; + } + } + + private void selectPicture() { + PictureSelector.create(this) + .openGallery(PictureMimeType.ofImage()) + .isWeChatStyle(true) + .isCamera(false) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(2) + .forResult(PictureConfig.CHOOSE_REQUEST); + } + + private void takePicture() { + PictureSelector.create(this) + .openCamera(PictureMimeType.ofImage()) + .isCompress(true) + .compressQuality(90) + .compressSavePath(FileUtils.getImageCompressPath()) + .imageEngine(GlideLoadEngine.createGlideEngine()) + .maxSelectNum(1) + .forResult(PictureConfig.REQUEST_CAMERA); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + switch (requestCode) { + case PictureConfig.CHOOSE_REQUEST: + List selectList = PictureSelector.obtainMultipleResult(data); + for (LocalMedia media : selectList) { + File file = new File(media.getCompressPath()); + if (file.length() <= Constant.IMAGE_MINUS_SIZE) { + ToastHelper.showToast("图片尺寸太小,请重新选择", ToastHelper.ERROR); + continue; + } + uploadImagePresenter.onReadyRetrofitRequest(file); + } + break; + case PictureConfig.REQUEST_CAMERA: + LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); + uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getCompressPath())); + break; + default: + break; + } + } + } + + @Override + public void showProgress() { + submitDialog.show(); + } + + @Override + public void hideProgress() { + submitDialog.dismiss(); + } + + @Override + public void obtainUploadAudioResult(ActionResultBean resultBean) { + + } + + @Override + public void obtainUploadImageResult(ActionResultBean resultBean) { +// Log.d(TAG, "obtainUploadResult: " + gson.toJson(resultBean)); + if (resultBean.isSuccess()) { + PictureFileUtils.deleteAllCacheDirFile(this); + /** + * 系统路径static拼接图片返回路径 + * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg + */ + //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg + String url = resultBean.getData(); + int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + imageList.add(url); + realPaths.add(StringHelper.appendCompleteURL(url)); + if (realPaths.size() == 2) { + addImageView.setVisibility(View.GONE); + } + imageAdapter.setMediaList(realPaths); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, realPaths); + } + }); + //删除按钮点击事件 + imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + imageList.remove(position); + realPaths.remove(position); + imageAdapter.setMediaList(realPaths); + if (realPaths.size() != 2) { + addImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } + } + } + + @Override + public void obtainUploadVideoResult(ActionResultBean resultBean) { + + } + + /** + * 案卷提交 + */ + private void submitCase() { + String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); + return; + } + String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); + return; + } + if (imageAdapter.getItemCount() != 2) { + ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); + return; + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (uploadImagePresenter != null) { + uploadImagePresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java index 8a1ce31..a16229b 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.threepkg; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.PackageHandledBean; import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.ui.PackageHandledDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -31,7 +33,7 @@ /** * TODO 仅搭建界面,数据还未完全绑定 - * */ + */ public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { private Context context; @@ -129,9 +131,9 @@ handledFragment.adapter.setOnItemClickListener(new PackageHandledAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(handledFragment.context, CaseCheckDetailActivity.class); -// intent.putExtra("id", handledFragment.dataBeans.get(position).getId()); -// handledFragment.startActivity(intent); + Intent intent = new Intent(handledFragment.context, PackageHandledDetailActivity.class); + intent.putExtra("id", handledFragment.dataBeans.get(position).getId()); + handledFragment.startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java index f14ee3a..a4c2584 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui.fragment.threepkg; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -15,6 +16,7 @@ import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.ui.PackageTodoDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -130,9 +132,9 @@ todoFragment.adapter.setOnItemClickListener(new PackageTodoAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(todoFragment.context, CaseCheckDetailActivity.class); -// intent.putExtra("id", todoFragment.dataBeans.get(position).getId()); -// todoFragment.startActivity(intent); + Intent intent = new Intent(todoFragment.context, PackageTodoDetailActivity.class); + intent.putExtra("id", todoFragment.dataBeans.get(position).getId()); + todoFragment.startActivity(intent); } }); } diff --git a/app/src/main/res/layout/activity_case_handle_detail.xml b/app/src/main/res/layout/activity_case_handle_detail.xml index d1550a1..4cc674c 100644 --- a/app/src/main/res/layout/activity_case_handle_detail.xml +++ b/app/src/main/res/layout/activity_case_handle_detail.xml @@ -164,7 +164,6 @@ android:layout_centerVertical="true" android:layout_marginStart="100dp" android:background="@null" - android:gravity="top" android:hint="请输入申请理由" android:padding="3dp" /> diff --git a/app/src/main/res/layout/activity_case_upload.xml b/app/src/main/res/layout/activity_case_upload.xml index a4240be..fc1a5af 100644 --- a/app/src/main/res/layout/activity_case_upload.xml +++ b/app/src/main/res/layout/activity_case_upload.xml @@ -42,7 +42,6 @@ android:layout_marginStart="100dp" android:layout_marginEnd="10dp" android:background="@null" - android:gravity="top" android:hint="请输入少于50个字的案卷情况描述" android:maxLength="50" android:padding="3dp" /> diff --git a/app/src/main/res/layout/activity_case_upload_quickly.xml b/app/src/main/res/layout/activity_case_upload_quickly.xml index 5237605..7ea1589 100644 --- a/app/src/main/res/layout/activity_case_upload_quickly.xml +++ b/app/src/main/res/layout/activity_case_upload_quickly.xml @@ -41,7 +41,6 @@ android:layout_marginStart="100dp" android:layout_marginEnd="10dp" android:background="@null" - android:gravity="top" android:hint="请输入少于50个字的案卷情况描述" android:maxLength="50" android:padding="3dp" /> diff --git a/app/src/main/res/layout/activity_package.xml b/app/src/main/res/layout/activity_package.xml index c9e2b9a..48d3cfe 100644 --- a/app/src/main/res/layout/activity_package.xml +++ b/app/src/main/res/layout/activity_package.xml @@ -107,7 +107,6 @@ android:layout_marginStart="100dp" android:layout_marginEnd="10dp" android:background="@null" - android:gravity="top" android:hint="请输入少于50个字的案卷情况描述" android:maxLength="50" android:padding="3dp" /> diff --git a/app/src/main/res/layout/activity_package_todo.xml b/app/src/main/res/layout/activity_package_todo.xml index 8ac9e85..daccb58 100644 --- a/app/src/main/res/layout/activity_package_todo.xml +++ b/app/src/main/res/layout/activity_package_todo.xml @@ -1,5 +1,6 @@ @@ -18,9 +19,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + style="@style/itemLayoutStyle"> + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index cedf5c1..db7c01f 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,6 @@ maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } google() jcenter() - } dependencies { classpath 'com.android.tools.build:gradle:3.6.3' @@ -26,7 +25,6 @@ maven { url "http://mvn.gt.getui.com/nexus/content/repositories/releases/" } - jcenter() //依赖库 maven { url 'https://jitpack.io' } mavenCentral() @@ -34,6 +32,7 @@ maven { url 'https://esri.jfrog.io/artifactory/arcgis' } + jcenter() } }